SonarQube 6.7.1版本SonarScanner强制多语言分析问题及解决咨询
问题原因拆解
你遇到的这个问题,核心是SonarQube 6.7.1里sonar.language参数的地位变了——它在6.x版本后期已经被标记为废弃,虽然还能手动设置,但SonarScanner会优先响应其他触发语言分析的条件(比如项目里存在Java文件时,会自动激活Java分析插件),所以才会出现日志里同时显示“强制XML”和“强制Java”的矛盾情况。而5.5版本中这个参数还处于正常生效状态,自然不会有这类冲突。
强制仅分析单一语言的解决办法
针对6.7.1这个过渡版本,得用官方推荐的新方式替代废弃的sonar.language,具体有两种方案:
全局禁用多余语言插件
登录SonarQube后台,进入「Administration > Marketplace > Installed」,找到Java这类你不需要的语言插件,点击「Uninstall」后重启SonarQube服务。这种方式适合所有项目都只需要分析XML的场景,一劳永逸。项目级精准配置扫描范围
如果只是个别项目需要仅分析XML,在扫描命令或者sonar-project.properties文件里添加以下配置:# 排除所有非XML格式的文件 sonar.exclusions=**/*.java,**/*.js,**/*.py,... # 仅包含XML文件 sonar.inclusions=**/*.xml # 明确指定XML语言的文件匹配规则 sonar.lang.patterns.xml=**/*.xml配置完成后重新扫描,日志里就只会出现XML相关的分析记录,不会再触发其他语言的分析了。
最后提醒下,从SonarQube 7.0开始sonar.language被彻底移除,所以6.7.1作为过渡版本出现这种兼容性问题是正常的,尽量用新参数配置更稳妥。
内容的提问来源于stack exchange,提问作者Jordan Smith




