将JUnit测试结果和代码覆盖率上传到Sonar

时间:2014-09-08 17:08:46

标签: android ant junit code-coverage sonarqube

我有一个Android应用程序,我们有一个使用ant构建的项目,然后将lint分析结果上传到Sonar服务器。我有另一个包含所有JUnit测试的测试项目。我想将JUnit测试结果和代码覆盖率上传到Sonar到Android应用程序的同一个Sonar项目中。如何在ant构建脚本中执行此操作,仅上载JUnit测试结果和代码覆盖率?

<!-- Sample local host configuration -->
<property name="sonar.host.url" value="http://localhost:9000" />
<property name="sonar.jdbc.url" value="jdbc:h2:tcp://localhost:9092/sonar" />
<property name="sonar.jdbc.username" value="x" />
<property name="sonar.jdbc.password" value="x" />

<!-- Define the SonarQube project properties -->
<property name="sonar.projectKey" value="android-app" />
<property name="sonar.projectName" value="AndroidApp" />

<property name="sonar.language" value="java" />
<property name="sonar.modules" value="MyAndroidApp" />
<property name="sonar.profile" value="Android Lint" />

<property name="sonar.projectBaseDir" value="../MyAndroidApp" />
<property name="sonar.sources" value="src" />
<property name="sonar.binaries" value="bin/classes" />
<property name="sonar.libraries" value="libs/*.jar, ../google-play-services_lib/libs/*.jar, ${sdk.dir}/platforms/${target}/android.jar" />
<property name="junit.tests.results" value="../MyAndroidAppJavaUnitTests/junit-output" />

<!-- Sets the sonar project version at runtime-->
<target name="sonar-set-project-version">
    <xpath input="${manifest.abs.file}" expression="/manifest/@android:versionName" output="sonar.projectVersion"/>
    <echo level="info">Setting sonar project version to: ${sonar.projectVersion}</echo>
</target>


<!-- Define the SonarQube target -->
<target name="sonar" depends="sonar-set-project-version">
    <taskdef uri="antlib:org.sonar.ant" resource="org/sonar/ant/antlib.xml">
        <!-- Update the following line, or put the "sonar-ant-task-*.jar" file in your "$HOME/.ant/lib" folder -->
        <classpath path="sonar-ant-task-*.jar" />
    </taskdef>

    <!-- Execute the SonarQube analysis -->
    <sonar:sonar />
</target>

1 个答案:

答案 0 :(得分:1)

Olivier Gaudin几年前在Sonar blog post

中解释了这个程序

由于我没有构建Ant,因此我不确定这是否有效,但请尝试设置以下参数sonar.junit.reportsPath=path/to/your/junit/reportsonar.dynamicAnalysis=reuseReports。这应该可以胜任。