今天开发反馈问题,实体类中定义的私有变量sonar提示有坏味道
按照sonar的意思是请删除没有使用到的变量。详细内容如下
我们都知道@Data注解是在编译后的.class文件中生成getter/setter 和重写toString等方法。
拿到.class文件反编译内容如下
而sonar扫描也是在编译后对target文件下的.class文件进行扫描
接下来就是找官方文档了文档中表明,项目中如果使用第三方库可以使用sonar.java.libraries=/*.jar进行指定
然后就修改jenkins配置,在配置中添加sonar.java.libraries=/*.jar
简单说明一下上图的 k v 配置
sonar.projectkey=projectkey /* sonar平台中相对应项目的key */
sonar.projectName=sonarName /* sonar扫描完的项目名称 */
sonar.language=java /* 扫描对象的语言 */
sonar.java.source=1.8 /* 扫描语言的版本 */
sonar.sourceFncoding=UTF-8 /* 扫描对象的编码集 */
sonar.java.libraries= /xx.jar/ /* 扫描第三方库的jar包 */
sonar.source=file /* 扫描对象的路径 */
sonar.java.binaries=class /* 编译后的文件路径 */
配置保存后运行job,再去sonar中进行查看时@Data注释的实体类中私有变量报错坏味道的问题就搞定了。
在这留个问题
各位看官大佬,起初我是怀疑sonarjava插件版本太低导致的问题,但我把插件升级到最新版(6.3.2 (build 22818)),去后再去执行@Data的问题还是存在。 我已经使用sonar.java.binaries=class指定了编译后的文件路径,同时我也检查过路径下的Swagger.class文件中也确实生成了对应的setter、getter方法,为什么sonar依旧误报