多模块项目的覆盖率报告

时间:2014-02-19 15:17:09

标签: junit code-coverage cobertura jacoco sonar-runner

我遇到了生成代码覆盖率报告并对包含项目代码的单元测试进行分析的问题。我使用Sonar来获取项目报告,但单元测试覆盖部分没有显示任何内容。我做了一些研究,发现声纳需要有一个由emma / clover / corbetura / jacoco生成的junit报告。该项目是非专业的。请告诉我如何分析基于非maven的多模块项目的代码覆盖率。我正在使用声纳跑步者。

任何链接或参考都会有所帮助。 请不要提供文档页面的链接。显然,我已经浏览了所有这些。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

我提供了文档页面的链接,以帮助那些没有看过文档或示例的人。获取maven属性设置并将其转换为sonar-runner.properties。例如,根据您设置多模块项目的方式,您可以将此设置放在父级别或每个模块内:sonar.jacoco.reportPath=reports/coverage/jacoco.exec

以下是多模块声纳跑步项目的链接:

http://docs.codehaus.org/display/SONAR/Analyzing+with+SonarQube+Runner

要配置单元测试代码覆盖率,请将maven中的相同属性应用于sonar-project.properties文件。以下是代码覆盖率示例中的示例:

https://github.com/SonarSource/sonar-examples/tree/master/projects/code-coverage

请注意,您需要设置单位和coverage属性以及源编码属性。

 
    sonar.projectKey=org.codehaus.sonar:example-ut-sonarRunner-jacoco-reuseReports
    sonar.projectName=UT coverage with SonarQube Runner reusing JUnit and JaCoCo reports
    sonar.projectVersion=1.0

    sonar.sources=src
    sonar.binaries=classes
    sonar.language=java

    # Tells SonarQube to reuse existing reports for unit tests execution and coverage reports
    sonar.dynamicAnalysis=reuseReports

    # Tells SonarQube where the unit tests execution reports are
    sonar.junit.reportsPath=reports/junit

    # Tells SonarQube that the code coverage tool by unit tests is JaCoCo
    sonar.java.coveragePlugin=jacoco

    # Tells SonarQube where the unit tests code coverage report is
    sonar.jacoco.reportPath=reports/coverage/jacoco.exec

    # Encoding of the source files
    sonar.sourceEncoding=UTF-8