是否可以在Sonar中检查* Test.java源代码的质量,例如:方法最大100行?
问题是,Java Junit测试随着生产代码的增长而增长,而且复杂性也在增长。
我们有超过1000行和2种方法的单元测试类。
我们想在Sonar中查看这些* Test.java类的一些规则。
答案 0 :(得分:5)
从Sonar 3.1开始,它包含一个插件,该插件具有针对单元测试(a JIRA was created for that)执行的特定PMD规则。您可以在Configuration > Quality Profiles > Coding Rules
。
但是,您似乎希望对 test 源代码运行完整分析,就像在生产源代码上一样,并获得其他指标(对于例如% rules compliance
和% rules compliance for unit tests
)。我不认为Sonar本身提供这样的功能。您可以做的是运行2个声纳分析:
src/test/java
视为“生产”源代码。因此,第二次分析将为您提供代码的质量。对于此分析,您可以指定将更改项目信息的特定Maven配置文件(或替代pom.xml
)(例如,它将指示src/test/java
是默认的sourceDirectory
)。 答案 1 :(得分:3)
我还注意到,SonarQube默认会忽略测试资源以进行质量分析。使用schnatterers回答,我找到了一种简单的方法来创建一个单独的项目,只包括测试类作为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>
使用
运行Mavenmvn sonar:sonar -Panalyze-test-classes
然后将激活此配置文件并在SonarQube中创建一个带有后缀-tests的附加项目,该项目仅包含测试类的分析。
答案 2 :(得分:0)
使用SonarQube 4.5.2(不知道他们何时改变了行为)在我看来,单元测试不再排除在分析之外。使用sonar-runner
声纳运行sonar.sources=src
时,还会为src/test/java
创建问题。
对测试代码使用特定质量规则集的一种方法是运行两个分析:一个用于主代码,另一个用于测试代码。
这可以通过以下方式实现:
sonar-project.properties:
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
is deprecated。
这也适用于通过maven或jenkins进行分析。