Eli*_*852 2 java static-analysis magic-numbers sonarqube
有没有办法在Java中找到所有硬编码的数字和字符串?我的意思是没有放入专用变量的值.
例如 :
while (i < 6) {
System.out.println("6 is a number"); // Hard Coded, "Magic" String
}
Run Code Online (Sandbox Code Playgroud)
我得到了SonarQube的建议,但我不知道如何使用它.
SonarJava的Java插件SonarJava有明确针对魔术数字的规则.请参阅此处的说明:S109 - 不应使用幻数.
还有一条规则要求你定义常量而不是多次使用相同的字符串,但只有在同一个文件中使用时(如在另一个答案中已经提到的那样)(S1192 - 字符串文字不应该重复) .因此,它不会标记在任何方法的主体中仅使用一次的任何字符串常量,也不会标识分布在多个文件中的重复常量.
如果您迫切需要跟踪项目中所有字符串常量的使用情况,最好的方法是编写自己的规则,作为自定义插件的一部分(请参阅编写自定义Java规则).
现在,如果您想从这些规则中受益,您唯一需要做的就是设置项目分析,以便对代码执行SonarQube分析,并确保启用所需的所有规则,如它们并非都是默认质量配置文件的一部分(有关设置的详细信息,请参阅SonarQube或SonarCloud网站).