Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 抑制静态初始值设定项中的FindBugs警告_Java_Findbugs_Suppress Warnings - Fatal编程技术网

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文件名