【问题标题】:Copying class files to Sonar working directory将类文件复制到 Sonar 工作目录
【发布时间】:2015-03-10 11:29:36
【问题描述】:

我正在为 Android 开发并使用 SonarQube 4.5.2。我的应用使用 Gradle 2.2.1 和 Sonar runner 2.4,并使用 Jacoco 进行代码覆盖。

我希望将类文件复制到声纳工作目录,即 build/sonar;为此,我创建了一个将二进制文件复制到 Sonar 工作目录的任务。复制文件后,我将运行 Sonar runner 任务。

直到上个月,这一切都很好,我可以在 SonarQube 上看到所有与覆盖率相关的指标。但是现在,当 Sonar runner 任务启动时,它会清理移除所有二进制文件的 sonar 工作目录,导致 Sonar 无法找到类文件,从而给我零覆盖。

我不记得在 SonarQube 服务器和 Sonar runner 任务中进行任何更改。是否有任何属性可以阻止 Sonar runner 清理现有的工作目录?

【问题讨论】:

    标签: android sonarqube jacoco sonar-runner


    【解决方案1】:

    SonarQube 工作目录不应该被 SonarQube 本身使用。如果您需要二进制文件进行分析,则应将它们放在其他位置(如 "build/classes")并在 Gradle 脚本中自行管理清理。

    【讨论】:

    • 默认情况下,我已经在"build/intermediates/classes/" 中有我的二进制文件(我正在使用 Gradle 进行 Android 开发)。显然,SonarQube 在 {sonar-working-directory}/build/ 中查找二进制文件并且无法找到它们,之后它会抱怨并且不运行 Jacoco 分析。不确定您的解决方案将如何提供帮助。是否将二进制文件放入build/classes 会自动使 SonarQube 检测到二进制文件?
    • SonarQube Java 插件使用用户提供的信息来了解二进制文件的位置...请阅读文档 (docs.sonarqube.org/display/SONAR/Java+Plugin),更具体地说是“sonar.binaries”属性。
    • 我使用 SonarRunner gradle 插件 2.4,当我将 sonar.binaries 属性设置为我的类文件时,我得到 Class not found Error 16:13:55.480 INFO - Sensor JavaSquidSensor... 16:13:55.835 INFO - Java Main Files AST scan... 16:13:55.838 INFO - 374 source files to be analyzed 16:13:56.058 ERROR - Class not found: android.content.Context 16:13:56.058 ERROR - Class not found: android.content.SharedPreferences 等等。有人建议我也应该设置sonar.libraries 属性,但是根据这个stackoverflow.com/a/21812920/1419349 SonarRunner 应该为我处理这一切。
    猜你喜欢
    • 1970-01-01
    • 2011-06-17
    • 1970-01-01
    • 2016-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-03
    相关资源
    最近更新 更多