แฉแแแ แแฅแขแแฃแ แแ แแแงแแแแแ แแแแขแคแแ แแแก แฉแแแแก แกแแฅแแแแแแแแจแ soundQube แแแแแก แฎแแ แแกแฎแแก แแแฆแแ แแแแแแ แจแแแแ แฉแฃแแแแ. แแแฌแแ แแแ แแ แ-แแ แแ แแ แแแฅแขแแก แแแขแแแ แแ แแแแกแแก VueJs+Typescript, แแ แแแแแแแแ แฌแแ แแแแจแแ. แแแแขแแ, แฃแคแ แ แแแขแแแฃแ แแ แแแแแ แแแแฎแ แแ, แ แแแแ แแแแแฎแแ แฎแแ แแแแ แแแแแแ แแแ.
แแ แกแขแแขแแแจแ แแแกแแฃแแ แแแ, แ แแแแ แช แแแแแ แแแแฌแแ แ, SonarQube แแแแขแคแแ แแแแ. แแแขแแ แ แแแแ แแ - แ แ แแ แแก แแแแแแแ, แแแแแแแก, แแแแช แแแ แแแแแ แแกแแแก แแแแก แจแแกแแฎแแ:
soundQube (แงแแคแแแ แกแแแแ แ) แแ แแก แฆแแ แแแแแก แแแแขแคแแ แแ แฃแฌแงแแแขแ แจแแแแฌแแแแแกแ แแ แแแแแก แฎแแ แแกแฎแแก แแแแแแแแกแแแแก.
แแฎแแ แก แฃแญแแ แก แแแแแก แแแแแแแก แแ แจแแชแแแแแแแก แแแแแแแแแแก MISRA C, MISRA C++, MITER/CWE แแ CERT Secure Coding Standards แแ แแแ แแแแ แแแแก แกแขแแแแแ แขแแแแก แฌแแกแแแแก แแแฎแแแแแ. แแแก แแกแแแ แจแแฃแซแแแ แจแแชแแแแแแแก แแแแชแแแแ OWASP แขแแ 10 แแ CWE/SANS แแ แแแ แแแแ แแแแก แขแแ 25 แจแแชแแแแแแแก แกแแแแแ.
แแแแกแแ แแแฃแฎแแแแแแ, แ แแ แแแแขแคแแ แแ แแงแแแแแก แกแฎแแแแแกแฎแแ แแแ แแแกแขแ แฃแแแแขแแแก, SonarQube แแแชแแ แแแก แจแแแแแแแก แแ แ แแแคแแแ, แแแแฎแแแก แแแจแแแแแก แแกแขแแ แแแก แแ แแแแ แกแแจแฃแแแแแแก แแแซแแแแ แแแฎแแ แแ แแแ แแแฃแแ แฃแแ แฃแแแแแงแแคแแก แฎแแ แแกแฎแแก แชแแแแแแแแแแก แแแแแแ แขแแแแแแชแแ แแแแแแแแ แแแแก แแ แแก.
แแแแแขแแแแแ แแแขแแแแแ แจแแแแซแแแแ แแฎแแแแ แแฅ
แแ แแแ แแแแ แแแแก แแแแแแก แแแแ แ แแแแแแแแ แแฎแแ แแแญแแ แแแแ. แแแแกแฏแแแแแ แแแแแ แแแชแแแฃแแ แแแฃแแแแแ แแแฆแแแฃแแ แแแคแแ แแแชแแแก แแแฎแแแแแ, แแก แแ แแก 25-แแ แแแขแ แแแ. แแแแแ แแขแฃแแ แแแแก แแฎแแ แแแกแแญแแ แแ, แแฅแแแ แฃแแแ แแแแแแกแขแแแแ แแ แจแแกแแแแแแกแ แแแแแแแขแ. แกแแแแแแแแแแแก แแแ แกแแ แแแแชแแแก แแแแแแแขแก แกแแแฃแจแแแ Javascript (แแแ แจแแ แแก typeัript), แแฃแแชแ แแแแ แกแแแแ แแกแแแ แแก แแแแแแก. แฃแแแ Javascript แแแแฃแแแก แแแกแฃแฎแแแ SonarJS, Typescript-แแกแแแแก SonarTS แจแแกแแแแแแกแแ.
แแคแแชแแแแฃแ แ แแแแแแขแ แแแแแแงแแแแแ แแแคแแ แแแก แแแคแแ แแแชแแแก แแแกแแแแแแแแ sonarqube-แกแแแแแ แ, แ แแแแแแช, แแแ แแแแขแ แแแแก แแแแแงแแแแแแ config-แคแแแแ, แแแแแแแแก แแ แแแแแชแแแแแก แกแแ แแแ แแ soundQube แจแแแแแแแ แแแแกแแแแแแชแแแกแ แแ แแแ แแแแชแแแกแแแแก.
แแงแแแแแ Javascript แแ แกแแแแแก
แกแแ แแแ แแก แแแแกแแแแแกแแแแแ soundQube แแแกแแ แแแแแแ แแแแแ แ-แแแแแแแแชแแ.
แกแแแแ แ.yaml:
version: '1'
services:
simplesample-sonar:
image: sonarqube:lts
ports:
- 9001:9000
- 9092:9092
network_mode: bridge
แแแจแแแแ:
docker-compose -f sonar.yml up
แแแแก แจแแแแแ soundQube แฎแแแแแกแแฌแแแแแ แแฅแแแแ:
แฏแแ แแ แแ แแก แแ แแแฅแขแแแ แแ แแก แกแแแแ แแแแแแแ. แฉแแแ แแแแแแแกแฌแแ แแแ แแ แกแแขแฃแแชแแแก. แแ แแแแฆแ แแคแแชแแแแฃแ แ แแแแแแแแ แแ แแแฅแขแแกแแแแก VueJS+TS+Jest. แแแแ, แแแแแแ แแแ แกแแแฃแแแ แแแแก:
git clone https://github.com/vuejs/vue-test-utils-typescript-example.git
แฏแแ แแแแแแขแ แฃแแแ แแแแแงแแแแ soundQube, แ แแแแแกแแช แฅแแแ แกแแแแ -แกแแแแแ แแแแแกแแแแก npm แแ แแก แจแแคแฃแแแ:
yarn add sonarqube-scanner
แแ แแแฃแงแแแแแแแแ แแแแแแขแแ แแ แซแแแแแ แกแแ แแแขแแแ แแแกแแแ แแฃแจแแแแ.
package.json:
{
โฆ
scripts: {
...
"sonar": "sonar-scanner"
...
},
โฆ
}
แจแแแแแแ, แกแแแแแ แแก แแฃแจแแแแแกแแแแก, แแฅแแแ แฃแแแ แแแแงแแแแ แแ แแแฅแขแแก แแแ แแแแขแ แแแ แกแแแชแแแแฃแ แคแแแแจแ. แแแแแฌแงแแ แกแแคแฃแซแแแแแแ.
แกแแแแ -แแ แแแฅแขแ.แแแแกแแแแแ:
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 - แแแกแแแแ แแ แกแแแแ แ'A;
- sonar.projectKey - แฃแแแแแแฃแ แ แแ แแแฅแขแแก แแแแแขแแคแแแแขแแ แ แกแแ แแแ แแ แกแแแแ แ'A;
- sonar.projectName โ แแแกแ แกแแฎแแแ, แแก แจแแแซแแแแ แจแแแชแแแแแก แแแแแกแแแแ แแ แแก, แแแแแแแแ แแ แแแฅแขแ แแแแแขแแคแแชแแ แแแฃแแแ แแ แแแฅแขแแก แแแกแแฆแแแ;
- แกแแแแ แ.แฌแงแแ แแแแ โ แกแแฅแแฆแแแแ แฌแงแแ แแแแแ, แฉแแแฃแแแแ แแ แแก src, แแแแ แแ แจแแแซแแแแ แแงแแก แงแแแแแคแแ แ. แแก แกแแฅแแฆแแแแ แแแงแแแแแฃแแแ root แกแแฅแแฆแแแแแกแแแ แจแแแแ แแแแ, แ แแแแแแช แแ แแก แกแแฅแแฆแแแแ, แกแแแแแแแช แกแแแแแ แ แแแจแแแแฃแแแ;
- แกแแแแ แ.แขแแกแขแแแ - แแแ แแแแขแ แ, แ แแแแแแช แแแแแก แฌแแแ แแแ แแแแขแ แแแ. แแก แแ แแก แกแแฅแแฆแแแแ, แกแแแแช แขแแกแขแแแแ แแแแแแแกแแแฃแแ. แแ แแ แแแฅแขแจแ แแกแแแ แกแแฅแแฆแแแแ แแ แแ แกแแแแแก แแ แขแแกแขแ แแแแแแ แแแแก แกแแฅแแฆแแแแแจแ แจแแกแแแแฌแแแแแแ แแแแแแแแแขแแก แแแแ แแแ.แขแแกแขแ', แแกแ แ แแ, แฉแแแ แแ แแ แแแกแแแแก แฃแแฃแแแแแแงแแคแ แแ แแแแแแแงแแแแแ แจแแแแแ แแแ แแแแขแ แก;
- แกแแแแ แ.แขแแกแขแ.แฉแแแแ แแแแ โ แแแฆแแแก แแแแแงแแแแแแ แขแแกแขแแแแก แแแ, แจแแแซแแแแ แแงแแก แ แแแแแแแแ แแแแแแแขแ, แ แแแแแแแช แแแแแงแแคแแแแ แแซแแแแแแแ;
- sonar.sourceEncoding - แแแแแ แแแ แฌแงแแ แ แคแแแแแแแกแแแแก.
แกแแแแแ แแก แแแ แแแแ แแแจแแแแแกแแแแก แงแแแแแคแแ แ แแแแ แแ แแก, แแแ แแ แแแแแแ แ แฌแแแ แแแฅแแแแแแแกแ: แแแแแ แกแแขแแกแขแ แซแ แแแแก แแแจแแแแ, แ แแแ แแแ แจแแซแแแก แแแคแแ แแแชแแแก แแแแแ แแ แแแ แแแคแแ แแแก แจแแกแแฎแแ, แ แแแแแกแแช แกแแแแแ แ แจแแแแแแ แแแแแแงแแแแแก.
แแแแ แแ แแแแกแแแแแก แแฅแแแ แฃแแแ แแแแแแแคแแแฃแ แแ แแ แกแแขแแกแขแ แซแ แแแ แแ แแแคแแ แแแชแแแก แแแแแ แแ แแแแกแแแแก. แแ แแ แแแฅแขแจแ แกแแขแแกแขแ แซแ แแแแ แแ แแ แแก. แแ แแแกแ แแแ แแแแขแ แแแ แแ แแก แคแแแแแก แจแแกแแแแแแก แแแแงแแคแแแแแแจแ แแแแแขแ.json.
แแแแแ แแแแแแแขแแ แแก แแแ แแแแขแ แแแ:
"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 แคแแแแแแก แแ แแแแแ แฌแงแแ แแก แคแแแแแแแกแแแแก แแ แแฌแแ แแแแแก HTML แแแแ แแแแแก แแ แแแแแแแแแก แแแแแ แแ แแแคแแ แแแก แแแคแแ แแแชแแแ. แแแแ แแแแ แแกแแแ แแฅแแแแแ แแแแแแแชแแแก แแแกแแแแแแแแแแแ. Lcov แแฎแแ แก แฃแญแแ แก แกแขแ แแฅแแแแแแก, แคแฃแแฅแชแแแแแก แแ แขแแขแแแแก แแแคแแ แแแก.
แขแแกแขแแแแก แแแกแ แฃแแแแแก แจแแแแแ, แแแคแแ แแแก แแแคแแ แแแชแแ แแแแแแแกแแแแ แแแจแฃแฅแแแ/lcov.info.
แฃแแแ แแแฅแแแ แกแแแแ แ'แกแแแแแ แจแแแแซแแแ แแแกแ แแแฆแแแ? แแแแขแแ, แแแแแ แแแแแแแขแแ แจแแแแแแ แกแขแ แแฅแแแแแ แแแก แแแแคแแแฃแ แแชแแแก แคแแแแจแ. แแแแ แแ แแ แแก แแ แแ แฌแแ แขแแแ: แแ แแแฅแขแแแ แจแแแซแแแแ แแงแแก แแ แแแแแแแแแแแ, แแแฃ แกแแฅแแฆแแแแแจแ src แแ แกแแแแแก แ แแแแแแแแ แแ แแแ แแแแ แแแแก แแแแก แฌแงแแ แแก แแแแ แแ แแแ แแฃ แแ แแแแแแแ แแฃแแแแแแแแ แแ แแแแแก แแฎแ แแ, แแแ แแฃ แแ แแแแฃแแแก แแแแแงแแแแแ แแแแแกแแแฆแแ แแแ แแแกแ แแแคแแ แแแแแแ. แแ แแแคแแ แแแก แจแแกแแฎแแ แแแคแแ แแแชแแแก แจแแแแฎแแ แจแแกแแซแแแแแแแ แกแฎแแแแแกแฎแแ แแแแแแแก แกแฎแแแแแกแฎแแ แแ แแแ แแแแ แแแแก แแแแแแกแแแแก, แแแแขแแ แแแแแแฃแ แแแแก แแฅแแก แกแแแฃแแแ แ แแแแงแแคแแแแแ แแแแก แแแกแแงแแแแแแแ. แฉแแแแ แแ แแแฅแขแ แแงแแแแแก แขแแแแแแแกแ แ แแ, แฉแแแ แแแญแแ แแแแ แแแ แแแแขแ แแแแก แแแแงแแคแแแแแ แแฎแแแแ แแแแกแแแแก:
แกแแแแ -แแ แแแฅแขแ.แแแแกแแแแแ:
sonar.typescript.coveragePlugin=lcov
sonar.typescript.lcov.reportPaths=coverage/lcov.info
แงแแแแแคแแ แ แแแแ แแ แแก แกแแแแแ แแก แแแ แแแแ แแแจแแแแแกแแแแก. แแแแแ แแฆแแแแจแแ, แ แแ แแ แแแฅแขแ แแ แแก แกแแแแ แ'e แแฅแแแแแ แแแขแแแแขแฃแ แแ, แ แแแแกแแช แแแ แแแแแ แแฌแแ แแแแแ แกแแแแแ แก แแแชแแแฃแแ แแ แแแฅแขแแกแแแแก. แจแแแแแแแจแ แแแคแแ แแแชแแ แแแแ แแแแแแ, แ แแแ แแ แแแ แแแแแแแแแแแจแ แแแแแแฎแแก แแ แแแฅแขแแก แแแ แแแแขแ แแแแก แชแแแแแแแแแแก แแแแแแแแ.
แแแจ แแกแ, แแแแแแแงแแแแ แแแ แ แจแแฅแแแแแ แแ แซแแแแแ แแแแแขแ.json:
yarn run sonar
แจแแแแจแแแ: แแฅแแแ แแกแแแ แจแแแแซแแแแ แแแแแแงแแแแ แแแ แแแแขแ แ -X แฃแคแ แ แแแขแแแฃแ แ แจแแกแแแแกแแแแก.
แแฃ แกแแแแแ แ แแแ แแแแแ แแแแฅแแแแแ, แแแจแแ แแแ แแแ แ แแแจแ แฉแแแแแขแแแ แแแแ แแแแแ แกแแแแแ แแก แแแแแ แ. แแแแก แจแแแแแ แแก แแฌแงแแแ แแ แแฌแงแแแก แกแแ แแแ แแก แกแแแแแ แแแแก แกแแแแ แแแแแแกแขแแแแ แแแฃแแ แแแแแแแขแแแแกแแแแก, แ แแแแช แแแแแแแแแแแ แแฎแแ แแแญแแ แแแ แแแ. แแกแแแ แแแขแแแ แแฃแแแ แแแกแ แแฃแจแแแแแก แกแฎแแแแแกแฎแแ แแแ แแแแขแ แ: แฎแแ แแกแฎแแก แแ แแคแแแแแ, แแฅแขแแฃแ แ แฌแแกแแแ, แแแขแ แแแแก แกแแชแแแ, แกแแ แแแ แแก แฌแแกแแแ.
แจแแแแจแแแ: แฉแแแ แแแแแ แแแขแแแฃแ แแ แแ แแแกแแฃแแ แแแ แแ แกแขแแขแแแก แคแแ แแแแแจแ, แแแแ แแ แงแแแแแแแแก แจแแแแซแแแแ แแแฃแแแแจแแ แแแ แแคแแชแแแแฃแ แฌแงแแ แแแแก.
แจแแแแแแ, แแฌแงแแแ แกแแฅแแฆแแแแแก แแแแแแแ src แฌแงแแ แแก แคแแแแแแแก แฎแแแแแกแแฌแแแแแแแแกแแแแก แงแแแแ แแฎแแ แแแญแแ แแแ แแแแกแแแแก (แแฃ แแแแแ แแขแฃแแแ แแ แแ แแก แแแแแแแแฃแแ), แแแแ แจแแแแแแแ แแแแแฅแกแแ แแแแ.
แจแแแแแ แแแแแก แกแฎแแแแแกแฎแแ แกแฎแแ แแแแแแแแแ, แ แแแแแแแแช แแ แกแขแแขแแแจแ แงแฃแ แแแฆแแแแก แแ แแแแแฎแแแแแแ (แแแแแแแแแ, แแแแขแแแแ, แแแแแก แแฃแแแแ แแแแก แแแแแแแแแ แแ แ.แจ.).
แกแแแแแ แแก แแฃแจแแแแแก แแแแแก, แงแแแแ แจแแแ แแแแแฃแแ แแแคแแ แแแชแแ แแ แแแแแแ, แแ แฅแแแแแแ แแ แแแแแแแแแ แกแแ แแแ แแ.
แแแแก แจแแแแแ แฉแแแ แฃแแแ แแฎแแแแแ แ แ แแแฎแแ แแแ แแแขแแ แคแแแกแจแ:
แ แแแแ แช แแฎแแแแแ, แ แแฆแแช แแฃแจแแแแแ แแ แ แแฆแแช แแแจแฃแฅแแแแกแแช แแ แแฉแแแแแแก, แแแแ แแ แแก แแ แแแแฎแแแแ แฉแแแแกแแก แแ แแ แแก- แแแฎแกแแแแแ.
แแแแ แแแแแ แแแแแ. แแแแแ แจแแแฎแแแแ แแ แแแฅแขแก แฃแคแ แ แแแขแแแฃแ แแ, แแแแฌแแแแฃแแแ แแแคแแ แแแก แแแแจแแแแแแแแแ แแ โแแแแแแแ แแแโ แคแแแแแก แแแขแแแฃแ แแแแแ แแจแจแ:
แแฅ แฉแแแ แแฎแแแแแ, แแแ แแ แซแแ แแแแแ, แแแแฎแแแฃแแ แคแแแแแกแ HelloWorld.vue, แแ แแก แคแแแแแช แแแแแแ แ.แช, แ แแช แแคแฃแญแแแก แแแจแฃแฅแแแแก แแแแ แกแฃแ แแแก. แแแแ แแ แ แแแแ แแแแแแ แแชแฎแแ แแก แแแคแแ แแแก แแแแแแแ แแจแแแแแแ. แแแแฎ, แงแแแแแคแแ แ แกแฌแแ แแ, แแแแ แแ แแก แแงแ แแแแแแ แแ แแ แแก, แแแแ แแ แกแแแแแ แแ แแแแฎแแแแ แแแกแ แแแแแฅแกแแ แแแ, แแกแ แ แแ, แแแ แแแกแ แฃแแแ แแแก แแแแแแแแแแจแ.
แแแแแแแกแฌแแ แแ แแก:
แกแแแแ -แแ แแแฅแขแ.แแแแกแแแแแ:
...
sonar.exclusions=src/main.ts
...
แแแแแ แแแแแแฃแกแขแ: แแ แแแ แแแแขแ แจแ แแแแแแแแฃแแ แกแแฅแแฆแแแแแแแแก แแแ แแ, แแแ แแแแขแ แจแ แฉแแแแแแแแแ แงแแแแ แกแแฅแแฆแแแแแช แแแแขแแแ. แกแแแแ แ.แขแแกแขแ.แฉแแแแ แแแแ.
แกแแแแแ แแก แแแจแแแแแก แจแแแแแ แฉแแแ แแฎแแแแแ แกแฌแแ แแแคแแ แแแชแแแก:
แแแแแ แแแแแแฎแแแแ แจแแแแแ แแฃแแฅแขแก - แฎแแ แแกแฎแแก แแ แแคแแแแแ. แแแแแ แแแกแแฃแแ แ แแฎแแ แแแญแแ แแแ แกแแแแ แแ แแแแแแแแ แแแแแ แแ แแแ แแฃแแแ. แแก แแ แแก แแฃแกแขแแ แแก, แ แแกแแช แฉแแแ แแฎแแแแแ. แแแแ แแ แฉแแแ แแแชแแ, แ แแ แฉแแแแ แแ แแแฅแขแ แแแฌแแ แแแแ TSแ แแขแแ แแแซแแแแ แกแแแแแ แ แแ แแกแแญแแ แ แแแแแแฃแแแชแแแแแแ แแ แจแแแแฌแแแแแแแ. แฉแแแ แแแแแงแแแแแ แแแแแแแแก แแแแก แแแแคแแแฃแ แแชแแแก แคแแแแจแ แแแแแ แแ แแ แแแ แแแแขแ แแก แแแแแขแแแแ แกแแแแ แ'A:
แกแแแแ -แแ แแแฅแขแ.แแแแกแแแแแ:
...
sonar.language=ts
...
แแแแแ แแแแแ แแแแฃแจแแแ แกแแแแแ แ แแ แแแแฎแแ แจแแแแแ:
แแแจแฃแฅแแแ แแแแแแแแ แแแฅแ แ.
แแฃ แแแแแแฎแแแแแ แกแแแแแ แแก แแฃแ แแแแก, แแฎแแแแแ แจแแแแแ แฎแแแก:
แแแฃ, แฉแแแแ แแ แแแฅแขแแก แคแแแแแแ แฃแแ แแแแ แแ แแงแ แแแแแฅแกแแ แแแฃแแ.
แกแแขแฃแแชแแ แแกแแแแ: แแคแแชแแแแฃแ แแ แแฎแแ แแแญแแ แแแ VueJs แแ แแก แแแแแแแขแจแ SonarJSแแแแช แแแกแฃแฎแแกแแแแแแแแ Javascript.
แแแแ แแ แแก แแฎแแ แแแญแแ แ แแ แแ แแก แแแแแแแขแจแ SonarTS แแแแกแแแแก TS, แ แแแแแก แจแแกแแฎแแแแช แแคแแชแแแแฃแ แ แแแแแแ แแแแฎแกแแ bug tracker-แจแ แกแแแแ แ'A:
แแฅ แแ แแก แ แแแแแแแแ แแแกแฃแฎแ SonarQube แแแแแแแแแ แแแแก แแ แ-แแ แแ แฌแแ แแแแแแแแแแแกแแแ, แ แแแแแแช แแแแกแขแฃแ แแแก แแ แคแแฅแขแก.
แแแแ แแ แฉแแแแแแ แงแแแแแคแแ แ แแฃแจแแแแแ, แแฅแแแ แฌแแแแแฆแแแแแ แฎแแ แ. แแแแฎ, แแก แแ แแก, แแแแแ, แชแแขแแแ แแชแแแแ "แแแขแแฎแแ".
แแฃ แแ แแก แแฎแแ แแแญแแ แ .แแฃ- แคแแแแแแ แกแแแแ แโแแฐ, แแแจแแ แแแแแ แแชแแแแแแ แแฃแแฎแ แแ แแแก, แ แแ แแแแแฎแแแแก แแกแแแ แขแแแแแ.
แแแแแ แแแแแแแขแแ แแแ แแแแขแ แ:
แกแแแแ -แแ แแแฅแขแ.แแแแกแแแแแ:
...
sonar.typescript.file.suffixes=.ts,.tsx,.vue
...
แแแแแ แแแแฃแจแแแ แกแแแแแ แ:
แแ, แแแแแ, แงแแแแแคแแ แ แแแ แแแแฃแ แแ แแแแ แฃแแแ แแ แแฎแแแแ แแ แแ แแ แแคแแแแ แขแแแแแ. แแแฃ แแฎแแ แแแญแแ แแ แแแแแฎแแ แฎแแ แแ แแแแแแแก แแแแแแ แแแ VueJs + TS แแแแกแแแแก soundQube.
แจแแแแชแแแแ แฃแคแ แ แจแแ แก แฌแแแแแแ แแ แชแแขแ แแแแแฃแแฏแแแแกแแ แแแคแแ แแแก แแแคแแ แแแชแแ.
แ แแช แแฅแแแแ แแแแแแแแแ:
- แแ แแแฅแขแก แแแแแแขแ แกแแแแ แ-แกแแแแแ แ;
- แแฌแงแแแ แแ แแ แแก แแแคแแ แแแก แแแคแแ แแแชแแแก แแแแแ แแ แแแ;
- แแแแคแแแฃแ แแ แแแฃแแ แกแแแแ แ-แกแแแแแ แ;
- แแแแแญแ แ แแฎแแ แแแญแแ แแก แแ แแแแแแ .แแฃ-แคแแแแแแ + แขแแแแแ.
แขแแกแขแแก แแแจแฃแฅแแแแก แแแ แแ, แแ แกแแแแแก แกแฎแแ แกแแแแขแแ แแกแ แกแแกแแ แแแแแ แแ แแขแแ แแฃแแแแ แแแแแก แฎแแ แแกแฎแแกแแแแก, แแแแแแแแแ, แแแแแก แแฃแแแแ แแแ แแ แฎแแแแแแก แ แแแแแแแแ (แฉแแ แแฃแแ แแแแแฅแกแแก แกแแ แแฃแแแกแแแ แแแแแแจแแ แแแฃแแ แแแแคแแชแแแแขแแแแก แแแแแแแแแจแ).
แแแแฃแแแก แแแแแแแแ แ แแแแฎแแ แชแแแแแแแจแ แแฃแจแแแแแกแแแแก TS (SonarTS) แแ แแแฃแจแแแแแก CPD (Copy Paste Detector) แแ แแแแแแก แแแแแก แฎแแแแแก .แแฃ- แคแแแแแแ.
แแแแแก แแฃแแแแ แแแแก แกแแแแแแฃแ แ แกแแขแฃแแชแแแก แจแแกแแฅแแแแแแ, แฃแแ แแแแ แแแแแแแแ แแ แแแแแแแแแขแแก แคแแแแ แกแฎแแ แกแแฎแแแแ แแ แแกแแแ แแแแแแขแแ แแแ แแแแจแ แแแแแแ แ.แช dummy แคแฃแแฅแชแแ แแ แแฃแแแแแแขแ แกแฎแแ แกแแฎแแแแ. แแฃแแแแ แแแแก แจแแกแแแแฌแแแแแแ, แ แแแแ แช แแก .แแฃ, แแ .แฌ - แคแแแแแแ.
main.ts:
...
function name(params:string): void {
console.log(params);
}
...
แแแแกแแแแแก แกแแญแแ แแ แแ แแแแแ แแแแแแขแแ แ แแแแแแแแ แแแแคแแแฃแ แแชแแแก แฎแแแแ:
แกแแแแ -แแ แแแฅแขแ.แแแแกแแแแแ:
...
sonar.exclusions=src/main.ts
...
แแแแแ แแแแแขแแแ แแแ แกแแแแแ แ แขแแกแขแแ แแแแกแแแ แแ แแแ:
yarn test && yarn run sonar
แ แ แแฅแแ แฃแแแ, แฉแแแแ แแแจแฃแฅแแแ แแแแชแแแ, แแแแ แแ แแฎแแ แแก แแ แแแแแแขแแ แแกแแแก.
แแแแแก แฎแแแแแแก แแฃแแแแ แแแแก แแแแแกแแแ แแกแแ, แฉแแแ แแแแฎแแแ:
แจแแกแแแแฌแแแแแแ แแแแแแแงแแแแแ CPD- แกแแกแแ แแแแแ - jscpd:
npx jscpd src
แแแแแก แฎแแแแแแกแแแแก:
แจแแกแแซแแแ, แแก แแแแแแ แแแก แแแแฃแแแก แแแแแแแ แแแ แกแแแแจแ SonarJS (TS). แแแแแ แแฆแแแแจแแ, แ แแ แแกแแแ แแแแแแแแ แแฌแงแแแแ แแ แแ แ แแแแฃแแแก แแ แแจแ แแแแ แแแแแแแแก SonarJS, แ แแช แฉแแแ แแแ แแ แกแฌแแ แแ.
แแฎแแ แแแแแแแ แแแแแแฎแแแ แแแคแแ แแแก แแแคแแ แแแชแแแก แแแฃแแฏแแแแกแแแแก แแแ แแแแขแ.
แฏแแ แฏแแ แแแแ แฉแแแ แจแแแแแซแแแ แแแแฎแแ แขแแกแขแแก แแแจแฃแฅแแแ แแ แแชแแแขแฃแแ แแแแแกแแแ แแกแแ แแแแแ แแ แแแฅแขแแกแแแแก แแ แแแ แซแแ แคแแแแแแแกแแแแก. แแแแ แแ แแ แแแแแแแขแแ แแก แแแคแแ แแแแแ แจแแกแแซแแแแแแแ แ แแแแแแแแแก แจแแกแแฎแแ แแแคแแ แแแชแแแ แแ แแแฃแแแก-แขแแกแขแแแ แแ แแแฅแขแแกแแแแก, แแกแแแ แคแแแแแแแก แแแแขแแฅแกแขแจแ.
แแ แแก แแแแแแแแแแ, แ แแแแแกแแช แจแแฃแซแแแ แแ แแ แแก- แแแฎแกแแแแแแก แคแแ แแแขแจแ แแแแแงแแแแ แกแแแแ แ'A:
แแแแแแ แขแแกแขแแก แแแแแชแแแแแ -
แแแแแ แแแแแงแแแแ แแก แแแแแแแแแแ แฉแแแแก แแ แแแฅแขแจแ:
yarn add jest-sonar-reporter
แแ แแแแแแขแแ แแแ แแแแคแแแฃแ แแชแแแจแ แแ แแ แแก:
package.json:
โฆ
"testResultsProcessor": "jest-sonar-reporter"
โฆ
แแฎแแ แฉแแแแขแแ แแ แขแแกแขแ:
yarn test
แ แแก แจแแแแแแแช แจแแแฅแแแแแ แคแแแแ แแ แแแฅแขแแก root-แจแ test-report.xml.
แแแแแ แแแแแแแงแแแแ แแแ แแแแคแแแฃแ แแชแแแจแ แกแแแแ แ'A:
แกแแแแ -แแ แแแฅแขแ.แแแแกแแแแแ:
โฆ
sonar.testExecutionReportPaths=test-report.xml
โฆ
แแ แแแแแขแแแ แแแ แกแแแแแ แ:
yarn run sonar
แแแแฎแแ, แ แ แจแแแชแแแแ แแแขแแ แคแแแกแจแ แกแแแแ แ'A:
แแ แแ แแคแแ แ แจแแชแแแแแ. แคแแฅแขแแ, แ แแ Sonar แแ แแแแแฎแแแแแก Jest แแแแแ แแจแจแ แแฆแฌแแ แแ แคแแแแแแก แคแแแแแแแ แแ แแแฃแแแก- แขแแกแขแแแ. แแ แกแแขแฃแแชแแแก แแแแแกแแกแฌแแ แแแแแ, แฉแแแ แแแงแแแแแ แแแแคแแแฃแ แแชแแแก แแแ แแแแขแ แก แกแแแแ แ แกแแแแ แ.แขแแกแขแแแ, แ แแแแแจแแช แชแแแกแแฎแแ แแแแฃแแแแแแ แกแแฅแแฆแแแแแแแก แขแแกแขแแแแ (แแแแแแแ แแฎแแแแ แแ แแ แแแแฅแแก):
แกแแแแ -แแ แแแฅแขแ.แแแแกแแแแแ:
โฆ
sonar.tests=src/components/__tests__
โฆ
แแแแแ แแแแแขแแแ แแแ แกแแแแแ แ:
yarn run sonar
แแแแฎแแ, แ แ แจแแแชแแแแ แแแขแแ แคแแแกแจแ:
แแฎแแ แฉแแแ แแแแฎแแ แฉแแแแ แ แแชแฎแแ แแ แแแฃแแแก-แขแแกแขแแแ แแ, แจแแ แแแฌแแแแฃแแแแแ แฉแแแแ แแแแก แจแแแแแ, แฉแแแ แจแแแแแซแแแ แแแแแแแฎแแ แแ แ แแชแฎแแแก แแแแแฌแแแแแ แแ แแแฅแขแแก แคแแแแแแก แจแแ แแก:
แแแกแแแแ
แแกแ แ แแ, แฉแแแ แจแแแฎแแแแ แฃแฌแงแแแขแ แแแแแแแแก แแแกแขแ แฃแแแแขแก soundQube. แฉแแแ แฌแแ แแแขแแแแ แฉแแแ แแแ แแแกแจแ แแแฌแแ แแแ แแ แแแฅแขแ VueJs + TS. แแแคแแฅแกแแ แแ แแแแกแแแแแแแแก แแแแแแ แแ แแ แแแแแแ. แฉแแแ แแแแแแ แแแ แขแแกแขแแก แแแคแแ แแแก แแแแแแแขแแ แแก แกแแแแคแแ แแแชแแ แจแแแแแ แกแ. แแ แกแขแแขแแแจแ แฉแแแ แแแแแแฎแแแแ แแแแแก แฎแแ แแกแฎแแก แแฎแแแแ แแ แแ แแ แแขแแ แแฃแแ (แจแแกแแซแแแ แแ แ-แแ แแ แแแแแแ แ), แแแแ แแ soundQube แแฎแแ แก แฃแญแแ แก แฎแแ แแกแฎแแก แกแฎแแ แแ แแขแแ แแฃแแแแก, แแแ แจแแ แแก แฃแกแแคแ แแฎแแแแแก แขแแกแขแแ แแแแก. แแแแ แแ แงแแแแ แแก แคแฃแแฅแชแแ แกแ แฃแแแ แแ แแ แแก แฎแแแแแกแแฌแแแแแ แกแแแแแแแแแแแก- แแแ แกแแแแ. แแ แ-แแ แแ แกแแแแขแแ แแกแ แแ แกแแกแแ แแแแแ แคแฃแแฅแชแแแ แแแขแแแ แแชแแ soundQube แกแฎแแแแแกแฎแแ แแแแแก แกแแชแแแแก แแแ แแแแก แกแแกแขแแแแแแ, แ แแแแ แแชแแ GitLab แแ BitBucket. แฒแแแแแแ แแกแแชแแแแแแแ แจแแ แฌแงแแแก pull (แจแแ แฌแงแแแก) แแแแฎแแแแ'a แกแแชแแแแก แแแแแแ แคแแแแแแจแ, แ แแแแกแแช แแแคแแ แแ แแแแ แแแแ แแแฃแแแ. แแแแ แแ แแก แแ แแก แแแแแแ แกแ แฃแแแแ แแแแกแฎแแแแแแฃแแ แกแขแแขแแแกแแแแก.
PS: แงแแแแแคแแ แ, แ แแช แกแขแแขแแแจแ แแฆแฌแแ แแแแ แแแแแก แกแแฎแแ, แฎแแแแแกแแฌแแแแแแ
แแแแแแแแฎแแแจแ แแแแแฌแแแแแแ แจแแฃแซแแแแ แแฎแแแแ แแแ แแแแกแขแ แแ แแแฃแ แแแแฎแแแ แแแแแแก.
แแงแแแแแ แแฃ แแ แ SonarQube แแแแขแคแแ แแแก:
-
26,3%แแแแฎ 5
-
15,8%No3
-
15,8%แแแแแแ แแ แแแแขแคแแ แแแก แจแแกแแฎแแ แแ แแแแแ แแแแแแแงแแแ3
-
10,5%แแ แแกแแแแแ แแ แแแแขแคแแ แแแก แจแแกแแฎแแ แแ แแ แแแแแ แแแแแแแงแแแ2
-
0,0%แแ แแแงแแแแ แกแฎแแ แแแแขแคแแ แแแก0
-
31,6%แแแ แแแแแ แแแแแแ แแแก แจแแกแแฎแแ6
แแแกแชแ แฎแแ 19 แแแแฎแแแ แแแแแแ. 3 แแแแฎแแแ แแแแแแ แแแแ แจแแแแแแ.
แฌแงแแ แ: www.habr.com