使用Sonar Scanner时如何排除Java文件?Flutter代码扫描报错求助
解决SonarQube扫描Flutter代码时的Java文件报错问题
问题根源
你在命令行执行sonar-scanner时,通过-Dsonar.sources=.指定扫描整个项目根目录,这直接覆盖了sonar-project.properties里的sonar.sources=lib,pubspec.yaml配置,导致安卓模块(如android/目录)下的Java文件被纳入扫描范围。同时,命令行未显式传递排除规则,配置文件中的sonar.exclusions=**/*.java未生效,触发了Java文件需要编译类或排除的报错。
解决方案
方案1:缩小扫描范围(推荐)
将命令行中的-Dsonar.sources=.改为与配置文件一致的lib,pubspec.yaml,仅扫描Flutter核心代码目录,避免触发Java相关检查:
sonar-scanner \ -Dsonar.projectKey=XXX-XXX \ -Dsonar.sources=lib,pubspec.yaml \ -Dsonar.host.url=http://xx.xx.xxx.xx:9005 \ -Dsonar.login=xxxxxxxxxxxxxxxxxxxx
方案2:命令行显式添加排除规则
若需扫描整个项目根目录,在命令行中补充-Dsonar.exclusions=**/*.java参数,确保所有Java文件被排除:
sonar-scanner \ -Dsonar.projectKey=XXX-XXX \ -Dsonar.sources=. \ -Dsonar.exclusions=**/*.java \ -Dsonar.host.url=http://xx.xx.xxx.xx:9005 \ -Dsonar.login=xxxxxxxxxxxxxxxxxxxx
方案3:精准排除安卓模块Java文件
如果不想全局排除Java文件,可细化排除规则为仅排除安卓目录下的Java文件,将以下配置添加到sonar-project.properties,同时确保命令行sources参数正确:
sonar.exclusions=android/**/*.java
内容的提问来源于stack exchange,提问作者Mansoor Malik
相关产品推荐
相关产品推荐

