是否可以在声纳中检查*Test.java源代码的质量,例如最大长度为100行的方法?
问题是,Java Junit测试随着生产代码的增加而增长,也随着复杂性的增加而增长。
我们有超过1000行的单元测试类和2个方法。
我们想要在Sonar中检查这些*Test.java类的一些规则。
发布于 2013-01-17 18:30:38
从Sonar3.1开始,它包含了一个插件,该插件具有针对单元测试(a JIRA was created for that)执行的特定PMD规则。您可以在Configuration > Quality Profiles > Coding Rules中看到它们。
但是,您似乎希望对测试源代码运行完整的分析,就像对生产源代码所做的那样,并获得额外的指标(例如。% rules compliance和% rules compliance for unit tests)。我不认为Sonar本身就提供了这样的功能。你能做的就是运行双声纳分析:
src/test/java视为“生产”源代码。因此,第二次分析将为您提供代码的质量。对于此分析,您可以指定一个特定的Maven (或替代的pom.xml),它将更改项目信息(例如,它将指示src/test/java是默认的sourceDirectory).发布于 2015-12-11 06:11:31
我还注意到,默认情况下,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的附加项目,该项目只包含测试类的分析。
发布于 2015-02-18 00:23:14
对于SonarQube 4.5.2 (不知道他们什么时候改变了行为),在我看来,单元测试不再被排除在分析之外。在使用sonar.sources=src运行sonar-runner时,声纳也会给src/test/java带来问题。
对测试代码使用特定质量规则集的一种方法是运行两个分析:一个用于主代码,另一个用于测试代码。
具体实现方法如下:
sonar-project.properties:
sonar.projectName=testSonar
sonar.projectKey=testsonar
sonar.sources=src/main/java
sonar.projectVersion=1.0sonar-runner
sonar-runner -Dsonar.projectKey=testsonar.test -Dsonar.sources=src/test/java -Dsonar.projectName="testSonar TEST"
必须通过服务器(仪表板|项目配置|质量配置文件)更改不同的质量配置文件,因为-Dsonar.profile is deprecated。
这也应该适用于通过maven或jenkins进行的分析。
https://stackoverflow.com/questions/14376709
复制相似问题