Sonar Java: проверка качества исходного кода тестовых классов?



Можно ли проверить в гидролокаторе качество теста*.исходный код java, например методы максимальный размер 100 строк?



Проблема в том, что тесты Java Junit растут вместе с производительным кодом, а также усложняются.



У нас есть классы модульных тестов с более чем 1000 строк и 2 метода.



Мы хотим проверить в Сонаре некоторые правила для этих * тестов.класс Java.

763   3  

3 ответов:

Начиная с Sonar 3.1, он включает в себя плагин, который имеет определенные правила PMD, которые должны выполняться против модульных тестов (для этого была создана JIRA). Вы можете увидеть их в Configuration > Quality Profiles > Coding Rules.

Однако, похоже, что вы хотите выполнить полный анализ на исходном кодеtest , Как вы делаете на исходном кодеproduction , и получить дополнительные метрики (например. а % rules compliance и также А % rules compliance for unit tests). Я не думаю, что Сонар обеспечивает такую функцию изначально. Что вы можете сделать, это запустить 2 сонара анализ:

  1. ваш первый анализ является текущим;
  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"

Различные профили качества должны быть изменены через сервер (панель мониторинга / конфигурация проекта / профили качества), потому что -Dsonar.profile является устаревшим .

Это также должно работать с анализами через maven или jenkins.

Comments

    Ничего не найдено.