gpt4 book ai didi

java - 自定义 XPath 规则来检查 Java 中的 catch 子句

转载 作者:行者123 更新时间:2023-12-02 05:29:50 25 4
gpt4 key购买 nike

我想通过其 Web 界面向 SonarQube 引入一个新的自定义 XPath 规则,用于检查以下情况

try{
doStuff();
} catch (SomeException e) {
handleException(e);
}

应该突出显示。鉴于

try{
doStuff();
} catch (SomeException e) {
LOG.info(e.getMessage() + " other stuff");
handleException(e);
}

应该是所需的形式。知道如何通过 XPath 表达它吗?

最佳答案

我猜您正在写有关 PMD 规则的文章。这是匹配所有 catch 语句的 XPath,这些语句没有在内部任何地方调用方法 LOG.info:

//CatchStatement[not(descendant::PrimaryPrefix/Name[@Image='LOG.info'])]

例如,对于该代码:

import java.util.logging.Logger; 

public class Test {
private Logger LOG = Logger.getLogger("");

public void main(String[] args) {
try {
doStuff();
} catch (SomeException e) { // HERE VIOLATION
handleException(e);
}
try {
doStuff();
} catch (SomeException e) {
LOG.info(e.getMessage() + " other stuff");
handleException(e);
}
}
}

它将在第 9 行发现规则违规 (} catch (SomeException e) {//HERE VIOLATION),因为该行中的 catch 语句不包含 LOG.info.

我建议您使用 PMD 设计器应用程序来编写更复杂的 PMD。它生成 Java 代码的抽象语法树,并提供编写和检查 XPath 规则的可能性。你可以找到它here

关于java - 自定义 XPath 规则来检查 Java 中的 catch 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25667781/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com