As the rule designer has a toggle for XPath 1.0 vs. 2.0, I assume XPath 2.0 should be supported?
Because if I use some @BeginColumn = (17, 60) in a violationSuppressXPath value, I get a syntax error.
java.lang.RuntimeException: XPath expression
.[(ancestor::ClassOrInterfaceDeclaration/@Image = 'DiscordWebhooksDiscordManager')
and (@BeginLine = 98)
and (@BeginColumn = (17, 60))]"
failed: Expected: )
at net.sourceforge.pmd.lang.ast.AbstractNode.hasDescendantMatchingXPath(AbstractNode.java:432)
at net.sourceforge.pmd.lang.rule.ParametricRuleViolation.setSuppression(ParametricRuleViolation.java:71)
at net.sourceforge.pmd.lang.rule.ParametricRuleViolation.<init>(ParametricRuleViolation.java:54)
at net.sourceforge.pmd.lang.java.rule.JavaRuleViolation.<init>(JavaRuleViolation.java:50)
at net.sourceforge.pmd.lang.java.rule.JavaRuleViolationFactory.createRuleViolation(JavaRuleViolationFactory.java:24)
at net.sourceforge.pmd.lang.rule.AbstractRuleViolationFactory.addViolation(AbstractRuleViolationFactory.java:37)
at net.sourceforge.pmd.lang.rule.AbstractRule.addViolation(AbstractRule.java:359)
at net.sourceforge.pmd.lang.rule.XPathRule.evaluate(XPathRule.java:116)
at net.sourceforge.pmd.lang.java.rule.JavaRuleChainVisitor.visit(JavaRuleChainVisitor.java:42)
at net.sourceforge.pmd.lang.rule.AbstractRuleChainVisitor.visitAll(AbstractRuleChainVisitor.java:96)
at net.sourceforge.pmd.RuleChain.apply(RuleChain.java:67)
at net.sourceforge.pmd.RuleSets.apply(RuleSets.java:140)
at net.sourceforge.pmd.SourceCodeProcessor.processSource(SourceCodeProcessor.java:184)
at net.sourceforge.pmd.SourceCodeProcessor.processSourceCode(SourceCodeProcessor.java:96)
at net.sourceforge.pmd.SourceCodeProcessor.processSourceCode(SourceCodeProcessor.java:51)
at net.sourceforge.pmd.processor.PmdRunnable.call(PmdRunnable.java:78)
at net.sourceforge.pmd.processor.MonoThreadProcessor.runAnalysis(MonoThreadProcessor.java:29)
at net.sourceforge.pmd.processor.AbstractPMDProcessor.processFiles(AbstractPMDProcessor.java:108)
at net.sourceforge.pmd.PMD.processFiles(PMD.java:329)
at net.sourceforge.pmd.ant.internal.PMDTaskImpl.doTask(PMDTaskImpl.java:190)
at net.sourceforge.pmd.ant.internal.PMDTaskImpl.execute(PMDTaskImpl.java:275)
at net.sourceforge.pmd.ant.PMDTask.execute(PMDTask.java:50)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:293)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
at groovy.util.AntBuilder.performTask(AntBuilder.java:338)
at groovy.util.AntBuilder.nodeCompleted(AntBuilder.java:283)
at org.gradle.api.internal.project.ant.BasicAntBuilder.nodeCompleted(BasicAntBuilder.java:78)
at jdk.internal.reflect.GeneratedMethodAccessor1888.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:98)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
at org.gradle.internal.metaobject.BeanDynamicObject$MetaClassAdapter.invokeMethod(BeanDynamicObject.java:479)
at org.gradle.internal.metaobject.BeanDynamicObject.tryInvokeMethod(BeanDynamicObject.java:191)
at org.gradle.internal.metaobject.AbstractDynamicObject.invokeMethod(AbstractDynamicObject.java:160)
at org.gradle.api.internal.project.antbuilder.AntBuilderDelegate.nodeCompleted(AntBuilderDelegate.java:118)
at groovy.util.BuilderSupport.doInvokeMethod(BuilderSupport.java:154)
at groovy.util.BuilderSupport.invokeMethod(BuilderSupport.java:67)
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:47)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:136)
at org.gradle.api.plugins.quality.internal.PmdInvoker$_invoke_closure2.doCall(PmdInvoker.groovy:62)
at jdk.internal.reflect.GeneratedMethodAccessor283.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:98)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:264)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1034)
at groovy.lang.Closure.call(Closure.java:418)
at groovy.lang.Closure.call(Closure.java:434)
at org.gradle.api.internal.ClosureBackedAction.execute(ClosureBackedAction.java:71)
at org.gradle.api.internal.ClosureBackedAction.execute(ClosureBackedAction.java:53)
at org.gradle.api.internal.project.antbuilder.DefaultIsolatedAntBuilder$2.execute(DefaultIsolatedAntBuilder.java:152)
at org.gradle.api.internal.project.antbuilder.DefaultIsolatedAntBuilder$2.execute(DefaultIsolatedAntBuilder.java:134)
at org.gradle.api.internal.project.antbuilder.ClassPathToClassLoaderCache.withCachedClassLoader(ClassPathToClassLoaderCache.java:134)
at org.gradle.api.internal.project.antbuilder.DefaultIsolatedAntBuilder.execute(DefaultIsolatedAntBuilder.java:128)
at org.gradle.api.internal.project.IsolatedAntBuilder$execute$0.call(Unknown Source)
at org.gradle.api.plugins.quality.internal.PmdInvoker.invoke(PmdInvoker.groovy:60)
at org.gradle.api.plugins.quality.Pmd.run(Pmd.java:93)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.doExecute(StandardTaskAction.java:46)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:39)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:26)
at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:801)
at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:768)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:131)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:300)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:292)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:174)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:120)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:99)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:77)
at org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51)
at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:59)
at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)
at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:59)
at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:101)
at org.gradle.api.internal.tasks.execution.FinalizeInputFilePropertiesTaskExecuter.execute(FinalizeInputFilePropertiesTaskExecuter.java:44)
at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:91)
at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:62)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:59)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)
at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.run(EventFiringTaskExecuter.java:51)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:300)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:292)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:174)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:46)
at org.gradle.execution.taskgraph.LocalTaskInfoExecutor.execute(LocalTaskInfoExecutor.java:42)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareWorkItemExecutor.execute(DefaultTaskExecutionGraph.java:277)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareWorkItemExecutor.execute(DefaultTaskExecutionGraph.java:262)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:135)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:130)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker.execute(DefaultTaskPlanExecutor.java:200)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker.executeWithWork(DefaultTaskPlanExecutor.java:191)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$ExecutorWorker.run(DefaultTaskPlanExecutor.java:130)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: org.jaxen.XPathSyntaxException: Expected: )
at org.jaxen.BaseXPath.<init>(BaseXPath.java:121)
at org.jaxen.BaseXPath.<init>(BaseXPath.java:142)
at net.sourceforge.pmd.lang.ast.AbstractNode.findChildNodesWithXPath(AbstractNode.java:423)
at net.sourceforge.pmd.lang.ast.AbstractNode.hasDescendantMatchingXPath(AbstractNode.java:430)
... 114 more
Caused by: class org.jaxen.saxpath.XPathSyntaxException:
.[(ancestor::ClassOrInterfaceDeclaration/@Image = 'DiscordWebhooksDiscordManager')
and (@BeginLine = 98)
and (@BeginColumn = (17, 60))]"
: 197: Expected: )
at org.jaxen.saxpath.base.XPathReader.createSyntaxException(XPathReader.java:1085)
at org.jaxen.saxpath.base.XPathReader.match(XPathReader.java:1038)
at org.jaxen.saxpath.base.XPathReader.filterExpr(XPathReader.java:274)
at org.jaxen.saxpath.base.XPathReader.pathExpr(XPathReader.java:142)
at org.jaxen.saxpath.base.XPathReader.unionExpr(XPathReader.java:1007)
at org.jaxen.saxpath.base.XPathReader.unaryExpr(XPathReader.java:995)
at org.jaxen.saxpath.base.XPathReader.multiplicativeExpr(XPathReader.java:943)
at org.jaxen.saxpath.base.XPathReader.additiveExpr(XPathReader.java:913)
at org.jaxen.saxpath.base.XPathReader.relationalExpr(XPathReader.java:860)
at org.jaxen.saxpath.base.XPathReader.equalityExpr(XPathReader.java:840)
at org.jaxen.saxpath.base.XPathReader.andExpr(XPathReader.java:809)
at org.jaxen.saxpath.base.XPathReader.orExpr(XPathReader.java:787)
at org.jaxen.saxpath.base.XPathReader.expr(XPathReader.java:780)
at org.jaxen.saxpath.base.XPathReader.filterExpr(XPathReader.java:273)
at org.jaxen.saxpath.base.XPathReader.pathExpr(XPathReader.java:142)
at org.jaxen.saxpath.base.XPathReader.unionExpr(XPathReader.java:1007)
at org.jaxen.saxpath.base.XPathReader.unaryExpr(XPathReader.java:995)
at org.jaxen.saxpath.base.XPathReader.multiplicativeExpr(XPathReader.java:943)
at org.jaxen.saxpath.base.XPathReader.additiveExpr(XPathReader.java:913)
at org.jaxen.saxpath.base.XPathReader.relationalExpr(XPathReader.java:860)
at org.jaxen.saxpath.base.XPathReader.equalityExpr(XPathReader.java:829)
at org.jaxen.saxpath.base.XPathReader.andExpr(XPathReader.java:809)
at org.jaxen.saxpath.base.XPathReader.andExpr(XPathReader.java:819)
at org.jaxen.saxpath.base.XPathReader.andExpr(XPathReader.java:819)
at org.jaxen.saxpath.base.XPathReader.orExpr(XPathReader.java:787)
at org.jaxen.saxpath.base.XPathReader.expr(XPathReader.java:780)
at org.jaxen.saxpath.base.XPathReader.predicateExpr(XPathReader.java:775)
at org.jaxen.saxpath.base.XPathReader.predicate(XPathReader.java:766)
at org.jaxen.saxpath.base.XPathReader.predicates(XPathReader.java:751)
at org.jaxen.saxpath.base.XPathReader.abbrStep(XPathReader.java:730)
at org.jaxen.saxpath.base.XPathReader.step(XPathReader.java:514)
at org.jaxen.saxpath.base.XPathReader.steps(XPathReader.java:442)
at org.jaxen.saxpath.base.XPathReader.relativeLocationPath(XPathReader.java:426)
at org.jaxen.saxpath.base.XPathReader.locationPath(XPathReader.java:340)
at org.jaxen.saxpath.base.XPathReader.pathExpr(XPathReader.java:179)
at org.jaxen.saxpath.base.XPathReader.unionExpr(XPathReader.java:1007)
at org.jaxen.saxpath.base.XPathReader.unaryExpr(XPathReader.java:995)
at org.jaxen.saxpath.base.XPathReader.multiplicativeExpr(XPathReader.java:943)
at org.jaxen.saxpath.base.XPathReader.additiveExpr(XPathReader.java:913)
at org.jaxen.saxpath.base.XPathReader.relationalExpr(XPathReader.java:860)
at org.jaxen.saxpath.base.XPathReader.equalityExpr(XPathReader.java:829)
at org.jaxen.saxpath.base.XPathReader.andExpr(XPathReader.java:809)
at org.jaxen.saxpath.base.XPathReader.orExpr(XPathReader.java:787)
at org.jaxen.saxpath.base.XPathReader.expr(XPathReader.java:780)
at org.jaxen.saxpath.base.XPathReader.parse(XPathReader.java:100)
at org.jaxen.BaseXPath.<init>(BaseXPath.java:116)
... 117 more
As the rule designer has a toggle for XPath 1.0 vs. 2.0, I assume XPath 2.0 should be supported?
Because if I use some
@BeginColumn = (17, 60)in aviolationSuppressXPathvalue, I get a syntax error.