声纳分析期间未找到Android类

声纳分析期间未找到Android类,android,sonarqube,sonar-runner,Android,Sonarqube,Sonar Runner,我试图对一个android项目进行声纳分析 分析是通过SonarRunner的sonarQube版本4.3完成的,android插件安装,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项目进行声纳分析

分析是通过SonarRunner的sonarQube版本4.3完成的,android插件安装,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
...
我的sonar-project.properties:

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

如何设置Sonar以查找这些android类?

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

sonar.libraries=libs/*.jar,/usr/local/opt/android sdk/platforms/android-18/android.jar
这有两个明显的缺点:

  • 直接指向当地环境。SonarQube项目配置尚不支持环境变量()
  • 直接指向android平台的一个版本;这可能还可以,但需要手动与targetSdk保持同步

  • 基于Mikko的回答,请注意,您实际上不必手动将设置与targetSdk保持同步。您可以从gradle处获得它,如下所示:

    def androidJarPath;
    afterEvaluate {
        def rootDir = project.rootDir
        def localProperties = new File(rootDir, "local.properties")
        if (localProperties.exists()) {
            Properties properties = new Properties()
            localProperties.withInputStream { instr ->
                properties.load(instr)
            }
            def sdkDir = properties.getProperty('sdk.dir')
            androidJarPath = sdkDir + "/platforms/" + android.compileSdkVersion + "/android.jar"
        }
    }
    
    sonarqube {
        properties {
            property "sonar.java.libraries", androidJarPath
            ...
        }
    }
    

    干杯

    除了Mikko的答案之外,我还需要设置这些属性,以使FindBugs正常运行:

    sonar.libraries=libs/*.jar,/usr/local/android/android sdk linux/platforms/android-25/android.jar
    binaries=bin/classes
    sonar.java.libraries=libs/*.jar,/usr/local/android/android sdk linux/platforms/android-25/android.jar
    sonar.java.test.libraries=libs/*.jar,/usr/local/android/android sdk linux/platforms/android-25/android.jar
    
    您找到解决此问题的方法了吗?