PMD:变量的DD异常
PMD : DD anomaly for variable
我将 Eclipse 与 PMD 插件 (4.0.0.v20130510-1000) 一起使用,遇到了很多违规问题并解决了大部分问题,但我不明白为什么 DD anomaly
出现在下面的代码中
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;
}
我不能使用多个 return 语句,因为 multiple exit point
规则被破坏了。
试过其他方法,但是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;
}
另一种方法是让 createFile
抛出一个 IOException
并在上游处理它。然后你可以 createFile
return void
,或者更好的是 return 它创建的文件。这将摆脱您收到的 DD anomaly
。
备选方案createFile
:
private File createFile(final String szFileName) throws IOException {
final File oFile = FileUtils.getFile(szFileName);
FileUtils.touch(oFile);
return oFile;
}
我将 Eclipse 与 PMD 插件 (4.0.0.v20130510-1000) 一起使用,遇到了很多违规问题并解决了大部分问题,但我不明白为什么 DD anomaly
出现在下面的代码中
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;
}
我不能使用多个 return 语句,因为 multiple exit point
规则被破坏了。
试过其他方法,但是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;
}
另一种方法是让 createFile
抛出一个 IOException
并在上游处理它。然后你可以 createFile
return void
,或者更好的是 return 它创建的文件。这将摆脱您收到的 DD anomaly
。
备选方案createFile
:
private File createFile(final String szFileName) throws IOException {
final File oFile = FileUtils.getFile(szFileName);
FileUtils.touch(oFile);
return oFile;
}