0

В настоящее время мы используем Sonar для проверки качества нашего производственного кода. Я хотел бы проверить качество тестового кода.Как проверить качество теста с помощью Sonar?

Как я могу это сделать?

Я попытался изменить «sonar.sources», чтобы включить тест, но в этом случае у меня есть ошибка: тестовые папки определены дважды, одна в тесте и одна в источнике.

Может быть, я могу настроить sonar/maven/jenkins для запуска 2 анализа: первый, код src, с тестовым покрытием, испытания (только качество, отсутствие покрытия). Но мне также нужно, чтобы все работало в одной задаче jenkins и отображалось в одном проекте Sonar.

И я не знаю, где настроить (pom? Sonar? Jenkins?). Я нашел некоторые вещи о профилях, но, похоже, он устарел для моей версии.

Я использую Sonar 5.1, бегу от работы jenkins.

наших свойств эхолота в П являются:

<project.testresult.directory>${project.build.directory}/test-results</project.testresult.directory> 
<run.addResources>false</run.addResources> 
<sonar-maven-plugin.version>2.6</sonar-maven-plugin.version> 
<sonar.exclusions>src/main/webapp/assets/**/*.*, 
src/main/webapp/bower_components/**/*.*, 
src/main/webapp/dist/**/*.*</sonar.exclusions> 
<sonar.jacoco.itReportPath>${project.testresult.directory}/coverage/jacoco/jacoco-it.exec</sonar.jacoco.itReportPath> 
<sonar.jacoco.reportPath>${project.testresult.directory}/coverage/jacoco/jacoco.exec</sonar.jacoco.reportPath> 
<sonar.java.codeCoveragePlugin>jacoco</sonar.java.codeCoveragePlugin> 
<sonar.javascript.jstestdriver.reportsPath>${project.testresult.directory}/karma</sonar.javascript.jstestdriver.reportsPath> 
<sonar.javascript.lcov.reportPath>${project.testresult.directory}/coverage/report-lcov/lcov.info</sonar.javascript.lcov.reportPath> 

<sonar.sources>${project.basedir}/src/main/</sonar.sources> 
<sonar.surefire.reportsPath>${project.testresult.directory}/surefire-reports</sonar.surefire.reportsPath> 
<sonar.tests>${project.basedir}/src/test/</sonar.tests> 
+0

Вы знаете, что тестовый код обычно покрыт 100%. Зачем вам это нужно? Для обеспечения качества вы можете запускать статические инструменты анализа кода (PMD, CheckStyle, FindBugs, CodeNarc и т. Д.). Для покрытия кода все, что имеет значение, это то, что является sonar.sources, sonar.tests и sonar.java.binaries (sonar.binaries), особенно последний. Если вы укажете это значение как target/classes/*, вы увидите, что Duplicate/defined дважды ошибочно. Попробуйте установить sonar.sources = src/main, sonar.tests = src/test и т. Д., А сначала, sonar.binaries (sonar.java.binaries) для целей/классов/основных и получить охват. Затем попробуйте с целью/classes/test –

ответ

2

В последних версиях Java плагина есть некоторые правила для проверки тестов, но они являются тестовыми конкретными правилами. И.Е. они проверяют, содержат ли ваши методы @Test утверждения & и т. д. Вам просто нужно добавить эти правила в свой профиль.

Если, однако, вы говорите о запуске «правил кода» в своих тестах, то лучше всего определить другой проект, где тесты рассматриваются как источники. Поскольку вы уже заметили трудности с этим с Maven, я бы использовал SonarQube Scanner для этого отдельного второго анализа.

Смежные вопросы