在声纳分析期间未找到Android类

Lau*_*ini 8 android sonar-runner sonarqube

我试图在android项目上设置声纳分析

分析是用sonarQube通过声纳 - 跑步者的版本4.3,android-plugin安装完成的,ANDROID_HOME env变量设置在/ path/to/android/sdk上,使用ant完成构建没有任何问题

执行运行良好,但我有大量的错误消息:

14:23:46.563 ERROR - Class not found: android.content.UriMatcher
14:23:46.563 ERROR - Class not found: android.net.Uri
14:23:46.563 ERROR - Class not found: android.database.sqlite.SQLiteDatabase
14:23:46.568 ERROR - Class not found: android.provider.BaseColumns
14:23:46.757 ERROR - Class not found: android.net.Uri
14:23:46.829 ERROR - Class not found: android.content.ContentProvider
14:23:46.829 ERROR - Class not found: android.net.Uri
14:23:46.830 ERROR - Class not found: android.database.sqlite.SQLiteDatabase
14:23:46.830 ERROR - Class not found: android.content.Context
...
Run Code Online (Sandbox Code Playgroud)

我的声纳-project.propeties:

sonar.projectKey=Client-Project
sonar.projectName=Client-Project
sonar.projectVersion=2.0

sonar.sources=src
sonar.binaries=bin/classes
sonar.librairies=bin/dexedLibs,usr/local/android-sdk-linux

sonar.language=java
sonar.sourceEncoding=UTF-8

sonar.profile=Android Lint
Run Code Online (Sandbox Code Playgroud)

如何设置Sonar来找到这些android类?

小智 3

要消除这些错误,请将 android.jar 位置直接添加到sonar.libraries

sonar.libraries=libs/*.jar,/usr/local/opt/android-sdk/platforms/android-18/android.jar
Run Code Online (Sandbox Code Playgroud)

这样做有两个明显的缺点:

  1. 直接指向本地环境。SonarQube 项目配置尚不支持环境变量(https://jira.codehaus.org/browse/SONARUNNER-76)。
  2. 直接指向android平台的版本;这可能没问题,但需要手动与您的 targetSdk 保持同步