Java 抑制静态初始值设定项中的FindBugs警告
我有一个静态初始值设定项,在这里我创建一个新的Java 抑制静态初始值设定项中的FindBugs警告,java,findbugs,suppress-warnings,Java,Findbugs,Suppress Warnings,我有一个静态初始值设定项,在这里我创建一个新的文件对象。当我将名称传递给它时,FindBugs报告由于硬编码的绝对路径而产生的警告。如何抑制此警告 private static final String fileName = "/tmp/m123.txt"; static { if (new File(fileName).exists()) { .... } } 您可以将此硬编码文件名移动到属性文件或命令行参数等 有关属性文件的教程,请参见此页 在您希望忽略此警
文件
对象。当我将名称传递给它时,FindBugs报告由于硬编码的绝对路径而产生的警告。如何抑制此警告
private static final String fileName = "/tmp/m123.txt";
static {
if (new File(fileName).exists()) {
....
}
}
您可以将此硬编码文件名移动到属性文件或命令行参数等 有关属性文件的教程,请参见此页
在您希望忽略此警告的情况下,尽管根据findbugs.sourceforge.net/manual/running.html页面的命令行选项,您可以使用-exclude filterFile.xml您可以使用ENUM,我使用ENUM消除字符串/文本的硬编码findbugs和pmd都不显示错误或警告
public enum MyFiles {
FILE_NAME("/kp/kp1/kp2.tx");
private String value;
MyFiles(String value){
this.value = value;
}
您的文件名不是大写,因此pmd将为同一文件显示类型1的错误。所以把它改成大写
private static final String FILE_NAME = "/tmp/m123.txt"
通常情况下,我不会提倡过多地重构代码以避免警告,但在这种情况下,您会陷入困境,因为您无法注释静态初始值设定项。您可以将代码移动到另一个类中的静态方法,您可以使用
SuppressFBWarnings
进行注释
public class MainClass {
private static final String FILE_NAME = "/tmp/m123.txt";
static {
HelperClass.loadFile(FILE_NAME);
}
}
public class HelperClass {
@SuppressFBWarnings("DMI_HARDCODED_ABSOLUTE_FILENAME")
public static void loadFile(String fileName) {
if (new File(fileName).exists()) {
....
}
}
}
提取代码实际上可能足以避免警告,但我以前从未遇到过此警告。我已经将文件名定义为公共静态最终字符串。。。这还不够吗?谢谢。。。但是,没有其他方法可以抑制此警告吗?是的,根据页面,您可以使用
-exclude filterFile.xml
注释如何。。。我可以使用注释抑制许多警告,但这一个不行。。。为什么?好的,这是一个不同的问题,我不知道答案。你能发布代码吗?听起来像是硬编码的数据。。。您考虑过将其移动到注释中吗?您好,我已经更新了我的代码示例。。。警告类型为DMI\u硬编码\u绝对\u文件名