Back to Vjtools

Sonar VJ 规则

standard/sonar-vj/README.md

latest2.4 KB
Original Source

Sonar VJ 规则

概述

我们使用Sonar代码检查工具来辅助《唯品会Java开发手册》的落地。选择的原因是它同时提供了服务端的公共报表,及IDE端的Sonar Lint插件,而且对比PMD与FindBugs,规则也相对容易定制。

因为Sonar有些规则存在误报的情况,我们在力所能及的范围内对规则的实现进行了修改,以符合我们的规范。

实现方式

根据Writing Custom Java Rules 101,从Sample Project复制创建,对Sonar Java规则进行修改。

使用方式

官方的Sonar Java Plugin在不断更新,以下修改未必对应其最新版,仅作为修改示例供大家参考(修改部分在代码中以//VJ 标注)。

如果需要直接使用,编译后扔进sonar的lib目录,重启sonar后取消对原规则的检查,改为使用这些编号一样,带标题带VJ字样的规则即可。

修改规则列表

编号等级规则描述修改
1068MajorUnused "private" fields should be removed忽略由Lombok自动生成的getter/setter的类,私有变量不算无用变量
1172MajorUnused method parameters should be removed只检查private方法是否有无用参数, 忽略其他公共方法
1166MajorException handlers should preserve the original exceptions忽略异常变量名含ignore字样的检查,可以不进行处理,如catch(Exception ignore)
121MajorControl structures should use curly bracesif语句忽略一般由IDE生成的equals()方法,以及if(condition) return;的单行模式
1068MajorLimited dependence should be placed on operator precedence rules in expressions忽略三目运算符,不需要加括号来清晰优先级
115MinorConstant names should comply with a naming convention忽略对枚举成员的全大写检查
1312MinorIP addresses should not be hardcoded忽略对"127.0.0.1"的检查
1291InfoTrack uses of "NOSONAR" comments忽略行内含 Exception/Throwable, System.in/System.err的//NOSOANR 检查