Phpunit 在代码分析中包含单元测试

Phpunit 在代码分析中包含单元测试,phpunit,sonarqube,Phpunit,Sonarqube,我们在版本6.3.1中使用SonarQube,并且对其功能非常满意 但是,我们希望将测试代码包括在分析中。更具体地说,包括它们用于分析,但排除它们用于重复和代码覆盖 我们当前的配置如下所示: sonar.sources=src/src sonar.tests=src/tests, src/jsTests sonar.test.inclusions=src/jsTests/**, src/tests/** 据我们所见,声纳自动将我们的测试排除在分析之外: 10:20:37.223 INFO

我们在版本6.3.1中使用SonarQube,并且对其功能非常满意

但是,我们希望将测试代码包括在分析中。更具体地说,包括它们用于分析,但排除它们用于重复和代码覆盖

我们当前的配置如下所示:

sonar.sources=src/src
sonar.tests=src/tests, src/jsTests

sonar.test.inclusions=src/jsTests/**, src/tests/**
据我们所见,声纳自动将我们的测试排除在分析之外:

10:20:37.223 INFO  - Excluded sources:
10:20:37.223 INFO  -   **/Externals/**
10:20:37.223 INFO  -   src/jsTests/**
10:20:37.223 INFO  -   src/tests/**
10:20:37.223 INFO  - Included tests:
10:20:37.223 INFO  -   src/jsTests/**
10:20:37.223 INFO  -   src/tests/**

这就是我们想要改变的。有什么想法吗?

更改您的配置,以便将您的测试视为源文件。尝试以下方法:

sonar.sources=src/src, src/tests, src/jsTests
sonar.tests=
sonar.test.inclusions=
sonar.coverage.exclusions=src/tests/**, src/jsTests/**
sonar.cpd.exclusions=src/tests/**, src/jsTests/**

SonarJava analyzer包含特定于测试的规则,如“测试应包括断言”,以分析它们作为测试的适用性。如果包含在您的配置文件中,这些规则将自动针对测试文件运行,并且仅针对测试文件运行。“正常”规则不会针对测试文件运行


要分析测试文件中代码本身的质量,需要设置一个单独的分析,将
sonar.sources
设置到测试位置。然后,您可以按照Pierre Yves的建议设置覆盖率和重复排除,尽管我会通过UI而不是在分析属性中进行设置。

您想从测试文件的“正常”规则中提出问题吗?是的,我们希望测试有一些质量这不起作用,我们得到以下错误:错误:原因:在分析测试执行报告testReport.xml时出错错误:原因:报告的第3行引用了一个未配置为测试文件的文件:/src/jsTests/Tests/MyTest.js