我遇到了以下问题:我已经使用“Android Lint”质量配置文件安装了SonarQube和Android插件。当我使用“Android Lint”配置文件执行我的 build.gradle 脚本时,sonar-runner插件工作正常,但在SonarQube中我看不到找到匹配的问题,只有零。
然而,当我包含另一个配置文件 - 而不是“Android Lint”时 - 我可以看到很多问题。同样在我的android SDK中应用它自己的lint时我可以看到157个问题。它可以是什么?
sonar - version 3.7.4; android plugin - version 0.1
答案 0 :(得分:3)
您的sonar.sources
媒体资源应指向 AndroidManifest.xml 文件的根目录。例如。如果您的 AndroidManifest.xml 文件位于src/main
,则您的build.gradle
文件应包含:
sonarRunner {
sonarProperties {
...
property "sonar.sources", "src/main"
property "sonar.profile", "Android Lint"
...
}
}
如果您需要sonar.sources
中的更多路径,可以将它们设为逗号分隔列表。
您可以找到Sonar Android插件如何确定是否在其source code中运行分析。
答案 1 :(得分:1)
更改您的声纳属性:
apply plugin: "org.sonarqube"
sonarqube {
properties {
property "sonar.projectName", "appa"
property "sonar.projectKey", "appa_app"
property "sonar.projectVersion", "1.0"
property "sonar.analysis.mode", "publish"
property "sonar.language", "java"
property 'sonar.sourceEncoding', "UTF-8"
property "sonar.sources", "./src/main"
//property "sonar.exclusions", "**/*Entity.java"
// property "sonar.exclusions", "src/main/java/com/apparkb/model/**, **/*Entity.java"
property "sonar.host.url", "http://192.168.21.33:9000"
property "sonar.login", "admin"
property "sonar.profile", "testlint"//use your quality profile instead
property 'sonar.import_unknown_files', true
property "sonar.android.lint.report", "./build/outputs/lint-results-debug.xml"
property "sonar.password", "admin"
property "sonar.java.binaries", "build/"
}
}
要创建lint-results-debug.xml,您必须在studio终端上运行以下命令:
./gradlew lint
它将生成缺少的XML报告。要小心,它可以为每个构建变体生成一个报告(默认情况下,Debug将生成build / outputs / lint-results-debug.xml)。所以你可以调用lintDebug,lintRelease ...依赖你的构建变体。
并将lint属性更改为:
lintOptions { // set to true to turn off analysis progress reporting by lint
quiet true
// if true, stop the gradle build if errors are found
abortOnError false
// do not ignore warnings
warningsAsErrors true
}
现在如果您运行
./gradlew sonarqube
答案 2 :(得分:0)
不幸的是,如果你只是将sonar.sources指向src / main,你将会遇到所有源码的问题,因为你很可能不会设置minSdkVersion和targetSdkVersion(它来自gradle)。我已经尝试将我的源代码设置为:
构建/中间体/捆绑/释放,SRC /主/ JAVA
但由于API级别,我仍然会收到大量(无效)错误。