【发布时间】:2018-08-19 06:52:30
【问题描述】:
SonarLint 将我的代码库中的一些变量标记为阻止程序。类似public static final String INVALID_PASSWORD = "Your password is invalid.";
SonarLint 认为该变量可能包含硬编码密码,这是一个安全风险。但在这种情况下,变量不包含密码,它包含有关密码的消息。
我也有一些像 public static final String INVALID_PASSWORD = "INVALID_PASSWORD"; 这样的代码而不是字符串,SonarLint 也会标记。
“解决”此类问题的最佳做法是什么?想到的两个解决方案是重命名变量和使用@SupressWarnings("code here") 注释。
SonarLint 本身是否对此问题有建议?是否有行业最佳实践?
【问题讨论】:
-
最佳做法是为变量选择最佳名称。如果您认为 INVALID_PASSWORD 是最佳名称,请忽略该警告。如果您认为有更好的名称,请重命名变量。
-
最佳实践取决于您的需要,例如,第一个字符串看起来像是显示给最终用户的内容 - 在这种情况下,将字符串转换为资源可能会更好。至少 C# 版本的规则不会抱怨资源,因为它们被认为是自动生成的......