PMD:变量的DD异常

3

我正在使用带有PMD插件(4.0.0.v20130510-1000)的Eclipse,并且得到了许多这些违规行为,并解决了大部分,但我不明白为什么在下面的代码中会出现DD异常

private boolean createFile(final String szFileName){
    final File oFile = FileUtils.getFile(szFileName);
    boolean bStatus;
    try {
        FileUtils.touch(oFile);
        bStatus = true; // DD anomaly
    } catch (IOException e) {           
        log.error("Failed to create new file. "+ e);
        bStatus = false;
    }
    return bStatus;
}

我不能使用多个返回语句,因为这会违反多个出口点规则。

尝试了另一种方法,但结果是DD异常到另一行。

private boolean createFile(final String szFileName){
        final File oFile = FileUtils.getFile(szFileName);
        boolean bStatus = true; // DD anomaly
        try {
            FileUtils.touch(oFile);
        } catch (IOException e) {           
            log.error("Failed to create new file. "+ e);
            bStatus = false;
        }
        return bStatus;
    }

为什么不最初将bStatus设置为true,如果抛出异常,则将其设置为false?在try块中无需将其设置为true - Jonny Henly
@JonnyHenly 尝试了这个,但现在 boolean bStatus = true; 出现了 DD 异常。 - Kaustubh Khare
为什么不让 createFile 抛出 IOException 并在上游处理它呢?然后你可以让 createFile 返回 void,或者更好的是让它返回创建的文件。 - Jonny Henly
@JonnyHenly 是的,这很完美。谢谢! - Kaustubh Khare
如果有其他人有类似的问题,我会将它作为答案添加进来。 - Jonny Henly
1个回答

1
另一种方法是让createFile抛出一个IOException并在上游处理它。然后你可以让createFile返回void,或者更好的是让它返回创建的文件。这将消除你收到的DD异常

替代方案createFile

private File createFile(final String szFileName) throws IOException {
    final File oFile = FileUtils.getFile(szFileName);        
    FileUtils.touch(oFile);

    return oFile;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接