āĻāĻŽāĻ°āĻž āĻ¸āĻā§āĻ°āĻŋāĻ¯āĻŧāĻāĻžāĻŦā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻžāĻā§ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻāĻĢāĻ°ā§āĻŽ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŋ āĻ¸ā§āĻ¨āĻžāĻ°āĻāĻŋāĻāĻŦ āĻāĻāĻāĻŋ āĻāĻā§āĻ āĻ¸ā§āĻ¤āĻ°ā§ āĻā§āĻĄ āĻŽāĻžāĻ¨ āĻŦāĻāĻžāĻ¯āĻŧ āĻ°āĻžāĻāĻž. āĻ˛āĻŋāĻāĻŋāĻ¤ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒāĻā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻāĻāĻŋāĻā§ āĻ¸āĻāĻšāĻ¤ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ VueJs+āĻāĻžāĻāĻĒāĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ, āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻĻā§āĻāĻž āĻĻāĻŋāĻ¯āĻŧā§āĻā§āĨ¤ āĻ āĻ¤āĻāĻŦ, āĻāĻŽāĻŋ āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻ°āĻ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤āĻāĻžāĻŦā§ āĻŦāĻ˛āĻ¤ā§ āĻāĻžāĻ āĻāĻŋāĻāĻžāĻŦā§ āĻāĻŽāĻ°āĻž āĻ¸ā§āĻā§āĻ˛āĻŋ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻāĻ°āĻ¤ā§ āĻĒā§āĻ°ā§āĻāĻŋāĨ¤
āĻāĻ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§ āĻāĻŽāĻ°āĻž āĻāĻĨāĻž āĻŦāĻ˛āĻŦ, āĻ¯ā§āĻŽāĻ¨āĻāĻŋ āĻāĻŽāĻŋ āĻāĻĒāĻ°ā§ āĻ˛āĻŋāĻā§āĻāĻŋ, āĻ¸ā§āĻ¨āĻžāĻ°āĻāĻŋāĻāĻŦ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻāĻĢāĻ°ā§āĻŽ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§āĨ¤ āĻāĻāĻāĻŋ āĻā§āĻ āĻ¤āĻ¤ā§āĻ¤ā§āĻŦ - āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻāĻžāĻŦā§ āĻāĻāĻŋ āĻā§, āĻ¯āĻžāĻ°āĻž āĻĒā§āĻ°āĻĨāĻŽāĻŦāĻžāĻ° āĻāĻāĻŋ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻļā§āĻ¨āĻā§āĻ¨ āĻ¤āĻžāĻĻā§āĻ° āĻāĻ¨ā§āĻ¯:
āĻ¸ā§āĻ¨āĻžāĻ°āĻāĻŋāĻāĻŦ (āĻ¸āĻžāĻŦā§āĻ āĻ¸ā§āĻ¨āĻžāĻ°) āĻā§āĻ°āĻŽāĻžāĻāĻ¤ āĻĒāĻ°āĻŋāĻĻāĻ°ā§āĻļāĻ¨ āĻāĻŦāĻ āĻā§āĻĄ āĻā§āĻŖāĻŽāĻžāĻ¨ āĻĒāĻ°āĻŋāĻŽāĻžāĻĒā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻāĻĒā§āĻ¨ āĻ¸ā§āĻ°ā§āĻ¸ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻāĻĢāĻ°ā§āĻŽāĨ¤
MISRA C, MISRA C++, MITER/CWE āĻāĻŦāĻ CERT āĻ¸āĻŋāĻāĻŋāĻāĻ° āĻā§āĻĄāĻŋāĻ āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽāĻŋāĻ āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄā§āĻ° āĻ¨āĻŋāĻ¯āĻŧāĻŽ āĻ āĻ¨ā§āĻ¯āĻžāĻ¯āĻŧā§ āĻā§āĻĄ āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖ āĻāĻŦāĻ āĻ¤ā§āĻ°ā§āĻāĻŋ āĻ¸āĻ¨āĻžāĻā§āĻ¤āĻāĻ°āĻŖ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻāĻ°ā§āĨ¤ āĻāĻāĻŋ OWASP āĻļā§āĻ°ā§āĻˇ 10 āĻāĻŦāĻ CWE/SANS āĻļā§āĻ°ā§āĻˇ 25 āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽāĻŋāĻ āĻ¤ā§āĻ°ā§āĻāĻŋāĻ° āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻĨā§āĻā§āĻ āĻ¤ā§āĻ°ā§āĻāĻŋ āĻ¸āĻ¨āĻžāĻā§āĻ¤ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
āĻĒā§āĻ˛ā§āĻ¯āĻžāĻāĻĢāĻ°ā§āĻŽā§ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻ°ā§āĻĄāĻŋāĻŽā§āĻĄ āĻā§āĻ˛āĻ¸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻ¸āĻ¤ā§āĻ¤ā§āĻŦā§āĻ, āĻ¸ā§āĻ¨āĻžāĻ°āĻāĻŋāĻāĻŦ āĻĢāĻ˛āĻžāĻĢāĻ˛āĻā§ āĻāĻāĻ āĻĄā§āĻ¯āĻžāĻļāĻŦā§āĻ°ā§āĻĄā§ āĻāĻŽāĻŋāĻ¯āĻŧā§ āĻĻā§āĻ¯āĻŧ, āĻ°āĻžāĻ¨ā§āĻ° āĻāĻ¤āĻŋāĻšāĻžāĻ¸ āĻŦāĻāĻžāĻ¯āĻŧ āĻ°āĻžāĻā§ āĻāĻŦāĻ āĻāĻ° āĻĢāĻ˛ā§ āĻāĻĒāĻ¨āĻžāĻā§ āĻŦāĻŋāĻāĻžāĻļā§āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ¸āĻĢā§āĻāĻāĻ¯āĻŧā§āĻ¯āĻžāĻ° āĻŽāĻžāĻ¨ā§āĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ā§āĻ° āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻĒā§āĻ°āĻŦāĻŖāĻ¤āĻž āĻĻā§āĻāĻ¤ā§ āĻĻā§āĻ¯āĻŧāĨ¤
āĻāĻ°ā§ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤ āĻĒāĻžāĻāĻ¯āĻŧāĻž āĻ¯āĻžāĻŦā§ āĻāĻāĻžāĻ¨ā§
āĻĒā§āĻ°āĻā§āĻ° āĻ¸āĻāĻā§āĻ¯āĻ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽāĻŋāĻ āĻāĻžāĻˇāĻž āĻ¸āĻŽāĻ°ā§āĻĨāĻŋāĻ¤āĨ¤ āĻāĻĒāĻ°ā§āĻ° āĻ˛āĻŋāĻā§āĻ āĻĨā§āĻā§ āĻĒāĻžāĻāĻ¯āĻŧāĻž āĻ¤āĻĨā§āĻ¯ āĻŦāĻŋāĻāĻžāĻ° āĻāĻ°ā§, āĻāĻā§āĻ˛āĻŋ 25āĻāĻŋāĻ°āĻ āĻŦā§āĻļāĻŋ āĻāĻžāĻˇāĻžāĨ¤ āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻžāĻˇāĻž āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻĒāĻ¨āĻžāĻā§ āĻ āĻŦāĻļā§āĻ¯āĻ āĻāĻĒāĻ¯ā§āĻā§āĻ¤ āĻĒā§āĻ˛āĻžāĻāĻāĻ¨ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻ¸āĻŽā§āĻĒā§āĻ°āĻĻāĻžāĻ¯āĻŧ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖā§ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻĒā§āĻ˛āĻžāĻāĻāĻ¨ āĻ°āĻ¯āĻŧā§āĻā§ā§ˇ āĻāĻžāĻāĻžāĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ (typeŅript āĻ¸āĻš), āĻ¯āĻĻāĻŋāĻ āĻāĻāĻāĻŋ āĻŦāĻ˛āĻā§ āĻŦāĻŋāĻĒāĻ°ā§āĻ¤āĨ¤ āĻĒāĻŋāĻāĻ¨ā§ āĻāĻžāĻāĻžāĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻĒā§āĻ˛āĻžāĻāĻāĻ¨ āĻāĻ¤ā§āĻ¤āĻ° āĻ¸ā§āĻ¨āĻžāĻ°āĻā§āĻāĻ¸, āĻāĻžāĻāĻĒāĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸ā§āĻ¨āĻžāĻ°āĻāĻŋāĻāĻ¸ āĻ¯āĻĨāĻžāĻā§āĻ°āĻŽā§āĨ¤
āĻ āĻĢāĻŋāĻ¸āĻŋāĻ¯āĻŧāĻžāĻ˛ āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻ āĻāĻāĻžāĻ°ā§āĻ āĻ¤āĻĨā§āĻ¯ āĻĒāĻžāĻ āĻžāĻ¤ā§ āĻŦā§āĻ¯āĻŦāĻšā§āĻ¤ āĻšāĻ¯āĻŧ āĻ¸ā§āĻ¨āĻžāĻ°āĻāĻŋāĻāĻŦ-āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨āĻžāĻ°, āĻ¯āĻž, āĻĨā§āĻā§ āĻ¸ā§āĻāĻŋāĻāĻ¸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻ¨āĻĢāĻŋāĻ-āĻĢāĻžāĻāĻ˛, āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§ āĻāĻ āĻĄā§āĻāĻž āĻĒāĻžāĻ āĻžāĻ¯āĻŧ āĻ¸ā§āĻ¨āĻžāĻ°āĻāĻŋāĻāĻŦ āĻāĻ°āĻ āĻāĻāĻ¤ā§āĻ°ā§āĻāĻ°āĻŖ āĻāĻŦāĻ āĻāĻāĻ¤ā§āĻ°ā§āĻāĻ°āĻŖā§āĻ° āĻāĻ¨ā§āĻ¯āĨ¤
āĻĨā§āĻā§ āĻāĻžāĻāĻžāĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻšāĻ˛
āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻ¤ā§ āĻ¸ā§āĻ¨āĻžāĻ°āĻāĻŋāĻāĻŦ āĻāĻ° āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻ¨ā§āĻāĻ¯āĻŧāĻž āĻ¯āĻžāĻ Docker-āĻ°āĻāĻ¨āĻž.
āĻ¸ā§āĻ¨āĻžāĻ°.āĻāĻ¯āĻŧāĻžāĻŽāĻ˛:
version: '1'
services:
simplesample-sonar:
image: sonarqube:lts
ports:
- 9001:9000
- 9092:9092
network_mode: bridge
āĻļā§āĻ°ā§ āĻāĻ°āĻž:
docker-compose -f sonar.yml up
āĻāĻ āĻĒāĻ°ā§ āĻ¸ā§āĻ¨āĻžāĻ°āĻāĻŋāĻāĻŦ āĻāĻāĻžāĻ¨ā§ āĻāĻĒāĻ˛āĻŦā§āĻ§ āĻšāĻŦā§:
āĻāĻāĻŋāĻ¤ā§ āĻāĻāĻ¨āĻ āĻā§āĻ¨āĻ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒ āĻ¨ā§āĻ āĻāĻŦāĻ āĻāĻāĻŋ āĻ¨ā§āĻ¯āĻžāĻ¯ā§āĻ¯āĨ¤ āĻāĻŽāĻ°āĻž āĻāĻ āĻĒāĻ°āĻŋāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋ āĻ¸āĻāĻļā§āĻ§āĻ¨ āĻāĻ°āĻŦāĨ¤ āĻāĻŽāĻŋ āĻāĻ¨ā§āĻ¯ āĻ
āĻĢāĻŋāĻ¸āĻŋāĻ¯āĻŧāĻžāĻ˛ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒ āĻā§āĻ°āĻšāĻŖ VueJS+TS+Jest. āĻāĻ¸ā§āĻ¨ āĻāĻāĻŋ āĻ¨āĻŋāĻā§āĻĻā§āĻ° āĻĻāĻŋāĻā§ āĻŦāĻžāĻāĻāĻžāĻ¨ā§ āĻ¯āĻžāĻ:
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.sources - āĻāĻ¤ā§āĻ¸ āĻ¸āĻš āĻĢā§āĻ˛ā§āĻĄāĻžāĻ°, āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻāĻāĻŋ src, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻŋāĻā§ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻāĻ āĻĢā§āĻ˛ā§āĻĄāĻžāĻ°āĻāĻŋ āĻ°ā§āĻ āĻĢā§āĻ˛ā§āĻĄāĻžāĻ°ā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻĒā§āĻā§āĻˇāĻŋāĻ āĻ¸ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§, āĻ¯ā§ āĻĢā§āĻ˛ā§āĻĄāĻžāĻ°āĻāĻŋ āĻĨā§āĻā§ āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨āĻžāĻ° āĻāĻžāĻ˛ā§ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§;
- āĻ¸ā§āĻ¨āĻžāĻ°.āĻĒāĻ°ā§āĻā§āĻˇāĻž - āĻāĻāĻāĻŋ āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋ āĻ¯āĻž āĻāĻā§āĻ°āĻāĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻŽāĻŋāĻ˛ā§ āĻ¯āĻžāĻ¯āĻŧāĨ¤ āĻāĻāĻŋ āĻ¸ā§āĻ āĻĢā§āĻ˛ā§āĻĄāĻžāĻ° āĻ¯ā§āĻāĻžāĻ¨ā§ āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻā§āĻ˛āĻŋ āĻ āĻŦāĻ¸ā§āĻĨāĻŋāĻ¤āĨ¤ āĻāĻ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§, āĻāĻ āĻ§āĻ°āĻ¨ā§āĻ° āĻā§āĻ¨ āĻĢā§āĻ˛ā§āĻĄāĻžāĻ° āĻ¨ā§āĻ, āĻāĻŦāĻ āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻāĻŋ āĻĢā§āĻ˛ā§āĻĄāĻžāĻ°ā§ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻž āĻāĻĒāĻžāĻĻāĻžāĻ¨ā§āĻ° āĻĒāĻžāĻļā§ āĻ āĻŦāĻ¸ā§āĻĨāĻŋāĻ¤āĨ¤āĻĒāĻ°ā§āĻā§āĻˇāĻž', āĻ¤āĻžāĻ āĻāĻŽāĻ°āĻž āĻāĻĒāĻžāĻ¤āĻ¤ āĻāĻāĻŋ āĻāĻĒā§āĻā§āĻˇāĻž āĻāĻ°āĻŦ āĻāĻŦāĻ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŦ;
- sonar.test.inclusion - āĻāĻāĻāĻŋ āĻŽā§āĻā§āĻļ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĒāĻĨ, āĻāĻŽāĻž āĻĻā§āĻŦāĻžāĻ°āĻž āĻŦāĻŋāĻāĻā§āĻ¤ āĻ¤āĻžāĻ˛āĻŋāĻāĻžāĻā§āĻā§āĻ¤ āĻŦā§āĻļ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻāĻĒāĻžāĻĻāĻžāĻ¨ āĻĨāĻžāĻāĻ¤ā§ āĻĒāĻžāĻ°ā§;
- sonar.source āĻāĻ¨āĻā§āĻĄāĻŋāĻ - āĻā§āĻ¸ āĻĢāĻžāĻāĻ˛ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ¨āĻā§āĻĄāĻŋāĻāĨ¤
āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨āĻžāĻ°āĻāĻŋāĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻ˛āĻā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯, āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻĒā§āĻ°ā§āĻŦāĻŦāĻ°ā§āĻ¤ā§ āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻŦā§āĻ¯āĻ¤ā§āĻ¤ āĻ¸āĻŦāĻāĻŋāĻā§ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤: āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻā§āĻāĻŋāĻ¨ āĻ¨āĻŋāĻā§āĻ āĻāĻžāĻ˛ā§ āĻāĻ°āĻž, āĻ¯āĻžāĻ¤ā§ āĻāĻāĻŋ āĻāĻāĻžāĻ°ā§āĻ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻ¤āĻĨā§āĻ¯ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§, āĻ¯āĻž āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨āĻžāĻ° āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§āĻ¤ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŦā§āĨ¤
āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻāĻŋ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻ āĻ¤āĻĨā§āĻ¯ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻā§āĻāĻŋāĻ¨ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻāĻ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§, āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻā§āĻāĻŋāĻ¨ āĻšāĻ¯āĻŧ āĻ āĻžāĻā§āĻāĻž. āĻāĻŦāĻ āĻāĻ° āĻ¸ā§āĻāĻŋāĻāĻ¸ āĻĢāĻžāĻāĻ˛ā§āĻ° āĻ¸āĻāĻļā§āĻ˛āĻŋāĻˇā§āĻ āĻŦāĻŋāĻāĻžāĻā§ āĻ°āĻ¯āĻŧā§āĻā§ package.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 āĻāĻāĻāĻŋ āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āĻāĻāĻāĻŋāĻ˛āĻŋāĻāĻŋ āĻšāĻŋāĻ¸ā§āĻŦā§ āĻāĻ¸ā§āĨ¤
Lcov - gcov āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻā§āĻ°āĻžāĻĢāĻŋāĻāĻžāĻ˛ āĻāĻ¨ā§āĻāĻžāĻ°āĻĢā§āĻ¸āĨ¤ āĻāĻāĻŋ āĻāĻāĻžāĻ§āĻŋāĻ āĻā§āĻ¸ āĻĢāĻžāĻāĻ˛ā§āĻ° āĻāĻ¨ā§āĻ¯ gcov āĻĢāĻžāĻāĻ˛āĻā§āĻ˛āĻŋāĻā§ āĻāĻāĻ¤ā§āĻ°āĻŋāĻ¤ āĻāĻ°ā§ āĻāĻŦāĻ āĻā§āĻĄ āĻāĻŦāĻ āĻāĻāĻžāĻ°ā§āĻ āĻ¤āĻĨā§āĻ¯ āĻ¸āĻš HTML āĻĒā§āĻˇā§āĻ āĻžāĻā§āĻ˛āĻŋāĻ° āĻāĻāĻāĻŋ āĻ¸ā§āĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĨ¤ āĻ¨ā§āĻāĻŋāĻā§āĻļāĻ¨ āĻ¸āĻšāĻ āĻāĻ°āĻ¤ā§ āĻĒā§āĻˇā§āĻ āĻžāĻā§āĻ˛āĻŋāĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ Lcov āĻ¸ā§āĻā§āĻ°āĻŋāĻ, āĻĢāĻžāĻāĻļāĻ¨ āĻāĻŦāĻ āĻļāĻžāĻāĻžāĻ° āĻāĻāĻžāĻ°ā§āĻ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻāĻ°ā§āĨ¤
āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻā§āĻ˛āĻŋ āĻ¸āĻŽā§āĻĒāĻ¨ā§āĻ¨ āĻšāĻāĻ¯āĻŧāĻžāĻ° āĻĒāĻ°ā§, āĻāĻāĻžāĻ°ā§āĻ āĻ¤āĻĨā§āĻ¯ āĻāĻāĻžāĻ¨ā§ āĻ
āĻŦāĻ¸ā§āĻĨāĻŋāĻ¤ āĻšāĻŦā§ coverage/lcov.info.
āĻāĻŽāĻžāĻĻā§āĻ° āĻŦāĻ˛āĻž āĻĻāĻ°āĻāĻžāĻ° āĻ¸ā§āĻ¨āĻžāĻ°'āĻāĻŽāĻŋ āĻāĻāĻž āĻā§āĻĨāĻž āĻĨā§āĻā§ āĻĒā§āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ? āĻ
āĻ¤āĻāĻŦ, āĻāĻ° āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĢāĻžāĻāĻ˛ā§ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻ˛āĻžāĻāĻ¨ āĻ¯ā§āĻ āĻāĻ°āĻž āĻ¯āĻžāĻāĨ¤ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻāĻāĻŋ āĻŦāĻŋāĻ¨ā§āĻĻā§ āĻāĻā§: āĻĒā§āĻ°āĻāĻ˛ā§āĻĒ āĻŦāĻšā§āĻāĻžāĻˇāĻŋāĻ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§, āĻ¯ā§, āĻĢā§āĻ˛ā§āĻĄāĻžāĻ°ā§ src āĻŦā§āĻļ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽāĻŋāĻ āĻāĻžāĻˇāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ¸ā§āĻ°ā§āĻ¸ āĻā§āĻĄ āĻ°āĻ¯āĻŧā§āĻā§ āĻāĻŦāĻ āĻāĻ āĻŦāĻž āĻ
āĻ¨ā§āĻ¯āĻāĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻāĻ¯ā§āĻā§āĻ¤āĻŋ āĻ°āĻ¯āĻŧā§āĻā§ āĻāĻŦāĻ āĻāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§, āĻāĻ āĻŦāĻž āĻ
āĻ¨ā§āĻ¯ āĻĒā§āĻ˛āĻžāĻāĻāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ¤āĻžāĻ° āĻāĻā§āĻ¸āĻā§āĻ¨āĻļāĻ¨ āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŋāĻ¤ āĻšāĻ¯āĻŧāĨ¤ āĻāĻŦāĻ āĻāĻāĻžāĻ°ā§āĻ āĻ¤āĻĨā§āĻ¯ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽāĻŋāĻ āĻāĻžāĻˇāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻāĻžāĻ¯āĻŧāĻāĻžāĻ¯āĻŧ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§, āĻ¤āĻžāĻ āĻāĻāĻŋ āĻ¸ā§āĻ āĻāĻĒ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻāĻžāĻˇāĻžāĻ° āĻ¨āĻŋāĻāĻ¸ā§āĻŦ āĻŦāĻŋāĻāĻžāĻ āĻ°āĻ¯āĻŧā§āĻā§āĨ¤ āĻāĻŽāĻžāĻĻā§āĻ° āĻĒā§āĻ°āĻāĻ˛ā§āĻĒ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻžāĻāĻĒāĻ°āĻžāĻāĻāĻžāĻ°ā§ āĻŽā§āĻĻā§āĻ°āĻŋ, āĻ¤āĻžāĻ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻāĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ¸ā§āĻāĻŋāĻāĻ¸ āĻŦāĻŋāĻāĻžāĻ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨:
sonar-project.properties:
sonar.typescript.coveragePlugin=lcov
sonar.typescript.lcov.reportPaths=coverage/lcov.info
āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨āĻžāĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻ˛āĻā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻŦāĻāĻŋāĻā§ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤āĨ¤ āĻāĻŽāĻŋ āĻ˛āĻā§āĻˇā§āĻ¯ āĻāĻ°āĻ¤ā§ āĻāĻžāĻ āĻ¯ā§ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒāĻāĻŋ āĻ¸ā§āĻ¨āĻžāĻ°'e āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧāĻāĻžāĻŦā§ āĻ¤ā§āĻ°āĻŋ āĻšāĻ¯āĻŧ āĻ¯āĻāĻ¨ āĻāĻĒāĻ¨āĻŋ āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻĻāĻ¤ā§āĻ¤ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻĨāĻŽāĻŦāĻžāĻ° āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨āĻžāĻ° āĻāĻžāĻ˛āĻžāĻ¨āĨ¤ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻ¸āĻŽāĻ¯āĻŧā§, āĻ¸āĻŽāĻ¯āĻŧā§āĻ° āĻ¸āĻžāĻĨā§ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§āĻ° āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ°ā§ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ā§āĻ° āĻāĻ¤āĻŋāĻļā§āĻ˛āĻ¤āĻž āĻĻā§āĻāĻ¤ā§ āĻ¤āĻĨā§āĻ¯ āĻ¸āĻāĻā§āĻ°āĻš āĻāĻ°āĻž āĻšāĻŦā§āĨ¤
āĻ¸ā§āĻ¤āĻ°āĻžāĻ, āĻāĻā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻ¯āĻžāĻ package.json:
yarn run sonar
āĻĻā§āĻ°āĻˇā§āĻāĻŦā§āĻ¯: āĻāĻĒāĻ¨āĻŋ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ -X āĻāĻ°ā§ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤ āĻ˛āĻāĻŋāĻ āĻāĻ¨ā§āĻ¯.
āĻ¯āĻĻāĻŋ āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨āĻžāĻ°āĻāĻŋ āĻĒā§āĻ°āĻĨāĻŽāĻŦāĻžāĻ°ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻžāĻ˛ā§ āĻāĻ°āĻž āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻšāĻ˛ā§ āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨āĻžāĻ°ā§āĻ° āĻŦāĻžāĻāĻ¨āĻžāĻ°āĻŋāĻāĻŋ āĻĒā§āĻ°āĻĨāĻŽā§ āĻĄāĻžāĻāĻ¨āĻ˛ā§āĻĄ āĻāĻ°āĻž āĻšāĻŦā§āĨ¤ āĻāĻ° āĻĒāĻ°ā§ āĻāĻāĻŋ āĻļā§āĻ°ā§ āĻšāĻ¯āĻŧ āĻāĻŦāĻ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ āĻāĻ°āĻž āĻļā§āĻ°ā§ āĻāĻ°ā§ āĻ¸ā§āĻ¨āĻžāĻ°'āĻāĻāĻāĻŋ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻž āĻĒā§āĻ˛āĻžāĻāĻāĻ¨āĻā§āĻ˛āĻŋāĻ° āĻāĻ¨ā§āĻ¯, āĻ¯āĻžāĻ° āĻĢāĻ˛ā§ āĻ¸āĻŽāĻ°ā§āĻĨāĻŋāĻ¤ āĻāĻžāĻˇāĻž āĻāĻŖāĻ¨āĻž āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻāĻ° āĻ āĻĒāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋāĻ āĻ˛ā§āĻĄ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§: āĻā§āĻŖāĻŽāĻžāĻ¨ āĻĒā§āĻ°ā§āĻĢāĻžāĻāĻ˛, āĻ¸āĻā§āĻ°āĻŋāĻ¯āĻŧ āĻ¨āĻŋāĻ¯āĻŧāĻŽ, āĻŽā§āĻā§āĻ°āĻŋāĻā§āĻ¸ āĻ¸āĻāĻā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛, āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻ¨āĻŋāĻ¯āĻŧāĻŽ.
āĻĻā§āĻ°āĻˇā§āĻāĻŦā§āĻ¯: āĻāĻŽāĻ°āĻž āĻāĻ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§āĻ° āĻāĻžāĻ āĻžāĻŽā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤āĻāĻžāĻŦā§ āĻ¤āĻžāĻĻā§āĻ° āĻāĻĒāĻ° āĻŦāĻžāĻ¸ āĻāĻ°āĻŦ āĻ¨āĻž, āĻ¤āĻŦā§ āĻāĻĒāĻ¨āĻŋ āĻ¸āĻ°ā§āĻŦāĻĻāĻž āĻ āĻĢāĻŋāĻ¸āĻŋāĻ¯āĻŧāĻžāĻ˛ āĻāĻ¤ā§āĻ¸āĻā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻ¯ā§āĻāĻžāĻ¯ā§āĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤
āĻāĻ° āĻĒāĻ°ā§, āĻĢā§āĻ˛ā§āĻĄāĻžāĻ° āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖ āĻļā§āĻ°ā§ āĻšāĻ¯āĻŧ src āĻ¸āĻāĻ˛ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸ā§āĻ°ā§āĻ¸ āĻĢāĻžāĻāĻ˛ā§āĻ° āĻĒā§āĻ°āĻžāĻĒā§āĻ¯āĻ¤āĻžāĻ° āĻāĻ¨ā§āĻ¯ (āĻ¯āĻĻāĻŋ āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻāĻāĻŋ āĻ¸ā§āĻĒāĻˇā§āĻāĻāĻžāĻŦā§ āĻāĻ˛ā§āĻ˛ā§āĻ āĻāĻ°āĻž āĻ¨āĻž āĻšāĻ¯āĻŧ) āĻ¸āĻŽāĻ°ā§āĻĨāĻŋāĻ¤ āĻāĻžāĻˇāĻž, āĻ¤āĻžāĻĻā§āĻ° āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻ¸ā§āĻā§āĻāĻ°āĻŖ āĻ¸āĻšāĨ¤
āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§āĻ¤ā§ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖ āĻāĻ¸ā§, āĻ¯ā§āĻā§āĻ˛āĻŋāĻ° āĻāĻĒāĻ° āĻāĻŽāĻ°āĻž āĻāĻ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§ āĻĢā§āĻāĻžāĻ¸ āĻāĻ°āĻŋ āĻ¨āĻž (āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻ˛āĻŋāĻ¨ā§āĻāĻŋāĻ, āĻā§āĻĄ āĻĄā§āĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻ¸āĻ¨āĻžāĻā§āĻ¤āĻāĻ°āĻŖ āĻāĻ¤ā§āĻ¯āĻžāĻĻāĻŋ)āĨ¤
āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨āĻžāĻ°ā§āĻ° āĻāĻžāĻā§āĻ° āĻāĻā§āĻŦāĻžāĻ°ā§ āĻļā§āĻˇā§, āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¸āĻāĻā§āĻšā§āĻ¤ āĻ¤āĻĨā§āĻ¯ āĻāĻāĻ¤ā§āĻ°āĻŋāĻ¤, āĻ¸āĻāĻ°āĻā§āĻˇāĻŖāĻžāĻāĻžāĻ°āĻā§āĻā§āĻ¤ āĻāĻŦāĻ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§ āĻĒāĻžāĻ āĻžāĻ¨ā§ āĻšāĻ¯āĻŧāĨ¤
āĻāĻ° āĻĒāĻ°ā§, āĻāĻŽāĻ°āĻž āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§ āĻāĻ¯āĻŧā§āĻŦ āĻāĻ¨ā§āĻāĻžāĻ°āĻĢā§āĻ¸ā§ āĻā§ āĻāĻā§āĻā§ āĻ¤āĻž āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻ°āĻŋ:
āĻāĻŽāĻ°āĻž āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻā§āĻāĻŋ, āĻāĻŋāĻā§ āĻāĻžāĻ āĻāĻ°ā§āĻā§, āĻāĻŦāĻ āĻāĻŽāĻ¨āĻāĻŋ āĻāĻŋāĻā§ āĻ§āĻ°āĻŖā§āĻ° āĻāĻāĻžāĻ°ā§āĻ āĻĻā§āĻāĻžāĻ¯āĻŧ, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻāĻŋ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¸āĻžāĻĨā§ āĻŽā§āĻ˛ā§ āĻ¨āĻž āĻ āĻžāĻā§āĻāĻž- āĻ°āĻŋāĻĒā§āĻ°ā§āĻāĨ¤
āĻāĻ¸ā§āĻ¨ āĻāĻāĻž āĻŦā§āĻ° āĻāĻ°āĻž āĻ¯āĻžāĻāĨ¤ āĻāĻ¸ā§āĻ¨ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒāĻāĻŋāĻā§ āĻāĻ°āĻ āĻŦāĻŋāĻļāĻĻā§ āĻĻā§āĻāĻŋ, āĻāĻāĻžāĻ°ā§āĻ āĻŽāĻžāĻ¨āĻāĻŋāĻ¤ā§ āĻā§āĻ˛āĻŋāĻ āĻāĻ°ā§āĻ¨ āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻŦāĻŋāĻļāĻĻ āĻĢāĻžāĻāĻ˛ āĻ°āĻŋāĻĒā§āĻ°ā§āĻā§ "āĻĢāĻ˛ āĻĨā§āĻ°ā§" āĻāĻ°ā§āĻ¨:
āĻāĻāĻžāĻ¨ā§ āĻāĻŽāĻ°āĻž āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻāĻžāĻĄāĻŧāĻžāĻ, āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻž āĻĢāĻžāĻāĻ˛ āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻā§āĻāĻŋ HelloWorld.vue, āĻāĻāĻāĻŋ āĻĢāĻžāĻāĻ˛ āĻāĻā§ main.ts, āĻ¯āĻž āĻāĻāĻžāĻ°ā§āĻā§āĻ° āĻĒā§āĻ°ā§ āĻāĻŦāĻŋ āĻ¨āĻˇā§āĻ āĻāĻ°ā§āĨ¤ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻŋāĻāĻžāĻŦā§ āĻāĻŽāĻ°āĻž āĻāĻāĻžāĻ°ā§āĻ āĻšāĻŋāĻ¸āĻžāĻŦ āĻĨā§āĻā§ āĻāĻāĻž āĻŦāĻžāĻĻ. āĻšā§āĻ¯āĻžāĻ, āĻ¸āĻŦāĻāĻŋāĻā§ āĻ¸āĻ āĻŋāĻ, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻāĻŋ āĻ¸ā§āĻ¤āĻ°ā§ āĻāĻŋāĻ˛ āĻ āĻžāĻā§āĻāĻž, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨āĻžāĻ° āĻāĻāĻŋāĻā§ āĻ¸ā§āĻāĻŋāĻ¤ āĻāĻ°ā§āĻā§, āĻ¤āĻžāĻ āĻāĻāĻŋ āĻ¤āĻžāĻ° āĻāĻŖāĻ¨āĻžāĻ¯āĻŧ āĻļā§āĻˇ āĻšāĻ¯āĻŧā§āĻā§āĨ¤
āĻāĻ¸ā§āĻ¨ āĻāĻāĻŋ āĻ āĻŋāĻ āĻāĻ°āĻŋ:
sonar-project.properties:
...
sonar.exclusions=src/main.ts
...
āĻāĻŽāĻŋ āĻāĻāĻāĻŋ āĻ¸ā§āĻĒāĻˇā§āĻā§āĻāĻ°āĻŖ āĻāĻ°āĻ¤ā§ āĻāĻžāĻ: āĻāĻ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ°ā§ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°āĻž āĻĢā§āĻ˛ā§āĻĄāĻžāĻ°āĻā§āĻ˛āĻŋ āĻāĻžāĻĄāĻŧāĻžāĻ, āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ°ā§ āĻ¤āĻžāĻ˛āĻŋāĻāĻžāĻā§āĻā§āĻ¤ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĢā§āĻ˛ā§āĻĄāĻžāĻ°āĻ āĻ¯ā§āĻā§āĻ¤ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§ sonar.test.inclusion.
āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨āĻžāĻ° āĻāĻžāĻ˛ā§ āĻāĻ°āĻžāĻ° āĻĒāĻ°ā§, āĻāĻŽāĻ°āĻž āĻ¸āĻ āĻŋāĻ āĻ¤āĻĨā§āĻ¯ āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻ:
āĻāĻ˛ā§āĻ¨ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻ āĻĻā§āĻāĻŋ- āĻā§āĻŖāĻŽāĻžāĻ¨ā§āĻ° āĻĒā§āĻ°ā§āĻĢāĻžāĻāĻ˛. āĻāĻŽāĻŋ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻāĻĒāĻ°ā§ āĻāĻĨāĻž āĻŦāĻ˛ā§āĻāĻŋ āĻ¸ā§āĻ¨āĻžāĻ°'āĻāĻŽ āĻāĻāĻ āĻ¸āĻŽāĻ¯āĻŧā§ āĻŦā§āĻļ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻāĻžāĻˇāĻžāĨ¤ āĻāĻ āĻāĻŽāĻ°āĻž āĻ āĻŋāĻ āĻāĻŋ āĻĻā§āĻāĻāĻŋ. āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻŽāĻ°āĻž āĻāĻžāĻ¨āĻŋ āĻ¯ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻĒā§āĻ°āĻāĻ˛ā§āĻĒ āĻ˛ā§āĻāĻž āĻāĻā§ TS, āĻ¤āĻžāĻ āĻā§āĻ¨ āĻ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻŽā§āĻ¯āĻžāĻ¨āĻŋāĻĒā§āĻ˛ā§āĻļāĻ¨ āĻāĻŦāĻ āĻā§āĻ āĻ¸āĻā§āĻā§ āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨āĻžāĻ° āĻāĻžāĻĒ. āĻāĻŽāĻ°āĻž āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĢāĻžāĻāĻ˛ā§ āĻāĻ°āĻ āĻāĻāĻāĻŋ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ° āĻ¯ā§āĻ āĻāĻ°ā§ āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻžāĻˇāĻž āĻ¸ā§āĻ āĻāĻ°āĻŦ āĻ¸ā§āĻ¨āĻžāĻ°'āĻ:
sonar-project.properties:
...
sonar.language=ts
...
āĻāĻŦāĻžāĻ° āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨āĻžāĻ° āĻāĻžāĻ˛āĻžāĻ¨ āĻāĻŦāĻ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻĻā§āĻā§āĻ¨:
āĻāĻāĻžāĻ°ā§āĻ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖāĻ°ā§āĻĒā§ āĻāĻ˛ā§ āĻā§āĻā§.
āĻāĻŽāĻ°āĻž āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨āĻžāĻ° āĻ˛āĻ āĻ¤āĻžāĻāĻžāĻ¨, āĻāĻŽāĻ°āĻž āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻ˛āĻžāĻāĻ¨ āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨:
āĻ āĻ°ā§āĻĨāĻžā§, āĻāĻŽāĻžāĻĻā§āĻ° āĻĒā§āĻ°āĻā§āĻā§āĻ āĻĢāĻžāĻāĻ˛āĻā§āĻ˛āĻŋ āĻ¸āĻšāĻāĻāĻžāĻŦā§ āĻ¸ā§āĻāĻŋāĻ¤ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĻ¨āĻŋāĨ¤
āĻĒāĻ°āĻŋāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋ āĻ¨āĻŋāĻŽā§āĻ¨āĻ°ā§āĻĒ: āĻ¸āĻ°āĻāĻžāĻ°ā§āĻāĻžāĻŦā§ āĻ¸āĻŽāĻ°ā§āĻĨāĻŋāĻ¤ āĻā§āĻ¯ā§āĻā§āĻ¸ āĻĒā§āĻ˛āĻžāĻāĻāĻ¨ā§ āĻāĻā§ āĻ¸ā§āĻ¨āĻžāĻ°āĻā§āĻāĻ¸āĻ¯āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĻāĻžāĻ¯āĻŧā§ āĻāĻžāĻāĻžāĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ.
āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻĒā§āĻ˛āĻžāĻāĻāĻ¨ā§ āĻ¨ā§āĻ āĻ¸ā§āĻ¨āĻžāĻ°āĻāĻŋāĻāĻ¸ āĻĨā§āĻā§ TS, āĻ¯āĻž āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻŦāĻžāĻ āĻā§āĻ°ā§āĻ¯āĻžāĻāĻžāĻ°ā§ āĻāĻāĻāĻŋ āĻ āĻĢāĻŋāĻ¸āĻŋāĻ¯āĻŧāĻžāĻ˛ āĻāĻŋāĻāĻŋāĻ āĻā§āĻ˛āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛ āĻ¸ā§āĻ¨āĻžāĻ°'āĻ:
āĻāĻāĻžāĻ¨ā§ āĻ¸ā§āĻ¨āĻžāĻ°āĻāĻŋāĻāĻŦ āĻĄā§āĻā§āĻ˛āĻĒāĻžāĻ°āĻĻā§āĻ° āĻāĻāĻāĻ¨ āĻĒā§āĻ°āĻ¤āĻŋāĻ¨āĻŋāĻ§āĻŋāĻ° āĻāĻžāĻ āĻĨā§āĻā§ āĻāĻŋāĻā§ āĻāĻ¤ā§āĻ¤āĻ° āĻĻā§āĻāĻ¯āĻŧāĻž āĻšāĻ˛, āĻāĻ āĻ¸āĻ¤ā§āĻ¯āĻāĻŋ āĻ¨āĻŋāĻļā§āĻāĻŋāĻ¤ āĻāĻ°ā§āĨ¤
āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻ¸āĻŦāĻāĻŋāĻā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻžāĻ āĻāĻ°ā§āĻā§, āĻāĻĒāĻ¨āĻŋ āĻāĻĒāĻ¤ā§āĻ¤āĻŋ. āĻšā§āĻ¯āĻžāĻ, āĻāĻāĻž āĻāĻāĻā§ āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻž āĻ¯āĻžāĻ "āĻāĻžāĻā§āĻā§".
āĻ¯āĻĻāĻŋ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻĨāĻžāĻā§ .vue-āĻ¨āĻĨāĻŋ āĻĒāĻ¤ā§āĻ° āĻ¸ā§āĻ¨āĻžāĻ°'āĻāĻš, āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻ¸ā§āĻ¨ āĻ¤āĻžāĻā§ āĻ¤āĻžāĻĻā§āĻ° āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻŦāĻŋāĻŦā§āĻāĻ¨āĻž āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻŦāĻ˛āĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻŋ āĻāĻžāĻāĻĒāĻ°āĻžāĻāĻāĻžāĻ°ā§ āĻŽā§āĻĻā§āĻ°āĻŋ.
āĻāĻāĻāĻŋ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ° āĻ¯ā§āĻ āĻāĻ°āĻž āĻ¯āĻžāĻ:
sonar-project.properties:
...
sonar.typescript.file.suffixes=.ts,.tsx,.vue
...
āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨āĻžāĻ° āĻāĻžāĻ˛ā§ āĻāĻ°āĻž āĻ¯āĻžāĻ:
āĻāĻŦāĻ, āĻāĻ¯āĻŧā§āĻ˛āĻž, āĻ¸āĻŦāĻāĻŋāĻā§ āĻ¸ā§āĻŦāĻžāĻāĻžāĻŦāĻŋāĻ āĻ āĻŦāĻ¸ā§āĻĨāĻžāĻ¯āĻŧ āĻĢāĻŋāĻ°ā§ āĻāĻ¸ā§āĻā§ āĻāĻŦāĻ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻāĻāĻŋ āĻĒā§āĻ°ā§āĻĢāĻžāĻāĻ˛ā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻāĻĒāĻ°āĻžāĻāĻāĻžāĻ°ā§ āĻŽā§āĻĻā§āĻ°āĻŋ. āĻ āĻ°ā§āĻĨāĻžā§, āĻāĻŽāĻ°āĻž āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ā§ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻāĻŋ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻāĻ°āĻ¤ā§ āĻĒā§āĻ°ā§āĻāĻŋ VueJs+TS āĻĨā§āĻā§ āĻ¸ā§āĻ¨āĻžāĻ°āĻāĻŋāĻāĻŦ.
āĻāĻ¸ā§āĻ¨ āĻāĻ°āĻ āĻāĻāĻŋāĻ¯āĻŧā§ āĻ¯āĻžāĻāĻ¯āĻŧāĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻŋ āĻāĻŦāĻ āĻāĻāĻžāĻ°ā§āĻ āĻ¤āĻĨā§āĻ¯ āĻāĻāĻā§ āĻāĻ¨ā§āĻ¨āĻ¤ āĻāĻ°āĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻŋāĨ¤
āĻāĻŽāĻ°āĻž āĻāĻāĻ¨ āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻ¯āĻž āĻāĻ°ā§āĻāĻŋ:
- āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§ āĻ¯ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§ āĻ¸ā§āĻ¨āĻžāĻ°- āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨āĻžāĻ°;
- āĻ¸ā§āĻ āĻāĻĒ āĻ āĻžāĻā§āĻāĻž āĻāĻāĻžāĻ°ā§āĻ āĻ¤āĻĨā§āĻ¯ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§;
- āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°āĻž āĻ¸ā§āĻ¨āĻžāĻ°- āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨āĻžāĻ°;
- āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ .vue-āĻĢāĻžāĻāĻ˛āĻ¸ + āĻāĻžāĻāĻĒāĻ°āĻžāĻāĻāĻžāĻ°ā§ āĻŽā§āĻĻā§āĻ°āĻŋ.
āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻ° āĻāĻāĻžāĻ°ā§āĻ āĻāĻžāĻĄāĻŧāĻžāĻ, āĻā§āĻĄ āĻŽāĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻāĻāĻ°ā§āĻˇāĻŖā§āĻ¯āĻŧ āĻĻāĻ°āĻāĻžāĻ°ā§ āĻŽāĻžāĻ¨āĻĻāĻŖā§āĻĄ āĻ°āĻ¯āĻŧā§āĻā§, āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻā§āĻĄā§āĻ° āĻ¨āĻāĻ˛ āĻāĻŦāĻ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§āĻ° āĻ˛āĻžāĻāĻ¨ā§āĻ° āĻ¸āĻāĻā§āĻ¯āĻž (āĻā§āĻĄ āĻāĻāĻŋāĻ˛āĻ¤āĻžāĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻāĻŋāĻ¤ āĻ¸āĻšāĻ āĻāĻŖāĻ¨āĻžāĻ° āĻ¸āĻžāĻĨā§ āĻāĻĄāĻŧāĻŋāĻ¤)āĨ¤
āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ˛āĻžāĻāĻāĻ¨āĻāĻŋāĻ° āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ā§ TS (āĻ¸ā§āĻ¨āĻžāĻ°āĻāĻŋāĻāĻ¸) āĻāĻžāĻ āĻāĻ°āĻŦā§ āĻ¨āĻž CPD (āĻāĻĒāĻŋ āĻĒā§āĻ¸ā§āĻ āĻĄāĻŋāĻā§āĻā§āĻāĻ°) āĻāĻŦāĻ āĻā§āĻĄ āĻ˛āĻžāĻāĻ¨ āĻāĻŖāĻ¨āĻž .vue-āĻ¨āĻĨāĻŋ āĻĒāĻ¤ā§āĻ°.
āĻā§āĻĄ āĻĄā§āĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ā§āĻ° āĻāĻāĻāĻŋ āĻ¸āĻŋāĻ¨ā§āĻĨā§āĻāĻŋāĻ āĻĒāĻ°āĻŋāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§, āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻāĻāĻŋ āĻāĻŋāĻ¨ā§āĻ¨ āĻ¨āĻžāĻŽ āĻĻāĻŋāĻ¯āĻŧā§ āĻāĻŽā§āĻĒā§āĻ¨ā§āĻ¨ā§āĻ āĻĢāĻžāĻāĻ˛āĻāĻŋ āĻ¨āĻāĻ˛ āĻāĻ°ā§āĻ¨ āĻāĻŦāĻ āĻāĻāĻŋ āĻā§āĻĄā§ āĻ¯ā§āĻ āĻāĻ°ā§āĻ¨ main.ts āĻāĻāĻāĻŋ āĻĄāĻžāĻŽāĻŋ āĻĢāĻžāĻāĻļāĻ¨ āĻāĻŦāĻ āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻāĻŋāĻ¨ā§āĻ¨ āĻ¨āĻžāĻŽ āĻĻāĻŋāĻ¯āĻŧā§ āĻ¨āĻāĻ˛ āĻāĻ°ā§āĻ¨āĨ¤ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻĄā§āĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻā§āĻ āĻāĻ°āĻ¤ā§ .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
āĻā§āĻĄ āĻ˛āĻžāĻāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯:
āĻ¸āĻŽā§āĻāĻŦāĻ¤ āĻāĻāĻŋ āĻāĻŦāĻŋāĻˇā§āĻ¯āĻ¤ā§ āĻĒā§āĻ˛āĻžāĻāĻāĻ¨ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖā§ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻāĻ°āĻž āĻšāĻŦā§ āĻ¸ā§āĻ¨āĻžāĻ°āĻā§āĻāĻ¸(āĻāĻŋāĻāĻ¸). āĻāĻŽāĻŋ āĻ˛āĻā§āĻˇā§āĻ¯ āĻāĻ°āĻ¤ā§ āĻāĻžāĻ āĻ¯ā§ āĻ¤āĻžāĻ°āĻž āĻ§ā§āĻ°ā§ āĻ§ā§āĻ°ā§ āĻāĻ āĻĻā§āĻāĻŋ āĻĒā§āĻ˛āĻžāĻāĻāĻ¨āĻā§ āĻāĻāĻ¤ā§āĻ°āĻŋāĻ¤ āĻāĻ°āĻ¤ā§ āĻļā§āĻ°ā§ āĻāĻ°ā§āĻā§ āĻ¸ā§āĻ¨āĻžāĻ°āĻā§āĻāĻ¸, āĻ¯āĻž āĻāĻŽāĻŋ āĻ¸āĻ āĻŋāĻ āĻŽāĻ¨ā§ āĻāĻ°āĻŋāĨ¤
āĻāĻāĻ¨ āĻāĻŽāĻŋ āĻāĻāĻžāĻ°ā§āĻ āĻ¤āĻĨā§āĻ¯ āĻāĻ¨ā§āĻ¨āĻ¤ āĻāĻ°āĻžāĻ° āĻŦāĻŋāĻāĻ˛ā§āĻĒāĻāĻŋ āĻŦāĻŋāĻŦā§āĻāĻ¨āĻž āĻāĻ°āĻ¤ā§ āĻā§āĻ¯āĻŧā§āĻāĻŋāĻ˛āĻžāĻŽāĨ¤
āĻāĻāĻ¨āĻ āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻāĻŽāĻ°āĻž āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŦāĻ āĻŦāĻŋāĻļā§āĻˇāĻ¤ āĻĢāĻžāĻāĻ˛āĻā§āĻ˛āĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻļāĻ¤āĻžāĻāĻļā§āĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻ° āĻāĻāĻžāĻ°ā§āĻ āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻā§āĻāĻŋāĨ¤ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻĒāĻ°āĻŋāĻŽāĻžāĻŖ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻ¤āĻĨā§āĻ¯ āĻĻāĻŋāĻ¯āĻŧā§ āĻāĻ āĻ¸ā§āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻ¸āĻžāĻ°āĻŋāĻ¤ āĻāĻ°āĻž āĻ¸āĻŽā§āĻāĻŦ āĻāĻāĻ-āĻĒā§āĻ°āĻā§āĻā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĒāĻ°ā§āĻā§āĻˇāĻž, āĻ¸ā§āĻāĻ¸āĻžāĻĨā§ āĻĢāĻžāĻāĻ˛ā§āĻ° āĻĒā§āĻ°āĻ¸āĻā§āĻā§āĨ¤
āĻāĻāĻāĻŋ āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋ āĻāĻā§ āĻ¯ā§ āĻĒāĻžāĻ°ā§ āĻ āĻžāĻā§āĻāĻž-āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¤āĻŋāĻŦā§āĻĻāĻ¨āĻāĻŋāĻā§ āĻĢāĻ°āĻŽā§āĻ¯āĻžāĻā§ āĻ°ā§āĻĒāĻžāĻ¨ā§āĻ¤āĻ° āĻāĻ°ā§āĻ¨ āĻ¸ā§āĻ¨āĻžāĻ°'āĻ:
āĻā§āĻ¨ā§āĻ°āĻŋāĻ āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻ° āĻ¤āĻĨā§āĻ¯ -
āĻāĻ¸ā§āĻ¨ āĻāĻŽāĻžāĻĻā§āĻ° āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§ āĻāĻ āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋāĻāĻŋ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻŋ:
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. āĻāĻŋāĻā§ āĻ¸āĻžāĻŽāĻā§āĻāĻ¸ā§āĻ¯āĻ¤āĻž āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ¸āĻāĻļā§āĻ§āĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§. āĻāĻŽāĻ°āĻž āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻ° āĻāĻāĻžāĻ°ā§āĻ āĻ¸ā§āĻāĻā§āĻ° āĻ¤āĻĨā§āĻ¯ āĻ¸āĻžāĻŽāĻā§āĻ°ā§ āĻŦāĻžāĻĄāĻŧāĻŋāĻ¯āĻŧā§āĻāĻŋāĨ¤ āĻāĻ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§ āĻāĻŽāĻ°āĻž āĻā§āĻĄ āĻŽāĻžāĻ¨ā§āĻ° āĻŽāĻžāĻ¨āĻĻāĻŖā§āĻĄā§āĻ° āĻāĻāĻāĻŋ āĻŽāĻžāĻ¤ā§āĻ° āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°ā§āĻāĻŋ (āĻ¸āĻŽā§āĻāĻŦāĻ¤ āĻĒā§āĻ°āĻ§āĻžāĻ¨āĻā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻāĻāĻŋ), āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻ¸ā§āĻ¨āĻžāĻ°āĻāĻŋāĻāĻŦ āĻ¨āĻŋāĻ°āĻžāĻĒāĻ¤ā§āĻ¤āĻž āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻ¸āĻš āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻŽāĻžāĻ¨ā§āĻ° āĻŽāĻžāĻ¨āĻĻāĻŖā§āĻĄ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻāĻ°ā§āĨ¤ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖāĻ°ā§āĻĒā§ āĻāĻĒāĻ˛āĻŦā§āĻ§ āĻ¨āĻ¯āĻŧ āĻ¸āĻŽā§āĻĒā§āĻ°āĻĻāĻžāĻ¯āĻŧ-āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖāĨ¤ āĻāĻāĻ°ā§āĻˇāĻŖā§āĻ¯āĻŧ āĻāĻŦāĻ āĻĻāĻ°āĻāĻžāĻ°ā§ āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯āĻā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻāĻāĻŋ āĻšāĻ˛ āĻāĻ¨ā§āĻāĻŋāĻā§āĻ°ā§āĻļāĻ¨ āĻ¸ā§āĻ¨āĻžāĻ°āĻāĻŋāĻāĻŦ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻā§āĻĄ āĻ°āĻŋāĻĒā§āĻāĻŋāĻāĻ°āĻŋ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻāĻŽā§āĻ¨ā§āĻ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻ¸āĻžāĻĨā§, āĻ¯ā§āĻŽāĻ¨ āĻāĻŋāĻāĻ˛ā§āĻ¯āĻžāĻŦ āĻāĻŦāĻ āĻŦāĻŋāĻāĻŦāĻžāĻā§āĻāĨ¤ āĻĒā§āĻ°āĻ¤āĻŋāĻ°ā§āĻ§ āĻāĻ°āĻ¤ā§ āĻŽāĻžāĻ°ā§āĻ āĻāĻžāĻ¨(āĻŽāĻžāĻ°ā§āĻ) āĻ āĻ¨ā§āĻ°ā§āĻ§'āĻāĻāĻžāĻ°ā§āĻā§āĻ° āĻ āĻŦāĻ¨āĻ¤āĻŋ āĻšāĻ˛ā§ āĻāĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻ° āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻļāĻžāĻāĻžāĻ¯āĻŧāĨ¤ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻāĻŋāĻ¨ā§āĻ¨ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻāĻ˛ā§āĻĒ.
āĻĻā§āĻ°āĻˇā§āĻāĻŦā§āĻ¯: āĻā§āĻĄ āĻāĻāĻžāĻ°ā§ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§ āĻŦāĻ°ā§āĻŖāĻŋāĻ¤ āĻ¸āĻŦāĻāĻŋāĻā§ āĻĒāĻžāĻāĻ¯āĻŧāĻž āĻ¯āĻžāĻ¯āĻŧ
āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻŋāĻ¤ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻ°āĻž āĻāĻ°āĻŋāĻĒā§ āĻ
āĻāĻļāĻā§āĻ°āĻšāĻŖ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŦā§āĻ¨āĨ¤
āĻāĻĒāĻ¨āĻŋ āĻāĻŋ āĻ¸ā§āĻ¨āĻžāĻ°āĻāĻŋāĻāĻŦ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻāĻĢāĻ°ā§āĻŽ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻ¨:
-
26,3%āĻšā§āĻ¯āĻžāĻ 5
-
15,8%No3
-
15,8%āĻāĻŽāĻŋ āĻāĻ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻāĻĢāĻ°ā§āĻŽ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻļā§āĻ¨ā§āĻāĻŋ āĻāĻŦāĻ 3 āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻāĻžāĻ
-
10,5%āĻāĻŽāĻŋ āĻāĻ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻāĻĢāĻ°ā§āĻŽ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻļā§āĻ¨ā§āĻāĻŋ āĻāĻŦāĻ 2 āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻāĻžāĻ āĻ¨āĻž
-
0,0%āĻāĻŽāĻŋ āĻāĻāĻāĻŋ āĻāĻŋāĻ¨ā§āĻ¨ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻāĻĢāĻ°ā§āĻŽ0 āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻāĻŋ
-
31,6%āĻĒā§āĻ°āĻĨāĻŽāĻŦāĻžāĻ° āĻāĻŽāĻŋ āĻ¤āĻžāĻ° āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻļā§āĻ¨ā§āĻāĻŋ 6
19 āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ āĻā§āĻ āĻĻāĻŋāĻ¯āĻŧā§āĻā§āĻ¨āĨ¤ 3 āĻāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ āĻŦāĻŋāĻ°āĻ¤ āĻāĻŋāĻ˛ā§āĻ¨āĨ¤
āĻāĻ¤ā§āĻ¸: www.habr.com