Java 功能上的DD和DU异常
我最近开始使用PMD来保持我的代码干净,它一直运行得很好,但是我在下面的函数中遇到了一些问题Java 功能上的DD和DU异常,java,pmd,Java,Pmd,我最近开始使用PMD来保持我的代码干净,它一直运行得很好,但是我在下面的函数中遇到了一些问题 private final void readFile() throws Exception{ code.clear(); imports.clear(); //DD anomaly FileReader fileReader = null; BufferedReader bufferedReader = null; try{ file
private final void readFile() throws Exception{
code.clear();
imports.clear();
//DD anomaly
FileReader fileReader = null;
BufferedReader bufferedReader = null;
try{
fileReader = new FileReader(file);
bufferedReader = new BufferedReader(fileReader);
String line;
//DU anomaly
boolean code_started = false;
//DU anomaly
while((line = bufferedReader.readLine()) != null){
if(code_started) code.add(line);
else{
if(lineIsImport(line))
imports.add(line);
else if(lineIsClassDeclaretion(line)){
code_started = true;
code.add(line);
}
}
}
}
catch(FileNotFoundException fn_ex){
throw new Exception("File not found!");
}
catch(IOException io_ex){
throw new Exception("Failed to read file: " + file.getName() + "!");
}
finally{
try{
if(bufferedReader != null)
bufferedReader.close();
if(fileReader != null)
fileReader.close();
}
catch(IOException io_ex){
throw new Exception("Failed to close reader");
}
}
}
第一个DD异常:
FileReader fileReader = null;
BufferedReader bufferedReader = null;
如果我没有将两者都设置为null,异常就会消失,但我在finally块中得到一个错误。我不知道写这篇文章的正确方法是什么
接下来是DU异常:
boolean code_started = false;
while((line = bufferedReader.readLine()) != null)
如果我不设置变量,异常会消失,但在几行之后会再次出现错误
最后一个是DU异常:
boolean code_started = false;
while((line = bufferedReader.readLine()) != null)
这个异常可能与上面的一样,但我也不知道如何修复它
如果有人能解释或演示如何以不会导致PMD显示异常的方式编写此函数,我将不胜感激 如果您使用的是Java 7或更高版本,您可以尝试使用资源。try with resources语句确保在语句末尾关闭每个资源。下面是如何使用它的示例 浏览:了解更多信息
File file = null;
//Automatically closes resources try-with-resources block
try( FileReader fileReader = new FileReader(file);BufferedReader bufferedReader = new BufferedReader(fileReader);){
String line;
boolean code_started = false;
while((line = bufferedReader.readLine()) != null){
//Code Goes Here
}
}catch(FileNotFoundException fn_ex){
throw new Exception("File not found!");
}
catch(IOException io_ex){
throw new Exception("Failed to read file: " + file.getName() + "!");
}
谢谢这解决了第一个异常。如果能看到如何在旧版本的java中解决这个问题,那就太好了。现在我对布尔变量很好奇,因为这是一个我根本不懂的变量。布尔变量的异常情况到底是什么意思?我相信随着语言的新版本发布,这些工具会不断自我更新。在PMD中部署项目时是否有选择语言版本的选项。因此,如果我告诉PMD我使用的是java 1.5,它不会标记FileReader和BufferedReader?至于DU异常-PMD只告诉我有一个DU异常和从当前行到函数末尾的行范围,对于Java版本部分,不确定…可能(从未使用过PMD)…对于第二部分,请尝试更改变量名称,可能是外壳问题…将名称更改为codeStarted或其他驼峰案例…如果仍然失败,那么让我们看看我们可以做什么。。。