@RequestMapping(value = "/product/baselist", method = RequestMethod.POST)
public ResponseEntity<Object> baseListProductFilters(@RequestBody final ObjectNode json) {
LOGGER.debug("Gettig all product filters");
try {
final int offset = json.get("offset") == null ? OFFSET_AUTOCOMPL
: json.get("offset").asInt(OFFSET_AUTOCOMPL);
final int limit = json.get("limit") == null ? LIMIT_AUTOCOMPL : json.get("limit").asInt(LIMIT_AUTOCOMPL);
return ResponseEntity.status(HttpStatus.OK)
.body(filterService.getList(getUsername(), ResourceType.PRODUCT, offset, limit));
} catch (Exception e) {
LOGGER.error("Error getting product filter list: ", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(e);
}
}
这是我的代码。我安装了 PMD 代码分析器。它建议我应该只有一个返回。所以我这样做了:
@RequestMapping(value = "/product/baselist", method = RequestMethod.POST)
public ResponseEntity<Object> baseListProductFilters(@RequestBody final ObjectNode json) {
LOGGER.debug("Gettig all product filters");
ResponseEntity<Object> toReturn;
try {
final int offset = json.get("offset") == null ? OFFSET_AUTOCOMPL
: json.get("offset").asInt(OFFSET_AUTOCOMPL);
final int limit = json.get("limit") == null ? LIMIT_AUTOCOMPL : json.get("limit").asInt(LIMIT_AUTOCOMPL);
toReturn = ResponseEntity.status(HttpStatus.OK)
.body(filterService.getList(getUsername(), ResourceType.PRODUCT, offset, limit));
} catch (Exception e) {
LOGGER.error("Error getting product filter list: ", e);
toReturn = ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(e);
}
return toReturn;
}
不再有 OnlyOneReturn 违规,但出现“DD”异常。我的客户要求 OnlyOneReturn 不能被忽略。我有什么想法可以解决这个问题吗?
最佳答案
我作为 PMD 维护者的两分钱。
应谨慎对待有争议的规则集中的规则。确保添加每一个确实有意义。仅仅因为它是 PMD 的一部分就包括整个规则集通常不是一个好主意。我们正在努力建立更好的默认值/有更好的规则,但与此同时要小心。
DataflowAnomalyAnalysis 目前是一个糟糕的规则。
- 并非所有异常都意味着存在问题/有意义。 UR 异常意味着代码甚至无法编译。 DU异常在代码中其实很常见。 DD 异常最多可能指向虚假分配,但并不一定意味着存在错误。
- 该规则没有正确处理所有 Java 结构。
assert
未处理,for-each
未处理,try-with-resources
未正确处理...有很多 open issues on GitHub for this
我们确实计划最终对其进行改进(但目前不是首要任务,因为我们正在开发一些其他核心功能,我们认为这些功能对日常开发人员工作的影响要大得多)。
与此同时,您可能应该禁用该规则,或根据需要设置 add suppressions。
如果您发现更多失败场景,请提交问题。
关于java - OnlyOneReturn 无DD异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44675993/