Sonar Java: проверка качества исходного кода тестовых классов?
Можно ли проверить в гидролокаторе качество теста*.исходный код java, например методы максимальный размер 100 строк?
Проблема в том, что тесты Java Junit растут вместе с производительным кодом, а также усложняются.
У нас есть классы модульных тестов с более чем 1000 строк и 2 метода.
Мы хотим проверить в Сонаре некоторые правила для этих * тестов.класс Java.
3 ответов:
Начиная с Sonar 3.1, он включает в себя плагин, который имеет определенные правила PMD, которые должны выполняться против модульных тестов (для этого была создана JIRA). Вы можете увидеть их в
Configuration > Quality Profiles > Coding Rules.Однако, похоже, что вы хотите выполнить полный анализ на исходном кодеtest , Как вы делаете на исходном кодеproduction , и получить дополнительные метрики (например. а
% rules complianceи также А% rules compliance for unit tests). Я не думаю, что Сонар обеспечивает такую функцию изначально. Что вы можете сделать, это запустить 2 сонара анализ:
- ваш первый анализ является текущим;
- второй анализ будет рассматривать
src/test/javaкак исходный код "производства ". Таким образом, этот второй анализ даст вам качество вашего кода. Для этого анализа можно указать конкретный профиль Maven (или альтернативныйpom.xml), который изменит информацию о проекте (например. это будет означать, чтоsrc/test/javaявляется значением по умолчаниюsourceDirectory).
Я также заметил, что SonarQube по умолчанию игнорирует тестовые ресурсы для качественного анализа. Используя schnatterers answer, я нашел простой способ создать отдельный проект, включающий только тестовые классы в качестве источников в SonarQube, поэтому запускающий качественный анализ на них. В POM проекта, который я хочу проанализировать, я добавляю профиль, который соответственно изменяет свойства гидролокатора:
<profiles> <profile> <id>analyze-test-classes</id> <properties> <sonar.sources>src/test/java</sonar.sources> <sonar.tests></sonar.tests> <sonar.projectName>${project.name}-tests</sonar.projectName> <sonar.projectKey>${project.groupId}:${project.artifactId}-tests</sonar.projectKey> </properties> </profile> </profiles>Запуск Maven с
mvn sonar:sonar -Panalyze-test-classesЗатем активирует этот профиль и создаст дополнительный проект в SonarQube с суффиксом-tests, который содержит только анализ тестовых классов.
С SonarQube 4.5.2 (не знаю, когда они изменили поведение) мне кажется, что модульные тесты больше не исключаются из анализа. При работе
Один из подходов к использованию определенного набора правил качества для тестового кода заключается в выполнении двух анализов: одного для основного кода и другого для тестового кода.sonar-runnerсsonar.sources=srcсонар также создает проблемы дляsrc/test/java.
Это может быть реализовано следующим образом:Гидроакустический проект.свойства:
sonar.projectName=testSonar sonar.projectKey=testsonar sonar.sources=src/main/java sonar.projectVersion=1.0
- анализ основного кода:
sonar-runner- анализ тестового кода:
sonar-runner -Dsonar.projectKey=testsonar.test -Dsonar.sources=src/test/java -Dsonar.projectName="testSonar TEST"Различные профили качества должны быть изменены через сервер (панель мониторинга / конфигурация проекта / профили качества), потому что
Это также должно работать с анализами через maven или jenkins.-Dsonar.profileявляется устаревшим .
Comments