【问题标题】:Upload JUnit Test Results and Code Coverage to Sonar将 JUnit 测试结果和代码覆盖率上传到 Sonar
【发布时间】:2014-11-01 23:34:28
【问题描述】:

我有一个 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>

【问题讨论】:

  • 你的 Ant 脚本有一些错误,所以这不能工作。例如,“sonar.modules”设置为“MyAndroidApp”,但是您配置了一些奇怪的参数,例如“CarsLibrary.sonar.*”=>“CarsLibrary”与“sonar.modules”中定义的任何模块都不匹配
  • 对不起,我的错字,在我复制粘贴时正在尝试一些东西......

标签: android ant junit code-coverage sonarqube


【解决方案1】:

Olivier Gaudin 几年前在 Sonar blog post 中解释了该过程

由于我没有 Ant 构建,我不确定这是否可行,但尝试设置以下参数 sonar.junit.reportsPath=path/to/your/junit/reportsonar.dynamicAnalysis=reuseReports。这应该可以完成工作。

【讨论】:

  • 不起作用只是得到一些模糊的错误 org.sonar.runner.impl.RunnerException: Unable to execute Sonar
猜你喜欢
  • 2016-03-27
  • 2013-09-09
  • 2013-11-28
  • 2012-06-11
  • 2012-06-30
  • 1970-01-01
  • 2020-04-29
  • 1970-01-01
  • 2023-03-25
相关资源
最近更新 更多