如何为Kotlin+Java混合Android项目配置SonarQube Fastlane?
解决SonarQube无法分析Java文件的配置调整
针对你遇到的混合Kotlin/Java Android项目中SonarQube只分析Kotlin和XML的问题,可通过以下配置调整解决:
1. 修正语言参数格式
你当前配置的project_language: "java , kotlin"里逗号后带空格,SonarQube无法正确识别Java语言,需改为无空格的逗号分隔格式:
project_language: "java,kotlin"
2. 明确指定Java与Kotlin的源文件路径
仅靠sources_path可能导致Fastlane默认映射遗漏Java文件,建议直接通过SonarQube原生参数分别指定两种语言的源路径,同时添加Java编译产物的路径(Sonar分析Java依赖编译后的class文件):
sonar( # 保留原有基础参数 project_key: "com.****************.main.dev", project_version: "1.0", project_name: "************", project_language: "java,kotlin", sources_path: "absolute_path_to_/src/main", sonar_login: "****************************", sonar_url: "*********************************", # 新增Java和Kotlin的精准源路径配置 sonar_java_sources: "src/main/java", sonar_kotlin_sources: "src/main/kotlin", # 指定Java编译后的class文件目录(根据你的构建变体调整,比如debug/release) sonar_java_binaries: "app/build/intermediates/javac/debug/classes" )
3. 关键前提检查
- 确保SonarQube服务器已安装Java插件(需在后台「Marketplace」搜索安装,默认可能未自动添加);
- 执行Sonar分析前,先完成Java代码编译(比如运行
./gradlew assembleDebug),保证sonar_java_binaries指向的目录存在有效class文件。
调整后的完整Fastlane Lane
desc "Run SonarQube analysis for Kotlin/Java hybrid project" lane :sonar_scanner do # 先编译Java代码,确保生成所需class文件 gradle(task: "assembleDebug") sonar( project_key: "com.****************.main.dev", project_version: "1.0", project_name: "************", project_language: "java,kotlin", sources_path: "absolute_path_to_/src/main", sonar_login: "****************************", sonar_url: "*********************************", sonar_java_sources: "src/main/java", sonar_kotlin_sources: "src/main/kotlin", sonar_java_binaries: "app/build/intermediates/javac/debug/classes" ) end
内容的提问来源于stack exchange,提问作者Atraoui Douae
相关产品推荐
相关产品推荐

