Avoid long parameter lists.
|
方法参数过多,最多允许5个
|
Missing a Javadoc comment.
|
需要注释
|
Expected @param tag for 'area'.
|
需要注释
|
Expected @return tag.
|
需要注释
|
Expected @throws tag for 'Exception'.
|
需要注释
|
Unused @param tag for 'licenseInfoMap'.
|
修改注释
|
Line is longer than 160 characters (found 162).
|
每一行代码不得超过160个字符,需要分行
|
Add a private constructor to hide the implicit public one.
|
常量类和工具类需要一个私有的构造器,同时将该类定义为final,不可继承
|
Variables that are final and static should be all capitals, 'logger' is not all capitals.
|
final修饰的变量名称需要全部大写
|
Only variables that are final should contain capitals (except for underscores in standard prefix/suffix), '_tar' is not final.
|
只有final修饰的变量名称中才可以有下划线,要么去掉下划线,要么加上final修饰符,Map,List和java对象加上final修饰符后,代表这个对象指向的内存地址不可变,但内容和值都是可以改变的
|
Name '_targetDataSources' must match pattern '(^[a-z][a-z0-9][a-zA-Z0-9]{0,50}$)'.
|
变量命名需要符合正则表达式
|
The field name indicates a constant but its modifiers do not
|
变量没有final修饰却使用了final变量的命名规则
|
Variables should start with a lowercase character, 'SUSPEND_MAP' starts with uppercase character.
|
普通变量(即没有final修饰)需要驼峰式命名,首字母为小写
|
More than 8 parameters (found 9).
|
构造方法只能有7个参数
|
Constructor has 9 parameters, which is greater than 7 authorized.
|
构造方法只能有7个参数
|
Define a constant instead of duplicating this literal "muluList" 6 times.
|
某个字符串出现了4次或以上,需要定义一个常量来代替
|
A method/constructor shouldnt explicitly throw java.lang.Exception
|
不能直接抛出Exception,需要精确到具体的异常,且最多抛出4个,超过请try catch
|
Define and throw a dedicated exception instead of using a generic one.
|
不能直接抛出Exception,需要精确到具体的异常,且最多抛出4个,超过请try catch
|
Remove this useless assignment to local variable "orgnIdL".
|
一个没有使用的变量,删掉即可
|
Avoid unused private fields such as 'fastGroup'.
|
一个没有使用的变量,删掉即可。如果不能删,则将private改为protected或default即可。
|
Exceptional return value of java.io.File.mkdirs() ignored in ...
|
mkdirs方法有返回值,如果是false则代表文件夹创建失败,需要处理。判断返回值是否正确,并进行处理,如记日志或抛异常等
|
Exceptional return value of java.io.File.delete() ignored in ...
|
delete方法有返回值,如果是false则代表文件删除失败,需要处理。判断返回值是否正确,并进行处理,如记日志或抛异常等
|
Use "java.nio.Files#delete" here for better messages on error conditions.
|
使用Files.delete(file.toPath())来代替file.delete()
|
Suspicious comparison of a Integer reference to constant in ...
|
Integer需要使用equals来比较,这是由于超出(-128~127)范围后,==无法比较,但equals性能较低
|
Refactor the code in order to not assign to this loop counter from within the loop body.
|
不要在循环体内操作计数器,重构代码
|
Rename "jdbcTemplate" which hides the field declared at line 116.
|
一个类中变量名称重复,重命名变量名称即可
|
Field ssoServer has the same name as a method
|
一个类中字段名称和方法名称重复,重命名即可
|
Merge this if statement with the enclosing one.
|
多个if可以合并,合并成一个
|
Replace the synchronized class "StringBuffer" by an unsynchronized one such as "StringBuilder".
|
StringBuffer需要换成StringBuilder
|
A "NullPointerException" could be thrown; "dataResults" is nullable here.
|
在使用对象之前需要对这个对象进行非空判断
|
Possible null pointer dereference of track in ...
|
在使用对象之前需要对这个对象进行非空判断
|
Update this method so that its implementation is not identical to "getDvStatus" on line 149.
|
两个方法的内容完全一致,不用写两遍,在其中一个方法中调用另一个方法即可。或者删掉一个,全部使用另一个方法
|
Add a nested comment explaining why this method is empty, throw an UnsupportedOperationException or complete the implementation.
|
空的方法体内部需要写一个注释
|
Avoid throwing raw exception types.
|
自定义一个异常来继承RuntimeException,然后抛出这个自定义的异常,而不是抛出通用的RuntimeException
|
Define and throw a dedicated exception instead of using a generic one.
|
自定义一个异常来继承RuntimeException,然后抛出这个自定义的异常,而不是抛出通用的RuntimeException
|
New exception is thrown in catch block, original stack trace may be lost
|
在catch中抛出异常会使抛出的异常混淆,所以抛出的异常必须带着原异常信息。例如:throw new BusinessException(errorMsg, e)这里第二个参数是必须的
|
Avoid empty catch blocks
|
catch代码块不能为空
|
Either remove or fill this block of code.
|
删掉或填充这个代码块
|
Return an empty collection instead of null.
|
返回空集合Collections.emptyList()而不是null
|
Put single-quotes around '-' to use the faster "indexOf(char)" method.
|
将双引号改为单引号,理由是用char来找字符比用String来找效率更高
|
Method length is 221 lines (max allowed is 200).
|
一个方法最多200行,试着压缩,实在不行只能拆成多个方法
|
Avoid printStackTrace(); use a logger call instead.
|
catch中使用logger.error来代替e.printStackTrace()。Logger logger = LoggerFactory.getLogger(this.getClass())。记住,logger不可以在数据库对象类中使用
|
Remove this expression which always evaluates to "true"
|
这个判断语句总是为true,删掉即可
|
... concatenates strings using + in a loop
|
在循环中String不要用加号来拼接,而是使用StringBuilder
|
Avoid using implementation types like 'LinkedHashMap'; use the interface instead
|
在方法的参数中不要使用具体的实现类对象,而是使用它的接口对象。例如:不用LinkedHashMap而用Map
|
Iterate over the "entrySet" instead of the "keySet".
|
遍历Map不使用keySet而使用entrySet
|
... makes inefficient use of keySet iterator instead of entrySet iterator
|
遍历Map不使用keySet而使用entrySet
|
Move constants to a class or enum.
|
接口中不要定义常量,移到常量类中
|
Boxing/unboxing to parse a primitive ...
|
使用parse方法来代替valueOf方法
|
Null passed for non-null parameter of ...
|
将一个可能为空的参数传到了一个方法中,但在该方法中,该参数不可为空。修改这个方法,在使用变量前进行非空判断,则这个参数就成为了可为空参数
|
Remove this "Integer" constructor
|
不要使用new Integer来初始化变量的值,使用Integer.valueOf
|
new com.model.CatalogInfo() invokes inefficient new Integer(int) constructor; use Integer.valueOf(int) instead
|
不要使用new Integer来初始化变量的值,使用Integer.valueOf
|
HTTP parameter directly written to HTTP header output in ...
|
resp.setHeader("Content-Disposition", "attachment;filename = " + fileName)改为resp.setHeader("Content-Disposition", "attachment;filename = " + new String(fileName.getBytes("GBK"), "ISO8859-1"))
|
Relative path traversal in ...
|
new File(filePath + fileName)改为new File(filePath, fileName)。还有使用new FileInputStream(File srcFile)而不是使用new FileInputStream(filePath + fileName)
|
Boxing/unboxing to parse a primitive ...
|
.valueOf改为.parseXXX,这是由于valueOf返回的是包装类对象,而parseXXX返回的是值
|
Use try-with-resources or close this "FileInputStream" in a "finally" clause.
|
使用try(FileInputStream inFile = new FileInputStream(file)){System.out.println("...")}catch{}且不需要finally代码块来关闭,这是jdk1.7的新写法,可以将一些可自动关闭的资源写在try()中,就可以直接实现自动关闭
|
Change this "try" to a try-with-resources. (sonar.java.source not set. Assuming 7 or greater.)
|
使用try(FileInputStream inFile = new FileInputStream(file)){System.out.println("...")}catch{}且不需要finally代码块来关闭,这是jdk1.7的新写法,可以将一些可自动关闭的资源写在try()中,就可以直接实现自动关闭
|
Replace this use of System.out or System.err by a logger.
|
System.out换成logger.info。记住,logger不可以在数据库对象类中使用。
|
System.out.println is used
|
System.out换成logger.info。记住,logger不可以在数据库对象类中使用。
|
Variable 'auditTypeName' must be private and have accessor methods.
|
只有静态变量才可以用public修饰,所以public改为private或protected或default
|
The return value of "valueOf" must be used.
|
这个语句的返回值必须要被使用,删掉或者使用它
|
Return value of String.valueOf(Object) ignored in ...
|
这个语句的返回值必须要被使用,删掉或者使用它
|
Synchronize this method to match the synchronization on "setSuspendMap".
|
一组get和set方法,如果其中一个方法被synchronized修饰,则另一个也需要使用synchronized 修饰
|
An empty statement (semicolon) not part of a loop
|
双分号导致sonar认为两个分号之间有一个空语句,删掉一个分号即可
|
Avoid empty if statements
|
if代码块不能为空,删掉或填充代码
|
A class which only has private constructors should be final
|
有private构造函数的类需定义为final类
|
Class Convert2Track should be declared as final.
|
该类需定义为final类
|
Verify this is the key that was intended; it was already set before.
|
该key之前已被塞入过一次,一个key塞两次没有意义,去掉一次
|
Extract this nested try block into a separate method.
|
不要在try代码块中再次使用try,去掉内部的,或者把内部的try代码块拉到外面去
|
Absolute path traversal in ...
|
直接将文件的绝对路径传到后台,然后生成File对象即会报错。如D:\1.jpg,不可直接传绝对路径,如果知道这个文件会在d盘,可定义常量D:\,然后传值为1.jpg,后台进行拼接后生成File对象即可
|
Only one statement per line allowed.
|
每一行只允许一个语句,可能是多写了分号,去掉即可
|
Make this anonymous inner class a lambda (sonar.java.source not set. Assuming 8 or greater.)
|
jdk1.8之后推荐使用兰布达表达式。请参考:https://blog.csdn.net/qq_33865313/article/details/81203412
|
Non-virtual method call in ... passes null for non-null parameter of ...
|
将一个可能为空的参数传到了一个方法中,但在该方法中,该参数不可为空。修改这个方法,在使用变量前进行非空判断,则这个参数就成为了可为空参数
|
A "NullPointerException" could be thrown; "printStream" is nullable here.
|
可能会抛出空指针异常,先进行非空判断
|
... could be null and is guaranteed to be dereferenced in ...
|
可能会抛出空指针异常,先进行非空判断
|
Unused import - ...
|
引入了一个类,但是没有使用,删掉即可
|
2' is a magic number.
|
这是一个魔术数字,需要定义一个常量,然后引用常量,而不是直接使用这个数字
|
+' is preceded with whitespace.
|
代码之前不能有空格,删掉空格即可
|
;' is not followed by whitespace.
|
代码之后没有空格,需要添加一个空格
|
?' is not preceded with whitespace.
|
代码之前没有空格,需要添加一个空格
|
Redundant 'private' modifier.
|
这个修饰符是多余的,删掉该修饰符即可
|
Incorrect lazy initialization of static field
|
对静态变量的延迟初始化有问题。一般可以试着把static修饰符去掉,或者在静态代码块中进行static变量的初始化。
|
... Service not allowed Autowired field ...
|
Service中不允许自动注解Manager,一般Service中都是注解其他Service,删掉这个Manager,换成相同功能的Service
|
Unread field: ... should this field be static?
|
final修饰的字段需要加上static修饰符
|
member def modifier' has incorrect indentation level 8, expected level should be 4.
|
缩进不对,可以删掉前面的缩进,用Tab键缩进,或者MyEclipse用Ctrl+Shift+F格式化代码
|
Change this code to use a stronger protocol.
|
修改编码以使用更强壮的协议,照着给的编码改就行
|
for child at indentation level 21 not at correct indentation, 20
|
首行缩进不对,使用Tab键进行缩进
|
0 is a valid index, but is ignored by this check.
|
0是一个有效的值,但在这里不能用。一般都是要用特殊的值,比如indexOf应该使用>=0或>-1
|
Use already-defined constant '...' instead of duplicating its value here.
|
使用已经定义的常量,而不是在这里复制它的值
|
Using the '.*' form of import should be avoided - ...
|
不要使用.*的方式将所有类导入进来,而应该详细的导入每一个用到的类
|