我正在尝试创建一个自定义规则,用于标记void方法中return语句的使用,例如:
public class MyClass
{
public void myMethod(Object someObj)
{
if (someObj == null)
{
return;
}
...
}
}
我用以下XPath创建了一个自定义XPath规则:
//MethodDeclaration[not(ResultType/Type) and (count(//ReturnStatement) > 0)]
但是当我将此规则导入Eclipse并对代码运行PMD时,它并没有标记我期望的方法,即与上述描述匹配的方法(包含返回的无效方法)。
有人知道这里有什么问题吗?我的XPath有问题吗?或者可能是别的原因?
我使用v3.2.6的插件,其中包含pmd14-4.2.5.jar.
谢了克里斯
好了,问题解决了。XPath逻辑是错误的,我在运行Ant任务后意识到了这一点,然后返回
这个XPath有效,比原来的XPath更简单,并突出显示返回语句本身,而不是方法,这可能比我突出显示方法的初衷要好:
//MethodDeclaration[not(ResultType/Type)]//ReturnStatement
这就是你使用的XPath吗?它的格式不好。(它缺少一个接近的参数。)我建议编写一个测试工具来测试独立于PMD的xpath。您可以在Eclipse(或者我认为是独立的)中为一个类生成AST,这样您就有了运行它的XML。
我试图在SonarQube上运行我的自定义PMD规则,但到目前为止,没有成功。 我创建了一个从sonar-pmd-plugin扩展的插件。在这个插件中,我有我的PMD规则集文件(custom_rules.xml)、一个声纳规则文件(pmd-extensions.xml)和我的自定义规则的Java类。 SonarQube识别了我的规则,我已经在默认的质量配置文件中启用了它们。最后,当我在给定的项目上
在PyCharm中,是否可以为文件定义语法高亮的自定义规则,这些规则结合了两种不同语言的语法? 一个有点做作的例子:以下文件应被视为HTML,脚本标记中的文本除外,脚本标记应视为Python代码。 让代码完成工作的加分。 注意“IntelliLang”扩展特性并不合适,因为在第二个块中,它看不到前面块中声明的变量。
我已经为我的自定义帖子类型注册了自定义分类法: 工作如预期-我可以为我的自定义帖子选择自定义类别。 然后我将其添加到自定义菜单中: 它显示: 当我点击它(“类别”链接)时,分类法编辑页面加载良好,但是,父菜单显示为折叠,子菜单(“类别”)不突出显示: 另一方面,定制的post类型(linke“virtualproducts”)工作正常(见第一张图)。 我可以做一些破解/解决方法,使用JS/CSS使
我使用checkstyle API编写了几个自定义checkstyle规则。它们使用Maven运行良好(在我将新项目作为依赖项添加到checkstyle插件之后)。 null
我们在中基于BaseTreeVisitor实现了一个自定义规则https://github.com/SonarSource/sonar-java/tree/master/java-checks/src/main/java/org/sonar/java/checks如中所述http://docs.sonarqube.org/display/SONAR/Extending编码规则。我们能够部署它,它看
我正在尝试用Java编写自定义PMD规则。我创建了一个自定义规则集,如下所示: 我调用使用这个Java类: 不幸的是,找不到我用Java编写的自定义规则;这是来自PmdStarter的消息: 找不到mwe的班级。习惯规则 这是我的(最小)自定义规则: 这是我在Eclipse中的项目结构: 我在这里读到,这种错误似乎是类路径错误。读完这篇文章后,我把放在项目中的几个目录中,希望PMD能找到它。 我的