SonarQube 5.6.6扫描项目报NullPointerException求助
解决SonarQube 5.6.6扫描Java文件时的NullPointerException问题
看来你在使用SonarQube 5.6.6搭配Java 1.8,执行mvn sonar:sonar扫描proj2项目时,遇到了分析D:\SCM\Checkout\file2.java文件抛出NullPointerException的问题,而且更换了3.1.1、3.3.0.60、3.4.0.905几个sonar-maven-plugin版本都没搞定——我来帮你梳理几个针对性的排查和解决方向:
先检查问题文件本身的异常
Sonar的解析器抛出NPE,大概率是处理文件时遇到了不符合预期的内容。你可以打开file2.java仔细看看:- 有没有语法错误?比如未闭合的大括号、缺失的分号,或者注释格式混乱(比如多行注释没收尾)
- 是不是用了Java 8的边缘特性?虽然SonarQube 5.6.6官方支持Java 8,但有些复杂的Lambda写法、默认方法的特殊场景可能存在已知bug
- 文件编码有没有问题?试试把文件转成UTF-8编码,再重新扫描
升级SonarQube的Java分析插件
SonarQube 5.6.6自带的Java插件版本可能存在这个NPE的bug,你可以登录SonarQube后台,进入「Administration > Marketplace」,找到Java插件,升级到适配5.6.6的最新稳定版(注意5.6.6是老版本,Java插件别装太新的,一般4.12.x系列是兼容5.6.x的)临时跳过问题文件,保证整体扫描正常
如果现在需要先完成其他代码的扫描,可以在命令里加参数跳过这个文件:mvn sonar:sonar -Dsonar.exclusions=D:\SCM\Checkout\file2.java或者在项目pom.xml里配置排除规则:
<properties> <sonar.exclusions>**/file2.java</sonar.exclusions> </properties>清理本地和服务器的Sonar缓存
缓存残留也可能导致奇怪的问题:- 本地:先执行
mvn clean清理项目target目录,然后删掉项目根目录下的.sonar文件夹 - 服务器端:登录SonarQube控制台,找到proj2项目,进入「Administration > General Settings > Delete Project」,删除后重新扫描(记得提前备份重要数据)
- 本地:先执行
尝试用Java 7编译后再扫描
虽然你用的是Java 8,但可以试试临时切换到Java 7编译项目,再执行扫描——如果这样能成功,说明问题确实是Java 8特性和Sonar解析器的兼容性bug导致的
内容的提问来源于stack exchange,提问作者jaisimha
相关产品推荐
相关产品推荐

