เช เชฎเซ เช เชฎเชพเชฐเชพ เชเชพเชฐเซเชฏเชฎเชพเช เชชเซเชฒเซเชเชซเซเชฐเซเชฎเชจเซ เชธเชเซเชฐเชฟเชฏเชชเชฃเซ เชเชชเชฏเซเช เชเชฐเซเช เชเซเช เชธเซเชจเชพเชฐเชเซเชฏเซเชฌ เชเชเซเช เชธเซเชคเชฐ เชชเชฐ เชเซเชก เชเซเชฃเชตเชคเซเชคเชพ เชเชพเชณเชตเชตเชพ เชฎเชพเชเซ. เชฎเชพเช เชฒเชเซเชฒเชพ เชชเซเชฐเซเชเซเชเซเชเซเชธเชฎเชพเชเชฅเซ เชเชเชจเซ เชเชเซเชเซเชค เชเชฐเชคเซ เชตเชเชคเซ VueJs+Typescript, เชธเชฎเชธเซเชฏเชพเช เชเชญเซ เชฅเช. เชคเซเชฅเซ, เชนเซเช เชคเชฎเชจเซ เชตเชงเซ เชตเชฟเชเชคเชตเชพเชฐ เชเชฃเชพเชตเชตเชพ เชฎเชพเชเชเซ เชเซเช เชเซ เช เชฎเซ เชคเซเชฎเชจเซ เชเซเชตเซ เชฐเซเชคเซ เชนเชฒ เชเชฐเชตเชพเชฎเชพเช เชธเชซเชณ เชฅเชฏเชพ.
เช เชฒเซเชเชฎเชพเช เชเชชเชฃเซ เชตเชพเชค เชเชฐเซเชถเซเช, เชเซเชฎ เชฎเซเช เชเชชเชฐ เชฒเชเซเชฏเซเช เชเซ, SonarQube เชชเซเชฒเซเชเชซเซเชฐเซเชฎ เชตเชฟเชถเซ. เชเช เชจเชพเชจเซ เชธเชฟเชฆเซเชงเชพเชเชค - เชธเชพเชฎเชพเชจเซเชฏ เชฐเซเชคเซ เชคเซ เชถเซเช เชเซ, เชเซเช เชคเซเชจเชพ เชตเชฟเชถเซ เชชเซเชฐเชฅเชฎ เชตเชเชค เชธเชพเชเชญเชณเซ เชเซ เชคเซเชฎเชจเชพ เชฎเชพเชเซ:
เชธเซเชจเชพเชฐเชเซเชฏเซเชฌ (เชญเซเชคเชชเซเชฐเซเชต เชธเซเชจเชพเชฐ) เชธเชคเชค เชจเชฟเชฐเซเชเซเชทเชฃ เช เชจเซ เชเซเชก เชเซเชฃเชตเชคเซเชคเชพ เชฎเชพเชชเชจ เชฎเชพเชเซ เชเช เชเชชเชจ เชธเซเชฐเซเชธ เชชเซเชฒเซเชเชซเซเชฐเซเชฎ เชเซ.
MISRA C, MISRA C++, MITER/CWE เช เชจเซ CERT เชธเชฟเชเซเชฏเซเชฐ เชเซเชกเชฟเชเช เชธเซเชเชพเชจเซเชกเชฐเซเชกเซเชธ เชชเซเชฐเซเชเซเชฐเชพเชฎเชฟเชเช เชงเซเชฐเชฃเซเชจเชพ เชจเชฟเชฏเชฎเซ เช เชจเซเชธเชพเชฐ เชเซเชก เชตเชฟเชถเซเชฒเซเชทเชฃ เช เชจเซ เชญเซเชฒ เชถเซเชงเชจเซ เชธเชชเซเชฐเซเช เชเชฐเซ เชเซ. เชคเซ OWASP เชเซเชช 10 เช เชจเซ CWE/SANS เชเซเชช 25 เชชเซเชฐเซเชเซเชฐเชพเชฎเชฟเชเช เชญเซเชฒเซเชจเซ เชธเซเชเชฟเชฎเชพเชเชฅเซ เชญเซเชฒเซเชจเซ เชชเชฃ เชเชณเชเซ เชถเชเซ เชเซ.
เชชเซเชฒเซเชเชซเซเชฐเซเชฎ เชตเชฟเชตเชฟเชง เชคเซเชฏเชพเชฐ เชธเชพเชงเชจเซเชจเซ เชเชชเชฏเซเช เชเชฐเซ เชเซ เชคเซ เชนเชเซเชเชค เชนเซเชตเชพ เชเชคเชพเช, SonarQube เชฐเชจเชจเซ เชเชคเชฟเชนเชพเชธ เชฐเชพเชเซเชจเซ เชชเชฐเชฟเชฃเชพเชฎเซเชจเซ เชเช เช เชกเซเชถเชฌเซเชฐเซเชก เชชเชฐ เชเชเชพเชกเซ เชฆเซ เชเซ เช เชจเซ เชคเซ เชฐเซเชคเซ เชคเชฎเชจเซ เชตเชฟเชเชพเชธ เชฆเชฐเชฎเชฟเชฏเชพเชจ เชธเซเชซเซเชเชตเซเชฐเชจเซ เชเซเชฃเชตเชคเซเชคเชพเชฎเชพเช เชซเซเชฐเชซเชพเชฐเชจเซ เชธเชพเชฎเชพเชจเซเชฏ เชตเชฒเชฃ เชเซเชตเชพเชจเซ เชฎเชเชเซเชฐเซ เชเชชเซ เชเซ.
เชตเชงเซ เชตเชฟเชเชคเซ เชชเชฐ เชฎเชณเซ เชถเชเซ เชเซ
เชฎเซเชเซ เชธเชเชเซเชฏเชพเชฎเชพเช เชชเซเชฐเซเชเซเชฐเชพเชฎเชฟเชเช เชญเชพเชทเชพเช เชธเชชเซเชฐเซเชเซเชก เชเซ. เชเชชเชฐเชจเซ เชฒเชฟเชเช เชชเชฐเชฅเซ เชฎเชณเซเชฒเซ เชฎเชพเชนเชฟเชคเซเชจเซ เชเชงเชพเชฐเซ, เช 25 เชฅเซ เชตเชงเซ เชญเชพเชทเชพเช เชเซ. เชเซเชเซเชเชธ เชญเชพเชทเชพเชจเซ เชธเชฎเชฐเซเชฅเชจ เชเชชเชตเชพ เชฎเชพเชเซ, เชคเชฎเชพเชฐเซ เชฏเซเชเซเชฏ เชชเซเชฒเชเชเชจ เชเชจเซเชธเซเชเซเชฒ เชเชฐเชตเซเช เชเชตเชถเซเชฏเช เชเซ. เชธเชฎเซเชฆเชพเชฏ เชธเชเชธเซเชเชฐเชฃเชฎเชพเช เชเชพเชฎ เชเชฐเชตเชพ เชฎเชพเชเซ เชชเซเชฒเชเชเชจ เชถเชพเชฎเซเชฒ เชเซ เชเชพเชตเชพเชธเซเชเซเชฐเชฟเชชเซเช (typeัript เชธเชนเชฟเชค), เชเซเชเซ เชตเชฟเชเชฟ เชตเชฟเชฐเซเชฆเซเชง เชเชนเซ เชเซ. เชชเชพเชเชณ เชเชพเชตเชพเชธเซเชเซเชฐเชฟเชชเซเช เชชเซเชฒเชเชเชจ เชเชตเชพเชฌเซ เชธเซเชจเชพเชฐเชเซเชเชธ, Typescript เชฎเชพเชเซ SonarTS เช เชจเซเชเซเชฐเชฎเซ.
เชธเชคเซเชคเชพเชตเชพเชฐ เชเซเชฒเชพเชฏเชเชเชจเซ เชเชชเชฏเซเช เชเชตเชฐเซเช เชฎเชพเชนเชฟเชคเซ เชฎเซเชเชฒเชตเชพ เชฎเชพเชเซ เชฅเชพเชฏ เชเซ เชธเซเชจเชพเชฐเซเชเซเชฏเซเชฌ-เชธเซเชเซเชจเชฐ, เชเซเชฎเชพเชเชฅเซ เชธเซเชเชฟเชเชเซเชธเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชฐเซเชชเชฐเซเชเชพ-เชซเชพเชเชฒ, เช เชกเซเชเชพ เชธเชฐเซเชตเชฐเชจเซ เชฎเซเชเชฒเซ เชเซ เชธเซเชจเชพเชฐเชเซเชฏเซเชฌ เชตเชงเซ เชเชเชคเซเชฐเซเชเชฐเชฃ เช เชจเซ เชเชเชคเซเชฐเซเชเชฐเชฃ เชฎเชพเชเซ.
เชฎเชพเชเซ เชเชพเชตเชพเชธเซเชเซเชฐเชฟเชชเซเช เชเซ
เชธเชฐเซเชตเชฐ เชเชฎเชพเชตเชตเชพ เชฎเชพเชเซ เชธเซเชจเชพเชฐเชเซเชฏเซเชฌ เชเชพเชฒเซ เชฒเชพเชญ เชฒเชเช เชกเซเชเชฐ-เชเชเชชเซเช.
เชธเซเชจเชพเชฐ.เชฏเชพเชฎเชฒ:
version: '1'
services:
simplesample-sonar:
image: sonarqube:lts
ports:
- 9001:9000
- 9092:9092
network_mode: bridge
เชฒเซเชจเซเช:
docker-compose -f sonar.yml up
เชคเซ เชชเชเซ เชธเซเชจเชพเชฐเชเซเชฏเซเชฌ เช
เชนเซเช เชเชชเชฒเชฌเซเชง เชฅเชถเซ:
เชคเซเชฎเชพเช เชนเชเซ เชธเซเชงเซ เชเซเช เชชเซเชฐเซเชเซเชเซเช เชจเชฅเซ เช
เชจเซ เชคเซ เชตเชพเชเชฌเซ เชเซ. เช
เชฎเซ เช เชธเซเชฅเชฟเชคเชฟ เชธเซเชงเชพเชฐเซเชถเซเช. เชฎเซเช เชฎเชพเชเซ เชธเชคเซเชคเชพเชตเชพเชฐ เชเชฆเชพเชนเชฐเชฃ เชชเซเชฐเซเชเซเชเซเช เชฒเซเชงเซ VueJS+TS+เชเซเชธเซเช. เชเชพเชฒเซ เชคเซเชจเซ เชเชชเชฃเซ เชคเชฐเชซ เชตเชพเชณเซเช:
git clone https://github.com/vuejs/vue-test-utils-typescript-example.git
เชชเซเชฐเชฅเชฎ เชเชชเชฃเซ เชเซเชฒเชพเชฏเชเช เชเชจเซเชธเซเชเซเชฒ เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ เชธเซเชจเชพเชฐเชเซเชฏเซเชฌ, เชเซเชจเซ เชเชนเซเชตเชพเชฎเชพเช เชเชตเซ เชเซ เชธเซเชจเชพเชฐ-เชธเซเชเซเชจเชฐเชฎเชพเชเซ npm เชคเซเชฏเชพเช เชเช เชเชตเชฐเชฃ เชเซ:
yarn add sonarqube-scanner
เช เชจเซ เชคเชฐเชค เช เชเชฆเซเชถ เชเชฎเซเชฐเซ เชธเซเชเซเชฐเชฟเชชเซเชเซเชธ เชคเซเชจเซ เชธเชพเชฅเซ เชเชพเชฎ เชเชฐเชตเชพ เชฎเชพเชเซ.
package.json:
{
โฆ
scripts: {
...
"sonar": "sonar-scanner"
...
},
โฆ
}
เชเชเชณ, เชธเซเชเซเชจเชฐ เชเชพเชฎ เชเชฐเชตเชพ เชฎเชพเชเซ, เชคเชฎเชพเชฐเซ เชตเชฟเชถเชฟเชทเซเช เชซเชพเชเชฒเชฎเชพเช เชชเซเชฐเซเชเซเชเซเช เชธเซเชเชฟเชเชเซเชธ เชธเซเช เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ. เชเชพเชฒเซ เชฎเซเชณเชญเซเชค เชธเชพเชฅเซ เชชเซเชฐเชพเชฐเชเชญ เชเชฐเซเช.
sonar-project.properties:
sonar.host.url=http://localhost:9001
sonar.projectKey=test-project-vuejs-ts
sonar.projectName=Test Application (VueJS+TS)
sonar.sources=src
# sonar.tests=
sonar.test.inclusions=src/**/*tests*/**
sonar.sourceEncoding=UTF-8
- sonar.host.url - เชธเชฐเชจเชพเชฎเซเช เชธเซเชจเชพเชฐ'เช;
- sonar.projectKey - เชธเชฐเซเชตเชฐ เชชเชฐ เช เชจเชจเซเชฏ เชชเซเชฐเซเชเซเชเซเช เชเชณเชเชเชฐเซเชคเชพ เชธเซเชจเชพเชฐ'เช;
- sonar.projectName - เชคเซเชจเซเช เชจเชพเชฎ, เชคเซ เชเซเชเชชเชฃ เชธเชฎเชฏเซ เชฌเชฆเชฒเซ เชถเชเชพเชฏ เชเซ, เชเชพเชฐเชฃ เชเซ เชชเซเชฐเซเชเซเชเซเช เชฆเซเชตเชพเชฐเชพ เชเชณเชเชตเชพเชฎเชพเช เชเชตเซ เชเซ เชชเซเชฐเซเชเซเชเซเชเชเซ;
- เชธเซเชจเชพเชฐ.เชธเซเชฐเซเชธ - เชธเซเชคเซเชฐเซเชคเซ เชธเชพเชฅเซ เชซเซเชฒเซเชกเชฐ, เชธเชพเชฎเชพเชจเซเชฏ เชฐเซเชคเซ เช เชธเซเชฐเซเชค, เชชเชฐเชเชคเซ เชเชเชเชชเชฃ เชนเซเช เชถเชเซ เชเซ. เช เชซเซเชฒเซเชกเชฐ เชฐเซเช เชซเซเชฒเซเชกเชฐเชจเซ เชคเซเชฒเชจเชพเชฎเชพเช เชธเซเช เชเชฐเซเชฒ เชเซ, เชเซ เชคเซ เชซเซเชฒเซเชกเชฐ เชเซ เชเซเชฎเชพเชเชฅเซ เชธเซเชเซเชจเชฐ เชฒเซเชเช เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ;
- เชธเซเชจเชพเชฐ.เชชเชฐเซเชเซเชทเชฃเซ - เชเช เชชเชฐเชฟเชฎเชพเชฃ เชเซ เชชเชพเชเชฒเชพ เชเช เชธเชพเชฅเซ เช เชจเซเชธเชเชงเชพเชจเชฎเชพเช เชเชพเชฏ เชเซ. เช เชคเซ เชซเซเชฒเซเชกเชฐ เชเซ เชเซเชฏเชพเช เชชเชฐเซเชเซเชทเชฃเซ เชธเซเชฅเชฟเชค เชเซ. เช เชชเซเชฐเซเชเซเชเซเชเชฎเชพเช, เชเชตเซเช เชเซเช เชซเซเชฒเซเชกเชฐ เชจเชฅเซ, เช เชจเซ เชเซเชธเซเช เชซเซเชฒเซเชกเชฐเชฎเชพเช เชชเชฐเซเชเซเชทเชฃ เชเชฐเชตเชพเชฎเชพเช เชเชตเชคเชพ เชเชเชเชจเซ เชฌเชพเชเซเชฎเชพเช เชธเซเชฅเชฟเชค เชเซ.เชเซเชธเซเช', เชคเซเชฅเซ เช เชฎเซ เชคเซเชจเซ เชนเชฎเชฃเชพเช เชฎเชพเชเซ เช เชตเชเชฃเซเชถเซเช เช เชจเซ เชเชเชพเชฎเซ เชชเชฐเชฟเชฎเชพเชฃเชจเซ เชเชชเชฏเซเช เชเชฐเซเชถเซเช;
- เชธเซเชจเชพเชฐ.เชเซเชธเซเช.เชธเชฎเชพเชตเซเชถ - เชฎเชพเชธเซเชเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชชเชฐเซเชเซเชทเชฃเซ เชฎเชพเชเซเชจเซ เชฎเชพเชฐเซเช, เช เชฒเซเชชเชตเชฟเชฐเชพเชฎ เชฆเซเชตเชพเชฐเชพ เชตเชฟเชญเชพเชเชฟเชค เชธเซเชเชฟเชฌเชฆเซเชง เชเชฃเชพ เชเชเชเซ เชนเซเช เชถเชเซ เชเซ;
- sonar.sourceEncoding - เชธเซเชคเซเชฐเซเชค เชซเชพเชเชฒเซ เชฎเชพเชเซ เชเชจเซเชเซเชกเชฟเชเช.
เชธเซเชเซเชจเชฐเชจเชพ เชชเซเชฐเชฅเชฎ เชชเซเชฐเชเซเชทเซเชชเชฃ เชฎเชพเชเซ, เชฎเซเชเซเชฏ เชชเซเชฐเซเชตเชตเชฐเซเชคเซ เชเซเชฐเชฟเชฏเชพ เชธเชฟเชตเชพเชฏ เชฌเชงเซเช เช เชคเซเชฏเชพเชฐ เชเซ: เชชเชฐเซเชเซเชทเชฃ เชเชจเซเชเชฟเชจ เชชเซเชคเซ เช เชฒเซเชเช เชเชฐเชตเซเช, เชเซเชฅเซ เชคเซ เชเชตเชฐเซเช เชตเชฟเชถเซ เชฎเชพเชนเชฟเชคเซ เชเชจเชฐเซเช เชเชฐเซ เชถเชเซ, เชเซเชจเซ เชธเซเชเซเชจเชฐ เชชเชเซเชฅเซ เชเชชเชฏเซเช เชเชฐเชถเซ.
เชชเชฐเชเชคเซ เช เชเชฐเชตเชพ เชฎเชพเชเซ, เชคเชฎเชพเชฐเซ เช เชฎเชพเชนเชฟเชคเซ เชเชจเชฐเซเช เชเชฐเชตเชพ เชฎเชพเชเซ เชชเชฐเซเชเซเชทเชฃ เชเชจเซเชเชฟเชจเชจเซ เชเซเช เชตเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ. เช เชชเซเชฐเซเชเซเชเซเชเชฎเชพเช, เชเซเชธเซเช เชเชจเซเชเชฟเชจ เชเซ เชคเซเชฏเชพเช เชเซ. เช เชจเซ เชคเซเชจเซ เชธเซเชเชฟเชเชเซเชธ เชซเชพเชเชฒเชจเชพ เช เชจเซเชฐเซเชช เชตเชฟเชญเชพเชเชฎเชพเช เชเซ เชชเซเชเซเช.เชเซเชธเชจ.
เชเชพเชฒเซ เช เชธเซเชเชฟเชเชเซเชธ เชเชฎเซเชฐเซเช:
"collectCoverage": true,
"collectCoverageFrom": [
"src/**/*",
"!src/main.ts",
"!src/App.vue",
"!src/**/*.d.*",
"!src/**/*__tests__*"
],
เชเชเชฒเซ เชเซ, เช เชฎเซ เชเชตเชฐเซเช เช เชจเซ เชธเซเชคเซเชฐเซเชค (เช เชชเชตเชพเชฆเซ เชธเชพเชฅเซ) เชเซ เชเซเชจเชพ เชเชงเชพเชฐเซ เชคเซเชจเซ เชฐเชเชจเชพ เชเชฐเชตเชพเชฎเชพเช เชเชตเชถเซ เชคเซเชจเซ เชเชฃเชคเชฐเซ เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐเชฟเชฏเชพเชค เชฎเชพเชเซ เชงเซเชตเช เชชเซเชคเซ เช เชธเซเช เชเชฐเซเชฏเซ เชเซ.
เชนเชตเซ เชเชพเชฒเซ เชเซเชธเซเช เชเชฒเชพเชตเซเช:
yarn test
เช เชฎเซ เชจเซเชเซเชจเซ เชฌเชพเชฌเชคเซ เชเซเชเชถเซเช:
เชเชพเชฐเชฃ เช เชเซ เชเซ เชเชเชเชฎเชพเช เช เชเซเช เชเซเชก เชจเชฅเซ. เชเชพเชฒเซ เชเชจเซ เช เซเช เชเชฐเซเช.
HelloWorld.vue:
...
methods: {
calc(n) {
return n + 1;
}
},
mounted() {
this.msg1 = this.msg + this.calc(1);
},
...
เชเชตเชฐเซเชเชจเซ เชเชฃเชคเชฐเซ เชเชฐเชตเชพ เชฎเชพเชเซ เช เชชเซเชฐเชคเซเช เชนเชถเซ.
เชชเชฐเซเชเซเชทเชฃ เชชเซเชจเชเชชเซเชฐเชพเชฐเชเชญ เชเชฐเซเชฏเชพ เชชเชเซ, เช เชฎเซ เชเชจเซ เชเชพเชคเชฐเซ เชเชฐเซเชถเซเช:
เชธเซเชเซเชฐเซเชจ เชชเชฐ เชเชชเชฃเซ เชเชตเชฐเซเช เชตเชฟเชถเซเชจเซ เชฎเชพเชนเชฟเชคเซ เชเซเชตเซ เชเซเชเช, เช เชจเซ เชชเซเชฐเซเชเซเชเซเช เชซเซเชฒเซเชกเชฐเชฎเชพเช เชเช เชซเซเชฒเซเชกเชฐ เชฌเชจเชพเชตเชตเชพเชฎเชพเช เชเชตเชถเซ เชเชตเชฐเซเช เชธเชพเชฐเซเชตเชคเซเชฐเชฟเช เชซเซเชฐเซเชฎเซเชเชฎเชพเช เชชเชฐเซเชเซเชทเชฃ เชเชตเชฐเซเช เชฎเชพเชนเชฟเชคเซ เชธเชพเชฅเซ LCOV (LTP GCOV เชเชเซเชธเซเชเซเชเชถเชจ).
Gcov เชเซเชก เชเชตเชฐเซเชเชจเซ เชคเชชเชพเชธ เชเชฐเชตเชพ เชฎเชพเชเซ เชฎเซเชเซเชคเชชเชฃเซ เชตเชฟเชคเชฐเชฟเชค เชเชชเชฏเซเชเชฟเชคเชพ เชเซ. Gcov เชชเซเชฐเซเชเซเชฐเชพเชฎเชฎเชพเช เชฆเชฐเซเช เชธเซเชเซเชเชฎเซเชจเซเช เชฎเชพเชเซ เชเชเซเชเซเชเซเชฏเซเชถเชจเชจเซ เชเซเชเซเชเชธ เชธเชเชเซเชฏเชพ เชเชจเชฐเซเช เชเชฐเซ เชเซ เช เชจเซ เชคเชฎเชจเซ เชธเซเชฐเซเชธ เชเซเชกเชฎเชพเช เชเซเชเชพ เชเชฎเซเชฐเชตเชพเชจเซ เชฎเชเชเซเชฐเซ เชเชชเซ เชเซ. GCC เชชเซเชเซเชเชจเชพ เชญเชพเช เชฐเซเชชเซ Gcov เชชเซเชฐเชฎเชพเชฃเชญเซเชค เชเชชเชฏเซเชเชฟเชคเชพ เชคเชฐเซเชเซ เชเชตเซ เชเซ.
เชเชฒเชเซเชต - gcov เชฎเชพเชเซ เชเซเชฐเชพเชซเชฟเชเชฒ เชเชจเซเชเชฐเชซเซเชธ. เชคเซ เชฌเชนเซเชตเชฟเชง เชธเซเชฐเซเชค เชซเชพเชเชฒเซ เชฎเชพเชเซ gcov เชซเชพเชเชฒเซเชจเซ เชเชธเซเชฎเซเชฌเชฒ เชเชฐเซ เชเซ เช เชจเซ เชเซเชก เช เชจเซ เชเชตเชฐเซเช เชฎเชพเชนเชฟเชคเซ เชธเชพเชฅเซ HTML เชชเซเชทเซเช เซเชจเซ เชธเชฎเซเชน เชฌเชจเชพเชตเซ เชเซ. เชจเซเชตเชฟเชเซเชถเชจเชจเซ เชธเชฐเชณ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชเซ เชชเซเชทเซเช เซ เชชเชฃ เชเชจเชฐเซเช เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ. Lcov เชถเชฌเซเชฆเชฎเชพเชณเชพเช, เชเชพเชฐเซเชฏเซ เช เชจเซ เชถเชพเชเชพเชเชจเชพ เชเชตเชฐเซเชเชจเซ เชธเชชเซเชฐเซเช เชเชฐเซ เชเซ.
เชชเชฐเซเชเซเชทเชฃเซ เชชเซเชฐเซเชฃ เชฅเชฏเชพ เชชเชเซ, เชเชตเชฐเซเช เชฎเชพเชนเชฟเชคเซ เชธเซเชฅเชฟเชค เชเชฐเชตเชพเชฎเชพเช เชเชตเชถเซ coverage/lcov.info.
เชเชชเชฃเซ เชเชนเซเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ เชธเซเชจเชพเชฐ'เชนเซเช เชเซเชฏเชพเชเชฅเซ เชฎเซเชณเชตเซ เชถเชเซเช? เชคเซเชฅเซ, เชเชพเชฒเซ เชคเซเชจเซ เชฐเซเชชเชฐเซเชเชพเชเชเชจ เชซเชพเชเชฒเชฎเชพเช เชจเซเชเซเชจเซ เชฒเซเชเซเช เชเชฎเซเชฐเซเช. เชชเชฐเชเชคเซ เชคเซเชฏเชพเช เชเช เชฎเซเชฆเซเชฆเซ เชเซ: เชชเซเชฐเซเชเซเชเซเช เชฌเชนเซเชญเชพเชทเซ เชนเซเช เชถเชเซ เชเซ, เชเชเชฒเซ เชเซ, เชซเซเชฒเซเชกเชฐเชฎเชพเช เชธเซเชฐเซเชค เชเชฃเซ เชชเซเชฐเซเชเซเชฐเชพเชฎเชฟเชเช เชญเชพเชทเชพเช เช
เชจเซ เชเช เช
เชฅเชตเชพ เชฌเซเชเซ เชธเชพเชฅเซ เชเซเชกเชพเชฃ เชฎเชพเชเซ เชธเซเชฐเซเชค เชเซเชกเซเชธ เชเซ, เช
เชจเซ เชฌเชฆเชฒเชพเชฎเชพเช, เชเช เช
เชฅเชตเชพ เชฌเซเชเชพ เชชเซเชฒเชเชเชจเชจเซ เชเชชเชฏเซเช เชคเซเชจเชพ เชตเชฟเชธเซเชคเชฐเชฃ เชฆเซเชตเชพเชฐเชพ เชจเชเซเชเซ เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ. เช
เชจเซ เชเชตเชฐเซเช เชฎเชพเชนเชฟเชคเซ เชตเชฟเชตเชฟเชง เชชเซเชฐเซเชเซเชฐเชพเชฎเชฟเชเช เชญเชพเชทเชพเช เชฎเชพเชเซ เชตเชฟเชตเชฟเชง เชธเซเชฅเชณเซเช เชธเชเชเซเชฐเชนเชฟเชค เชเชฐเซ เชถเชเชพเชฏ เชเซ, เชคเซเชฅเซ เชฆเชฐเซเช เชญเชพเชทเชพเชจเซ เช เชธเซเช เชเชฐเชตเชพ เชฎเชพเชเซ เชคเซเชจเซ เชชเซเชคเชพเชจเซ เชตเชฟเชญเชพเช เชเซ. เช
เชฎเชพเชฐเซ เชชเซเชฐเซเชเซเชเซเช เชเชชเชฏเซเช เชเชฐเซ เชเซ เชเชพเชเชชเชธเซเชเซเชฐเชฟเชชเซเช, เชคเซเชฅเซ เช
เชฎเชจเซ เชซเชเซเชค เชคเซเชจเชพ เชฎเชพเชเซ เชธเซเชเชฟเชเชเซเชธ เชตเชฟเชญเชพเชเชจเซ เชเชฐเซเชฐ เชเซ:
sonar-project.properties:
sonar.typescript.coveragePlugin=lcov
sonar.typescript.lcov.reportPaths=coverage/lcov.info
เชธเซเชเซเชจเชฐเชจเชพ เชชเซเชฐเชฅเชฎ เชฒเซเชจเซเช เชฎเชพเชเซ เชฌเชงเซเช เชคเซเชฏเชพเชฐ เชเซ. เชนเซเช เช เชจเซเชเชงเชตเชพ เชฎเชพเชเชเซ เชเซเช เชเซ เชชเซเชฐเซเชเซเชเซเช เชเซ เชธเซเชจเชพเชฐเชเซเชฏเชพเชฐเซ เชคเชฎเซ เชเชชเซเชฒ เชชเซเชฐเซเชเซเชเซเช เชฎเชพเชเซ เชชเซเชฐเชฅเชฎ เชตเชเชค เชธเซเชเซเชจเชฐ เชเชฒเชพเชตเซ เชเซ เชคเซเชฏเชพเชฐเซ 'e เชเชชเซเชเชช เชฌเชจเซ เชเซ. เช เชจเซเชเชพเชฎเซ เชธเชฎเชฏเชฎเชพเช, เชธเชฎเชฏเชพเชเชคเชฐเซ เชชเซเชฐเซเชเซเชเซเช เชชเชฐเชฟเชฎเชพเชฃเซเชฎเชพเช เชซเซเชฐเชซเชพเชฐเชจเซ เชเชคเชฟเชถเซเชฒเชคเชพ เชเซเชตเชพ เชฎเชพเชเซ เชฎเชพเชนเชฟเชคเซ เชเชเช เซ เชเชฐเชตเชพเชฎเชพเช เชเชตเชถเซ.
เชคเซ, เชเชพเชฒเซ เชชเชนเซเชฒเชพ เชฌเชจเชพเชตเซเชฒ เชเชฆเซเชถเชจเซ เชเชชเชฏเซเช เชเชฐเซเช เชชเซเชเซเช.เชเซเชธเชจ:
yarn run sonar
เชเชฆเชพเชนเชฐเชฃ: เชคเชฎเซ เชชเชฐเชฟเชฎเชพเชฃเชจเซ เชชเชฃ เชเชชเชฏเซเช เชเชฐเซ เชถเชเซ เชเซ -X เชตเชงเซ เชตเชฟเชเชคเชตเชพเชฐ เชฒเซเชเซเชเช เชฎเชพเชเซ.
เชเซ เชธเซเชเซเชจเชฐ เชชเซเชฐเชฅเชฎ เชตเชเชค เชฒเซเชเช เชเชฐเชตเชพเชฎเชพเช เชเชตเซเชฏเซเช เชนเซเชฏ, เชคเซ เชธเซเชเซเชจเชฐเชจเซ เชฌเชพเชเชจเชฐเซ เชชเซเชคเซ เช เชชเชนเซเชฒเชพ เชกเชพเชเชจเชฒเซเชก เชฅเชถเซ. เชคเซ เชชเชเซ เชคเซ เชถเชฐเซ เชฅเชพเชฏ เชเซ เช เชจเซ เชธเชฐเซเชตเชฐเชจเซ เชธเซเชเซเชจ เชเชฐเชตเชพเชจเซเช เชถเชฐเซ เชเชฐเซ เชเซ เชธเซเชจเชพเชฐเชธเซเชฅเชพเชชเชฟเชค เชชเซเชฒเชเชเชจเซ เชฎเชพเชเซ a, เชคเซเชฏเชพเช เชเชงเชพเชฐเชญเซเชค เชญเชพเชทเชพเชจเซ เชเชฃเชคเชฐเซ เชเชฐเซ เชเซ. เชคเซเชจเซ เชเชพเชฎเชเซเชฐเซ เชฎเชพเชเซเชจเชพ เช เชจเซเชฏ เชตเชฟเชตเชฟเชง เชชเชฐเชฟเชฎเชพเชฃเซ เชชเชฃ เชฒเซเชก เชฅเชฏเซเชฒ เชเซ: เชเซเชฃเชตเชคเซเชคเชพ เชชเซเชฐเซเชซเชพเชเชฒเซเชธ, เชธเชเซเชฐเชฟเชฏ เชจเชฟเชฏเชฎเซ, เชฎเซเชเซเชฐเชฟเชเซเชธ เชฐเชฟเชชเซเชเซเชเชฐเซ, เชธเชฐเซเชตเชฐ เชจเชฟเชฏเชฎเซ.
เชเชฆเชพเชนเชฐเชฃ: เช เชฎเซ เช เชฒเซเชเชจเชพ เชฎเชพเชณเชเชพเชฎเชพเช เชคเซเชฎเชจเชพ เชชเชฐ เชตเชฟเชเชคเชตเชพเชฐ เชงเซเชฏเชพเชจ เชเชชเซเชถเซเช เชจเชนเซเช, เชชเชฐเชเชคเซ เชคเชฎเซ เชนเชเชฎเซเชถเชพ เชธเชคเซเชคเชพเชตเชพเชฐ เชธเซเชคเซเชฐเซเชคเซเชจเซ เชธเชเชชเชฐเซเช เชเชฐเซ เชถเชเซ เชเซ.
เชเชเชณ, เชซเซเชฒเซเชกเชฐ เชตเชฟเชถเซเชฒเซเชทเชฃ เชถเชฐเซ เชฅเชพเชฏ เชเซ เชธเซเชฐเซเชค เชคเซเชฎเชจเชพ เช เชจเซเชเชพเชฎเซ เช เชจเซเชเซเชฐเชฎเชฃเชฟเชเชพ เชธเชพเชฅเซ, เชฌเชงเชพ เชฎเชพเชเซ เชธเซเชฐเซเชค เชซเชพเชเชฒเซเชจเซ เชเชชเชฒเชฌเซเชงเชคเชพ เชฎเชพเชเซ (เชเซ เชเซเช เชเซเชเซเชเชธ เชธเซเชชเชทเซเชเชชเชฃเซ เชเชฒเซเชฒเซเชเชฟเชค เชจ เชนเซเชฏ เชคเซ) เชธเชฎเชฐเซเชฅเชฟเชค เชญเชพเชทเชพ.
เชเชเชณ เชตเชฟเชตเชฟเชง เช เชจเซเชฏ เชตเชฟเชถเซเชฒเซเชทเชฃเซ เชเชตเซ เชเซ, เชเซเชจเชพ เชชเชฐ เช เชฎเซ เช เชฒเซเชเชฎเชพเช เชงเซเชฏเชพเชจ เชเซเชจเซเชฆเซเชฐเชฟเชค เชเชฐเชคเชพ เชจเชฅเซ (เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, เชฒเชฟเชเชเชฟเชเช, เชเซเชก เชกเซเชชเซเชฒเชฟเชเซเชถเชจเชจเซ เชถเซเชง, เชตเชเซเชฐเซ).
เชธเซเชเซเชจเชฐเชจเชพ เชเชพเชฎเชจเชพ เชเซเชฌ เช เช เชเชคเซ, เชฌเชงเซ เชเชเชคเซเชฐเชฟเชค เชฎเชพเชนเชฟเชคเซ เชเชเชคเซเชฐ เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ, เชเชฐเซเชเชพเชเชต เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ เช เชจเซ เชธเชฐเซเชตเชฐเชจเซ เชฎเซเชเชฒเชตเชพเชฎเชพเช เชเชตเซ เชเซ.
เช เชชเชเซ, เชตเซเชฌ เชเชจเซเชเชฐเชซเซเชธเชฎเชพเช เชถเซเช เชฅเชฏเซเช เชคเซ เชเชชเชฃเซ เชเซเช เชถเชเซเช เชเซเช:
เชเซเชฎ เชเชชเชฃเซ เชเซเช เชถเชเซเช เชเซเช, เชเชเชเช เชเชพเชฎ เชเชฐเซเชฏเซเช เชเซ, เช เชจเซ เช เชฎเซเช เชชเซเชฐเชเชพเชฐเชจเซเช เชเชตเชฐเซเช เชชเชฃ เชฌเชคเชพเชตเซ เชเซ, เชชเชฐเชเชคเซ เชคเซ เชเชชเชฃเชพ เชธเชพเชฅเซ เชฎเซเชณ เชเชพเชคเซเช เชจเชฅเซ เชคเซเชฏเชพเช เชเซ- เช เชนเซเชตเชพเชฒ.
เชเชพเชฒเซ เชคเซเชจเซ เชเชเซเชคเชฟ เชเชฐเซเช. เชเชพเชฒเซ เชชเซเชฐเซเชเซเชเซเชเชจเซ เชตเชงเซ เชตเชฟเชเชคเชฎเชพเช เชเซเชเช, เชเชตเชฐเซเช เชฎเซเชฒเซเชฏ เชชเชฐ เชเซเชฒเชฟเช เชเชฐเซ เช เชจเซ เชตเชฟเชเชคเชตเชพเชฐ เชซเชพเชเชฒ เชฐเชฟเชชเซเชฐเซเชเชฎเชพเช "เชชเชกเชตเซเช":
เช เชนเซเช เชเชชเชฃเซ เชฎเซเชเซเชฏ เชเชชเชฐเชพเชเชค, เชคเชชเชพเชธเซเชฒ เชซเชพเชเชฒ เชเซเชเช เชเซเช HelloWorld.vue, เชเช เชซเชพเชเชฒ เชชเชฃ เชเซ เชฎเซเชเซเชฏ เชเซ.เชเชธ, เชเซ เชเชตเชฐเซเชเชจเชพ เชธเชฎเชเซเชฐ เชเชฟเชคเซเชฐเชจเซ เชฌเชเชพเชกเซ เชเซ. เชชเชฐเชเชคเซ เช เชฎเซ เชคเซเชจเซ เชเชตเชฐเซเชเชจเซ เชเชฃเชคเชฐเซเชฎเชพเชเชฅเซ เชเซเชตเซ เชฐเซเชคเซ เชฌเชพเชเชพเชค เชฐเชพเชเซเชฏเซเช. เชนเชพ, เชฌเชงเซเช เชธเชพเชเซเช เชเซ, เชชเชฐเชเชคเซ เชคเซ เชธเซเชคเชฐ เชชเชฐ เชนเชคเซเช เชคเซเชฏเชพเช เชเซ, เชชเชฐเชเชคเซ เชธเซเชเซเชจเชฐ เชคเซเชจเซ เช เชจเซเชเซเชฐเชฎเชฟเชค เชเชฐเซ เชเซ, เชคเซเชฅเซ เชคเซ เชคเซเชจเซ เชเชฃเชคเชฐเซเชฎเชพเช เชธเชฎเชพเชชเซเชค เชฅเชพเชฏ เชเซ.
เชเชพเชฒเซ เชเชจเซ เช เซเช เชเชฐเซเช:
sonar-project.properties:
...
sonar.exclusions=src/main.ts
...
เชนเซเช เชธเซเชชเชทเซเชเชคเชพ เชเชฐเชตเชพ เชฎเชพเชเชเซ เชเซเช: เช เชชเซเชฐเชพเชฎเซเชเชฐเชฎเชพเช เชเชฒเซเชฒเซเชเชฟเชค เชซเซเชฒเซเชกเชฐเซเชธ เชเชชเชฐเชพเชเชค, เชชเซเชฐเชพเชฎเซเชเชฐเชฎเชพเช เชธเซเชเชฟเชฌเชฆเซเชง เชฌเชงเชพ เชซเซเชฒเซเชกเชฐเซเชธ เชชเชฃ เชเชฎเซเชฐเชตเชพเชฎเชพเช เชเชตเซเชฏเชพ เชเซ. เชธเซเชจเชพเชฐ.เชเซเชธเซเช.เชธเชฎเชพเชตเซเชถ.
เชธเซเชเซเชจเชฐ เชฒเซเชเช เชเชฐเซเชฏเชพ เชชเชเซ, เช เชฎเชจเซ เชธเชพเชเซ เชฎเชพเชนเชฟเชคเซ เชฆเซเชเชพเชฏ เชเซ:
เชเชพเชฒเซ เชเชเชณเชจเซ เชฎเซเชฆเซเชฆเซ เชเซเชเช - เชเซเชฃเชตเชคเซเชคเชพ เชชเซเชฐเซเชซเชพเชเชฒเซเชธ. เชฎเซเช เชเชชเชฐ เชเชงเชพเชฐ เชตเชฟเชถเซ เชตเชพเชค เชเชฐเซ เชธเซเชจเชพเชฐ'เชเชฎ เชเช เช เชธเชฎเชฏเซ เชเชฃเซ เชญเชพเชทเชพเช. เช เชฌเชฐเชพเชฌเชฐ เชเซ เชเซ เชเชชเชฃเซ เชเซเช เชฐเชนเซเชฏเชพ เชเซเช. เชชเชฐเชเชคเซ เช เชฎเซ เชเชพเชฃเซเช เชเซเช เชเซ เช เชฎเชพเชฐเซ เชชเซเชฐเซเชเซเชเซเช เชฒเชเชพเชฏเซเชฒ เชเซ TS, เชคเซ เชถเชพ เชฎเชพเชเซ เชธเซเชเซเชจเชฐเชจเซ เชฌเชฟเชจเชเชฐเซเชฐเซ เชฎเซเชจเซเชชเซเชฏเซเชฒเซเชถเชจเซเชธ เช เชจเซ เชคเชชเชพเชธ เชธเชพเชฅเซ เชคเชพเชฃเชตเซเช. เช เชฎเซ เชฐเซเชชเชฐเซเชเชพเชเชเชจ เชซเชพเชเชฒเชฎเชพเช เชตเชงเซ เชเช เชชเชฐเชฟเชฎเชพเชฃ เชเชฎเซเชฐเซเชจเซ เชตเชฟเชถเซเชฒเซเชทเชฃ เชฎเชพเชเซ เชญเชพเชทเชพ เชธเซเช เชเชฐเซเชถเซเช เชธเซเชจเชพเชฐ'เช:
sonar-project.properties:
...
sonar.language=ts
...
เชเชพเชฒเซ เชซเชฐเซเชฅเซ เชธเซเชเซเชจเชฐ เชเชฒเชพเชตเซเช เช เชจเซ เชชเชฐเชฟเชฃเชพเชฎ เชเซเชเช:
เชเชตเชฐเซเช เชธเชเชชเซเชฐเซเชฃเชชเชฃเซ เช เชฆเซเชถเซเชฏ เชฅเช เชเชฏเซเช เชนเชคเซเช.
เชเซ เชเชชเชฃเซ เชธเซเชเซเชจเชฐ เชฒเซเช เชเซเชเช, เชคเซ เชเชชเชฃเซ เชจเซเชเซเชจเซ เชฒเซเชเซ เชเซเช เชถเชเซเช เชเซเช:
เชเชเชฒเซ เชเซ, เช เชฎเชพเชฐเซ เชชเซเชฐเซเชเซเชเซเช เชซเชพเชเชฒเซ เชซเชเซเชค เช เชจเซเชเซเชฐเชฎเชฟเชค เชจ เชนเชคเซ.
เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟ เชจเซเชเซ เชฎเซเชเชฌ เชเซ: เชธเชคเซเชคเชพเชตเชพเชฐ เชฐเซเชคเซ เชธเชชเซเชฐเซเชเซเชก VueJs เชชเซเชฒเชเชเชจเชฎเชพเช เชเซ เชธเซเชจเชพเชฐเชเซเชเชธเชเซเชฃ เชเชตเชพเชฌเชฆเชพเชฐ เชเซ เชเชพเชตเชพเชธเซเชเซเชฐเชฟเชชเซเช.
เชชเชฐเชเชคเซ เช เชธเชชเซเชฐเซเช เชชเซเชฒเชเชเชจเชฎเชพเช เชจเชฅเซ SonarTS เชฎเชพเชเซ TS, เชเซเชจเชพ เชตเชฟเชถเซ เชฌเช เชเซเชฐเซเชเชฐเชฎเชพเช เชธเชคเซเชคเชพเชตเชพเชฐ เชเชฟเชเชฟเช เชเซเชฒเชตเชพเชฎเชพเช เชเชตเซ เชนเชคเซ เชธเซเชจเชพเชฐ'เช:
เชธเซเชจเชพเชฐเชเซเชฏเซเชฌ เชกเซเชตเชฒเชชเชฐเซเชธเชจเชพ เชชเซเชฐเชคเชฟเชจเชฟเชงเชฟเชเชฎเชพเชเชฅเซ เชเชเชจเชพ เชเซเชเชฒเชพเช เชเชตเชพเชฌเซ เช เชนเชเซเชเชคเชจเซ เชชเซเชทเซเชเชฟ เชเชฐเซ เชเซ.
เชชเชฐเชเชคเซ เชฌเชงเซเช เช
เชฎเชพเชฐเชพ เชฎเชพเชเซ เชเชพเชฎ เชเชฐเชคเซเช เชนเชคเซเช, เชคเชฎเซ เชตเชพเชเชงเซ เชเช เชพเชตเซ เชเซ. เชนเชพ เชคเซ เชเซ, เชเชพเชฒเซ เชคเซเชจเซ เชฅเซเชกเซ เชชเซเชฐเชฏเชพเชธ เชเชฐเซเช "เชนเซเช".
เชเชงเชพเชฐ เชนเซเชฏ เชคเซ .vue-เชซเชพเชเชฒเซ เชธเซเชจเชพเชฐ'เชเชน, เชคเซ เชเชพเชฒเซ เชคเซเชจเซ เชเชนเซเชตเชพเชจเซ เชชเซเชฐเชฏเชคเซเชจ เชเชฐเซเช เชเซ เชคเซเช เชคเซเชฎเชจเซ เชฎเชพเชจเซ เชเชพเชเชชเชธเซเชเซเชฐเชฟเชชเซเช.
เชเชพเชฒเซ เชเช เชชเชฐเชฟเชฎเชพเชฃ เชเชฎเซเชฐเซเช:
sonar-project.properties:
...
sonar.typescript.file.suffixes=.ts,.tsx,.vue
...
เชเชพเชฒเซ เชธเซเชเซเชจเชฐ เชฒเซเชเช เชเชฐเซเช:
เช เชจเซ, เชตเซเชเชฒเชพ, เชฌเชงเซเช เชธเชพเชฎเชพเชจเซเชฏ เชฅเช เชเชฏเซเช เชเซ, เช เชจเซ เชซเชเซเชค เชเช เชชเซเชฐเซเชซเชพเชเชฒ เชธเชพเชฅเซ เชเชพเชเชชเชธเซเชเซเชฐเชฟเชชเซเช. เชเชเชฒเซ เชเซ, เช เชฎเซ เชธเชฎเชฐเซเชฅเชจเชฎเชพเช เชธเชฎเชธเซเชฏเชพ เชนเชฒ เชเชฐเชตเชพเชฎเชพเช เชตเซเชฏเชตเชธเซเชฅเชพเชชเชฟเชค เชเซเช VueJs+TS เชฎเชพเชเซ เชธเซเชจเชพเชฐเชเซเชฏเซเชฌ.
เชเชพเชฒเซ เชเชเชณ เชเชตเชพเชจเซ เชชเซเชฐเชฏเชพเชธ เชเชฐเซเช เช เชจเซ เชเชตเชฐเซเชเชจเซ เชฎเชพเชนเชฟเชคเซเชฎเชพเช เชฅเซเชกเซ เชธเซเชงเชพเชฐเซ เชเชฐเซเช.
เช เชฎเซ เช เชคเซเชฏเชพเชฐ เชธเซเชงเซ เชถเซเช เชเชฐเซเชฏเซเช เชเซ:
- เชชเซเชฐเซเชเซเชเซเชเชฎเชพเช เชเชฎเซเชฐเซเชฏเซเช เชธเซเชจเชพเชฐ- เชธเซเชเซเชจเชฐ;
- เชธเซเชฅเชพเชชเชจเชพ เชคเซเชฏเชพเช เชเซ เชเชตเชฐเซเช เชฎเชพเชนเชฟเชคเซ เชชเซเชฆเชพ เชเชฐเชตเชพ เชฎเชพเชเซ;
- เชฐเซเชชเชฐเซเชเชพเชเชเชฟเชค เชธเซเชจเชพเชฐ- เชธเซเชเซเชจเชฐ;
- เชเชงเชพเชฐ เชธเชฎเชธเซเชฏเชพ เชนเชฒ เชเชฐเซ .vue-เชซเชพเชเชฒเซ + เชเชพเชเชชเชธเซเชเซเชฐเชฟเชชเซเช.
เชชเชฐเซเชเซเชทเชฃ เชเชตเชฐเซเช เชเชชเชฐเชพเชเชค, เชเซเชก เชเซเชฃเชตเชคเซเชคเชพ เชฎเชพเชเซ เช เชจเซเชฏ เชฐเชธเชชเซเชฐเชฆ เชเชชเชฏเซเชเซ เชฎเชพเชชเชฆเชเชกเซ เชเซ, เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, เชเซเชก เชกเซเชชเซเชฒเชฟเชเซเชถเชจ เช เชจเซ เชชเซเชฐเซเชเซเชเซเชเชจเซ เชฐเซเชเชพเชเชจเซ เชธเชเชเซเชฏเชพ (เชเซเชก เชเชเชฟเชฒเชคเชพเชจเซ เชธเชเชฌเชเชงเชฟเชค เชเซเชฃเชพเชเชเชจเซ เชเชฃเชคเชฐเซเชฎเชพเช เชธเชพเชฎเซเชฒ).
เชธเชพเชฅเซ เชเชพเชฎ เชเชฐเชตเชพ เชฎเชพเชเซ เชชเซเชฒเชเชเชจเชจเชพ เชตเชฐเซเชคเชฎเชพเชจ เช เชฎเชฒเซเชเชฐเชฃเชฎเชพเช TS (SonarTS) เชเชพเชฎ เชเชฐเชถเซ เชจเชนเซเช CPD (เชเซเชชเซ เชชเซเชธเซเช เชกเชฟเชเซเชเซเชเชฐ) เช เชจเซ เชเซเชกเชจเซ เชฒเชพเชเชจเซเชจเซ เชเชฃเชคเชฐเซ .vue-เชซเชพเชเชฒเซ.
เชเซเชก เชกเซเชชเซเชฒเชฟเชเซเชถเชจเชจเซ เชธเชฟเชจเซเชฅเซเชเซเช เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชเซ, เชเชเชเซเชจเซ เชซเชพเชเชฒเชจเซ เช เชฒเช เชจเชพเชฎ เชธเชพเชฅเซ เชกเซเชชเซเชฒเชฟเชเซเช เชเชฐเซ เช เชจเซ เชคเซเชจเซ เชเซเชกเชฎเชพเช เชเชฎเซเชฐเซ เชฎเซเชเซเชฏ เชเซ.เชเชธ เชเช เชกเชฎเซ เชซเชเชเซเชถเชจ เช เชจเซ เชคเซเชจเซ เช เชฒเช เชจเชพเชฎ เชธเชพเชฅเซ เชกเซเชชเซเชฒเชฟเชเซเช เชเชฐเซ. เชฎเชพเช เชคเชฐเซเชเซ เชกเซเชชเซเชฒเชฟเชเซเชถเชจ เชคเชชเชพเชธเชตเชพ เชฎเชพเชเซ .vue, เช เชจเซ เชฎเชพเช .ts -เชซเชพเชเชฒเซ.
main.ts:
...
function name(params:string): void {
console.log(params);
}
...
เช เชเชฐเชตเชพ เชฎเชพเชเซ, เชคเชฎเชพเชฐเซ เชฐเซเชชเชฐเซเชเชพเชเชเชจ เชฒเชพเชเชจ เชชเชฐ เช เชธเซเชฅเชพเชฏเซ เชฐเซเชชเซ เชเชฟเชชเซเชชเชฃเซ เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ:
sonar-project.properties:
...
sonar.exclusions=src/main.ts
...
เชเชพเชฒเซ เชชเชฐเซเชเซเชทเชฃ เชธเชพเชฅเซ เชธเซเชเซเชจเชฐเชจเซ เชซเชฐเซเชฅเซ เชชเซเชฐเชพเชฐเชเชญ เชเชฐเซเช:
yarn test && yarn run sonar
เช เชฒเชฌเชคเซเชค, เช เชฎเชพเชฐเซเช เชเชตเชฐเซเช เชเชเชถเซ, เชชเชฐเชเชคเซ เชนเชตเซ เช เชฎเชจเซ เชคเซเชฎเชพเช เชฐเชธ เชจเชฅเซ.
เชเซเชกเชจเซ เชกเซเชชเซเชฒเชฟเชเซเชเชฟเชเช เชฐเซเชเชพเชเชจเชพ เชธเชเชฆเชฐเซเชญเชฎเชพเช, เช เชฎเซ เชเซเชถเซเช:
เชคเชชเชพเชธเชตเชพ เชฎเชพเชเซ เช เชฎเซ เชเชชเชฏเซเช เชเชฐเซเชถเซเช เชธเซเชชเซเชกเซเชเชชเชฏเซเชเชฟเชคเชพ - jscpd:
npx jscpd src
เชเซเชกเชจเซ เชฐเซเชเชพเช เชฎเชพเชเซ:
เชเชฆเชพเช เช เชญเชตเชฟเชทเซเชฏเชจเชพ เชชเซเชฒเชเชเชจ เชธเชเชธเซเชเชฐเชฃเซเชฎเชพเช เชเชเซเชฒเชพเช เชเชถเซ SonarJS(TS). เชนเซเช เช เชจเซเชเชงเชตเชพ เชฎเชพเชเชเซ เชเซเช เชเซ เชคเซเช เชงเซเชฎเซ เชงเซเชฎเซ เช เชฌเซ เชชเซเชฒเชเชฟเชจเซเชธเชจเซ เชเชเชฎเชพเช เชฎเชฐเซเช เชเชฐเชตเชพเชจเซเช เชถเชฐเซ เชเชฐเซ เชฐเชนเซเชฏเชพเช เชเซ เชธเซเชจเชพเชฐเชเซเชเชธ, เชเซ เชฎเชจเซ เชฏเซเชเซเชฏ เชฒเชพเชเซ เชเซ.
เชนเชตเซ เชนเซเช เชเชตเชฐเซเช เชฎเชพเชนเชฟเชคเซ เชธเซเชงเชพเชฐเชตเชพเชจเชพ เชตเชฟเชเชฒเซเชช เชชเชฐ เชตเชฟเชเชพเชฐ เชเชฐเชตเชพ เชฎเชพเชเชเชคเซ เชนเชคเซ.
เช เชคเซเชฏเชพเชฐ เชธเซเชงเซ เชเชชเชฃเซ เชธเชฎเชเซเชฐ เชชเซเชฐเซเชเซเชเซเช เชฎเชพเชเซ เช เชจเซ เชเชพเชธ เชเชฐเซเชจเซ เชซเชพเชเชฒเซ เชฎเชพเชเซ เชเชเชพเชตเชพเชฐเซเชจเซ เชฆเซเชฐเชทเซเชเชฟเช เชเซเชธเซเช เชเชตเชฐเซเช เชเซเช เชถเชเซเช เชเซเช. เชชเชฐเชเชคเซ เชเชฅเซเชฅเชพ เชตเชฟเชถเซเชจเซ เชฎเชพเชนเชฟเชคเซ เชธเชพเชฅเซ เช เชธเซเชเชเชจเซ เชตเชฟเชธเซเชคเซเชค เชเชฐเชตเซเช เชถเชเซเชฏ เชเซ เชเชเชฎ- เชชเซเชฐเซเชเซเชเซเช เชฎเชพเชเซ เชชเชฐเซเชเซเชทเชฃเซ, เชคเซเชฎเช เชซเชพเชเชฒเซเชจเชพ เชธเชเชฆเชฐเซเชญเชฎเชพเช.
เชคเซเชฏเชพเช เชเช เชชเซเชธเซเชคเชเชพเชฒเชฏ เชเซ เชเซ เชเชฐเซ เชถเชเซ เชเซ เชคเซเชฏเชพเช เชเซ- เชฐเชฟเชชเซเชฐเซเชเชจเซ เชซเซเชฐเซเชฎเซเชเชฎเชพเช เชเชจเซเชตเชฐเซเช เชเชฐเซ เชธเซเชจเชพเชฐ'เช:
เชธเชพเชฎเชพเชจเซเชฏ เชชเชฐเซเชเซเชทเชฃ เชกเซเชเชพ -
เชเชพเชฒเซ เช เชฒเชพเชเชฌเซเชฐเซเชฐเซเชจเซ เช เชฎเชพเชฐเชพ เชชเซเชฐเซเชเซเชเซเชเชฎเชพเช เชเชจเซเชธเซเชเซเชฒ เชเชฐเซเช:
yarn add jest-sonar-reporter
เช เชจเซ เชคเซเชจเซ เชฐเซเชชเชฐเซเชเชพเชเชเชจเชฎเชพเช เชเชฎเซเชฐเซ เชคเซเชฏเชพเช เชเซ:
package.json:
โฆ
"testResultsProcessor": "jest-sonar-reporter"
โฆ
เชนเชตเซ เชเชพเชฒเซ เชเซเชธเซเช เชเชฒเชพเชตเซเช:
yarn test
เชเซ เชชเชเซ เชชเซเชฐเซเชเซเชเซเชเชจเชพ เชฐเซเชเชฎเชพเช เชเช เชซเชพเชเชฒ เชฌเชจเชพเชตเชตเชพเชฎเชพเช เชเชตเชถเซ test-report.xml.
เชเชพเชฒเซ เชคเซเชจเซ เชฐเซเชชเชฐเซเชเชพเชเชเชจเชฎเชพเช เชตเชพเชชเชฐเซเช เชธเซเชจเชพเชฐ'เช:
sonar-project.properties:
โฆ
sonar.testExecutionReportPaths=test-report.xml
โฆ
เช เชจเซ เชธเซเชเซเชจเชฐ เชชเซเชจเชเชชเซเชฐเชพเชฐเชเชญ เชเชฐเซ:
yarn run sonar
เชเชพเชฒเซ เชเซเชเช เชเซ เชเชจเซเชเชฐเชซเซเชธเชฎเชพเช เชถเซเช เชฌเชฆเชฒเชพเชฏเซเช เชเซ เชธเซเชจเชพเชฐ'เช:
เช เชจเซ เชเชเช เชฌเชฆเชฒเชพเชฏเซเช เชจเชฅเซ. เชนเชเซเชเชค เช เชเซ เชเซ เชธเซเชจเชพเชฐ เชเซเชธเซเช เชฐเชฟเชชเซเชฐเซเชเชฎเชพเช เชตเชฐเซเชฃเชตเซเชฒ เชซเชพเชเชฒเซเชจเซ เชซเชพเชเชฒเซ เชฎเชพเชจเชคเชพ เชจเชฅเซ เชเชเชฎ-เชชเชฐเซเชเซเชทเชฃเซ. เช เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟเชจเซ เชธเซเชงเชพเชฐเชตเชพ เชฎเชพเชเซ, เช เชฎเซ เชฐเซเชชเชฐเซเชเชพเชเชเชจ เชชเชฐเชฟเชฎเชพเชฃเชจเซ เชเชชเชฏเซเช เชเชฐเซเช เชเซเช เชธเซเชจเชพเชฐ เชธเซเชจเชพเชฐ.เชชเชฐเซเชเซเชทเชฃเซ, เชเซเชฎเชพเช เช เชฎเซ เชชเชฐเซเชเซเชทเชฃเซ เชธเชพเชฅเซ เชซเซเชฒเซเชกเชฐเซเชธเชจเซ เชธเซเชชเชทเซเชเชชเชฃเซ เชธเซเชเชตเซเชถเซเช (เช เชฎเชพเชฐเซ เชชเชพเชธเซ เชนเชฎเชฃเชพเช เชฎเชพเชเซ เชฎเชพเชคเซเชฐ เชเช เชเซ):
sonar-project.properties:
โฆ
sonar.tests=src/components/__tests__
โฆ
เชเชพเชฒเซ เชธเซเชเซเชจเชฐ เชซเชฐเซ เชถเชฐเซ เชเชฐเซเช:
yarn run sonar
เชเชพเชฒเซ เชเซเชเช เชเซ เชเชจเซเชเชฐเชซเซเชธเชฎเชพเช เชถเซเช เชฌเชฆเชฒเชพเชฏเซเช เชเซ:
เชนเชตเซ เช เชฎเซ เช เชฎเชพเชฐเซ เชธเชเชเซเชฏเชพ เชเซเช เชเซ เชเชเชฎ-เชชเชฐเซเชเซเชทเชฃเซ เช เชจเซ, เช เชเชฆเชฐ เชเซเชฒเชฟเช เชเชฐเซเชจเซ เชจเชฟเชทเซเชซเชณ เชฅเชฏเชพ เชชเชเซ, เช เชฎเซ เชชเซเชฐเซเชเซเชเซเช เชซเชพเชเชฒเซ เชตเชเซเชเซ เช เชจเชเชฌเชฐเชจเซเช เชตเชฟเชคเชฐเชฃ เชเซเช เชถเชเซเช เชเซเช:
เชจเชฟเชทเซเชเชฐเซเชท
เชคเซเชฅเซ, เช เชฎเซ เชธเชคเชค เชตเชฟเชถเซเชฒเซเชทเชฃ เชฎเชพเชเซ เชเช เชธเชพเชงเชจ เชคเชฐเชซ เชเซเชฏเซเช เชธเซเชจเชพเชฐเชเซเชฏเซเชฌ. เช เชฎเซ เชคเซเชฎเชพเช เชฒเชเซเชฒเชพ เชชเซเชฐเซเชเซเชเซเชเชจเซ เชธเชซเชณเชคเชพเชชเซเชฐเซเชตเช เชธเชเชเชฒเชฟเชค เชเชฐเซเชฏเชพ VueJs+TS. เชเซเชเชฒเชพเช เชธเซเชธเชเชเชคเชคเชพ เชฎเซเชฆเซเชฆเชพเช เชธเซเชงเชพเชฐเซเชฒ. เช เชฎเซ เชชเชฐเซเชเซเชทเชฃ เชเชตเชฐเซเช เชธเซเชเชเชจเซ เชฎเชพเชนเชฟเชคเซ เชธเชพเชฎเชเซเชฐเซเชฎเชพเช เชตเชงเชพเชฐเซ เชเชฐเซเชฏเซ เชเซ. เช เชฒเซเชเชฎเชพเช, เช เชฎเซ เชเซเชก เชเซเชฃเชตเชคเซเชคเชพ เชฎเชพเชเซเชจเชพ เชฎเชพเชชเชฆเชเชกเซเชฎเชพเชเชฅเซ เชฎเชพเชคเซเชฐ เชเช เชฎเชพเชชเชฆเชเชกเชจเซ เชคเชชเชพเชธ เชเชฐเซ เชเซ (เชเชฆเชพเช เชฎเซเชเซเชฏ เชชเซเชเซ เชเช), เชชเชฐเชเชคเซ เชธเซเชจเชพเชฐเชเซเชฏเซเชฌ เชธเชฒเชพเชฎเชคเซ เชชเชฐเซเชเซเชทเชฃ เชธเชนเชฟเชค เช เชจเซเชฏ เชเซเชฃเชตเชคเซเชคเชพ เชฎเชพเชชเชฆเชเชกเซเชจเซ เชธเชฎเชฐเซเชฅเชจ เชเชชเซ เชเซ. เชชเชฐเชเชคเซ เช เชคเชฎเชพเชฎ เชธเซเชตเชฟเชงเชพเช เชธเชเชชเซเชฐเซเชฃเชชเชฃเซ เชเชชเชฒเชฌเซเชง เชจเชฅเซ เชธเชฎเซเชฆเชพเชฏ- เชเชตเซเชคเซเชคเชฟเช. เชเช เชฐเชธเชชเซเชฐเชฆ เช เชจเซ เชเชชเชฏเซเชเซ เชฒเชเซเชทเชฃเซ เชเชเซเชเชฐเชฃ เชเซ เชธเซเชจเชพเชฐเชเซเชฏเซเชฌ เชตเชฟเชตเชฟเชง เชเซเชก เชฐเชฟเชชเซเชเซเชเชฐเซ เชฎเซเชจเซเชเชฎเซเชจเซเช เชธเชฟเชธเซเชเชฎเซเชธ เชธเชพเชฅเซ, เชเซเชฎ เชเซ GitLab เช เชจเซ BitBucket. เช เชเชเชพเชตเชตเชพ เชฎเชฐเซเช เชชเซเชฒ(เชฎเชฐเซเช) เชตเชฟเชจเชเชคเซเชเซเชฏเชพเชฐเซ เชเชตเชฐเซเช เชกเชฟเชเซเชฐเซเช เชฅเชพเชฏ เชเซ เชคเซเชฏเชพเชฐเซ เชฐเซเชชเซเชเซเชเชฐเซเชจเซ เชฎเซเชเซเชฏ เชถเชพเชเชพ เชธเซเชงเซ. เชชเชฐเชเชคเซ เช เชเช เชธเชเชชเซเชฐเซเชฃเชชเชฃเซ เช เชฒเช เชฒเซเช เชฎเชพเชเซเชจเซ เชตเชพเชฐเซเชคเชพ เชเซ.
PS: เชเซเชกเชจเชพ เชธเซเชตเชฐเซเชชเชฎเชพเช เชฒเซเชเชฎเชพเช เชตเชฐเซเชฃเชตเซเชฒ เชฆเชฐเซเช เชตเชธเซเชคเซ เชเชชเชฒเชฌเซเชง เชเซ
เชซเชเซเชค เชจเซเชเชงเชพเชฏเซเชฒเชพ เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพเช เช เชธเชฐเซเชตเซเชฎเชพเช เชญเชพเช เชฒเช เชถเชเซ เชเซ.
เชถเซเช เชคเชฎเซ SonarQube เชชเซเชฒเซเชเชซเซเชฐเซเชฎเชจเซ เชเชชเชฏเซเช เชเชฐเซ เชเซ:
-
26,3%เชนเชพ 5
-
15,8%เชจเชเชฌเชฐ 3
-
15,8%เชฎเซเช เช เชชเซเชฒเซเชเชซเซเชฐเซเชฎ เชตเชฟเชถเซ เชธเชพเชเชญเชณเซเชฏเซเช เชเซ เช เชจเซ 3 เชจเซ เชเชชเชฏเซเช เชเชฐเชตเชพ เชฎเชพเชเชเซ เชเซเช
-
10,5%เชฎเซเช เช เชชเซเชฒเซเชเชซเซเชฐเซเชฎ เชตเชฟเชถเซ เชธเชพเชเชญเชณเซเชฏเซเช เชเซ เช เชจเซ เชนเซเช 2 เชจเซ เชเชชเชฏเซเช เชเชฐเชตเชพ เชฎเชพเชเชเชคเซ เชจเชฅเซ
-
0,0%เชนเซเช เชเช เช เชฒเช เชชเซเชฒเซเชเชซเซเชฐเซเชฎ0 เชจเซ เชเชชเชฏเซเช เชเชฐเซเช เชเซเช
-
31,6%เชชเซเชฐเชฅเชฎ เชตเชเชค เชฎเซเช เชคเซเชฃเซเชจเชพ 6 เชตเชฟเชถเซ เชธเชพเชเชญเชณเซเชฏเซเช เชเซ
19 เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพเชเช เชฎเชค โโเชเชชเซเชฏเซ. 3 เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพเช เชฆเซเชฐ เชฐเชนเซเชฏเชพ.
เชธเซเชฐเซเชธ: www.habr.com