基于Java的Angular2项目SonarQube扫描排除JS文件后仍报parser.js错误原因咨询
这种情况我在处理老版本SonarQube和Angular项目时遇到过几次,大概率是以下几个原因导致的:
SonarQube JavaScript插件的残留扫描逻辑
SonarQube 6.7.1对应的JavaScript插件版本存在一个已知小问题:即使你配置了文件排除规则,插件内部的预扫描环节还是会尝试读取项目中存在的parser.js(通常是Angular CLI或webpack生成的依赖文件)。这个文件不属于业务代码,虽然日志显示已被标记为排除,但插件的解析逻辑没完全跳过它,所以触发了报错,但因为它不影响核心业务代码的扫描结果,最终构建还是能成功。排除规则的作用范围不全
你配置的排除规则可能只覆盖了业务源代码目录,但没覆盖第三方依赖或构建产物目录。比如parser.js可能藏在node_modules、dist或者临时构建目录下,而你的排除规则只针对src下的.js文件。检查下你的Maven插件配置,确保排除路径是全局覆盖的,示例配置如下:<properties> <sonar.exclusions>**/*.js,**/*.js.map,**/node_modules/**/*,**/dist/**/*</sonar.exclusions> </properties>重点要加上第三方依赖和构建产物目录的排除,避免插件去解析这些非业务文件。
SonarQube本地缓存的残留影响
如果之前的扫描记录里包含过parser.js,SonarQube的本地缓存可能残留了相关文件的扫描信息,导致这次扫描时还是会触发解析逻辑。你可以尝试清理缓存后重新扫描:- 删除项目根目录下的
.sonar文件夹 - 或者执行Maven命令时指定新的缓存路径:
mvn clean sonar:sonar -Dsonar.cache.path=/tmp/sonar-temp-cache
- 删除项目根目录下的
未覆盖到的临时构建产物
Angular2项目在开发或构建过程中可能会生成一些临时.js文件,这些文件的路径可能不在你的排除规则里。建议查看扫描日志里报错的parser.js具体路径,然后把这个路径明确加入到sonar.exclusions中,彻底跳过对它的扫描。
内容的提问来源于stack exchange,提问作者d-man

