Comments (5)
Here's the PMD report file (build/outputs/gnag/pmd.xml) from the fix-pmd branch as-is:
<?xml version="1.0" encoding="UTF-8"?>
<pmd xmlns="http://pmd.sourceforge.net/report/2.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://pmd.sourceforge.net/report/2.0.0 http://pmd.sourceforge.net/report_2_0_0.xsd"
version="6.10.0" timestamp="2019-01-03T21:34:33.940">
<file name="/Users/stkent/dev/personal/libraries/gnag/example-java-kotlin/src/main/java/com/btkelly/gnag/example/JavaFileInJavaSourceSet.java">
<violation beginline="28" endline="28" begincolumn="13" endcolumn="31" rule="CompareObjectsWithEquals" ruleset="Error Prone" package="com.btkelly.gnag.example" class="JavaFileInJavaSourceSet" method="main" externalInfoUrl="https://pmd.github.io/pmd-6.10.0/pmd_rules_java_errorprone.html#compareobjectswithequals" priority="3">
Use equals() to compare object references.
</violation>
<violation beginline="29" endline="29" begincolumn="13" endcolumn="28" rule="SystemPrintln" ruleset="Best Practices" package="com.btkelly.gnag.example" class="JavaFileInJavaSourceSet" method="main" externalInfoUrl="https://pmd.github.io/pmd-6.10.0/pmd_rules_java_bestpractices.html#systemprintln" priority="2">
System.out.print is used
</violation>
<violation beginline="33" endline="33" begincolumn="13" endcolumn="28" rule="SystemPrintln" ruleset="Best Practices" package="com.btkelly.gnag.example" class="JavaFileInJavaSourceSet" method="main" externalInfoUrl="https://pmd.github.io/pmd-6.10.0/pmd_rules_java_bestpractices.html#systemprintln" priority="2">
System.out.print is used
</violation>
<violation beginline="34" endline="34" begincolumn="18" endcolumn="26" rule="AvoidCatchingGenericException" ruleset="Design" package="com.btkelly.gnag.example" class="JavaFileInJavaSourceSet" method="main" externalInfoUrl="https://pmd.github.io/pmd-6.10.0/pmd_rules_java_design.html#avoidcatchinggenericexception" priority="3">
Avoid catching generic exceptions such as NullPointerException, RuntimeException, Exception in try-catch block
</violation>
<violation beginline="34" endline="36" begincolumn="11" endcolumn="9" rule="EmptyCatchBlock" ruleset="Error Prone" package="com.btkelly.gnag.example" class="JavaFileInJavaSourceSet" method="main" externalInfoUrl="https://pmd.github.io/pmd-6.10.0/pmd_rules_java_errorprone.html#emptycatchblock" priority="3">
Avoid empty catch blocks
</violation>
<violation beginline="36" endline="38" begincolumn="11" endcolumn="9" rule="EmptyFinallyBlock" ruleset="Error Prone" package="com.btkelly.gnag.example" class="JavaFileInJavaSourceSet" method="main" externalInfoUrl="https://pmd.github.io/pmd-6.10.0/pmd_rules_java_errorprone.html#emptyfinallyblock" priority="3">
Avoid empty finally blocks
</violation>
<violation beginline="42" endline="44" begincolumn="15" endcolumn="5" rule="UselessOverridingMethod" ruleset="Design" package="com.btkelly.gnag.example" class="JavaFileInJavaSourceSet" method="finalize" externalInfoUrl="https://pmd.github.io/pmd-6.10.0/pmd_rules_java_design.html#uselessoverridingmethod" priority="3">
Overriding method merely calls super
</violation>
<violation beginline="43" endline="43" begincolumn="9" endcolumn="25" rule="FinalizeOnlyCallsSuperFinalize" ruleset="Error Prone" package="com.btkelly.gnag.example" class="JavaFileInJavaSourceSet" method="finalize" externalInfoUrl="https://pmd.github.io/pmd-6.10.0/pmd_rules_java_errorprone.html#finalizeonlycallssuperfinalize" priority="3">
Finalize should do something besides just calling super.finalize()
</violation>
</file>
<configerror rule="LoosePackageCoupling" msg="No packages or classes specified"/>
</pmd>
Here's the PMD report file (build/outputs/gnag/pmd.xml) from the fix-pmd branch with Checkstyle version bumped to 8.2:
<?xml version="1.0" encoding="UTF-8"?>
<pmd xmlns="http://pmd.sourceforge.net/report/2.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://pmd.sourceforge.net/report/2.0.0 http://pmd.sourceforge.net/report_2_0_0.xsd"
version="6.10.0" timestamp="2019-01-03T21:37:24.180">
<error filename="/Users/stkent/dev/personal/libraries/gnag/example-java-kotlin/src/main/java/com/btkelly/gnag/example/JavaFileInJavaSourceSet.java" msg="PMDException: Error while processing /Users/stkent/dev/personal/libraries/gnag/example-java-kotlin/src/main/java/com/btkelly/gnag/example/JavaFileInJavaSourceSet.java">
<![CDATA[net.sourceforge.pmd.PMDException: Error while processing /Users/stkent/dev/personal/libraries/gnag/example-java-kotlin/src/main/java/com/btkelly/gnag/example/JavaFileInJavaSourceSet.java
at net.sourceforge.pmd.SourceCodeProcessor.processSourceCode(SourceCodeProcessor.java:102)
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 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
at org.apache.tools.ant.Task.perform(Task.java:352)
at org.apache.tools.ant.Task$perform.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:117)
at com.btkelly.gnag.reporters.PMDViolationDetector.executeReporter(PMDViolationDetector.groovy:65)
at com.btkelly.gnag.tasks.GnagCheckTask.lambda$executeGnagCheck$0(GnagCheckTask.java:111)
at java.util.ArrayList.forEach(ArrayList.java:1257)
at com.btkelly.gnag.tasks.GnagCheckTask.executeGnagCheck(GnagCheckTask.java:109)
at com.btkelly.gnag.tasks.GnagCheckTask.taskAction(GnagCheckTask.java:102)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
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:794)
at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:761)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:131)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:317)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:309)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:185)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:97)
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:317)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:309)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:185)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:97)
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.DefaultTaskExecutionGraph$ExecuteTaskAction.execute(DefaultTaskExecutionGraph.java:262)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$ExecuteTaskAction.execute(DefaultTaskExecutionGraph.java:246)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:136)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:130)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.execute(DefaultTaskPlanExecutor.java:201)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.executeWithTask(DefaultTaskPlanExecutor.java:192)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.run(DefaultTaskPlanExecutor.java:130)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:74)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph.execute(DefaultTaskExecutionGraph.java:131)
at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:37)
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
at org.gradle.execution.DefaultBuildExecuter.access$000(DefaultBuildExecuter.java:23)
at org.gradle.execution.DefaultBuildExecuter$1.proceed(DefaultBuildExecuter.java:43)
at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:46)
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:30)
at org.gradle.initialization.DefaultGradleLauncher$ExecuteTasks.run(DefaultGradleLauncher.java:343)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:317)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:309)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:185)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:97)
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
at org.gradle.initialization.DefaultGradleLauncher.runTasks(DefaultGradleLauncher.java:212)
at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:140)
at org.gradle.initialization.DefaultGradleLauncher.executeTasks(DefaultGradleLauncher.java:115)
at org.gradle.internal.invocation.GradleBuildController$1.call(GradleBuildController.java:77)
at org.gradle.internal.invocation.GradleBuildController$1.call(GradleBuildController.java:74)
at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:152)
at org.gradle.internal.work.StopShieldingWorkerLeaseService.withLocks(StopShieldingWorkerLeaseService.java:38)
at org.gradle.internal.invocation.GradleBuildController.doBuild(GradleBuildController.java:96)
at org.gradle.internal.invocation.GradleBuildController.run(GradleBuildController.java:74)
at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:28)
at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
at org.gradle.tooling.internal.provider.ValidatingBuildActionRunner.run(ValidatingBuildActionRunner.java:32)
at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.run(RunAsBuildOperationBuildActionRunner.java:47)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:317)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:309)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:185)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:97)
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner.run(RunAsBuildOperationBuildActionRunner.java:43)
at org.gradle.tooling.internal.provider.SubscribableBuildActionRunner.run(SubscribableBuildActionRunner.java:51)
at org.gradle.launcher.exec.InProcessBuildActionExecuter$1.transform(InProcessBuildActionExecuter.java:50)
at org.gradle.launcher.exec.InProcessBuildActionExecuter$1.transform(InProcessBuildActionExecuter.java:46)
at org.gradle.composite.internal.DefaultRootBuildState.run(DefaultRootBuildState.java:65)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:46)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:32)
at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:39)
at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:25)
at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:80)
at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:53)
at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:62)
at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:34)
at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:36)
at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:25)
at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:43)
at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:29)
at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:59)
at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:31)
at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:59)
at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:44)
at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:46)
at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:30)
at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:67)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72)
at org.gradle.util.Swapper.swap(Swapper.java:38)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:62)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:82)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122)
at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)
at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:295)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.SecurityException: class "net.sf.saxon.om.Item"'s signer information does not match signer information of other classes in the same package
at java.lang.ClassLoader.checkCerts(ClassLoader.java:898)
at java.lang.ClassLoader.preDefineClass(ClassLoader.java:668)
at java.lang.ClassLoader.defineClass(ClassLoader.java:761)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at net.sourceforge.pmd.lang.rule.XPathRule.initRuleQueryBasedOnVersion(XPathRule.java:145)
at net.sourceforge.pmd.lang.rule.XPathRule.initXPathRuleQuery(XPathRule.java:128)
at net.sourceforge.pmd.lang.rule.XPathRule.getRuleChainVisits(XPathRule.java:151)
at net.sourceforge.pmd.lang.rule.AbstractRule.isRuleChain(AbstractRule.java:310)
at net.sourceforge.pmd.lang.rule.AbstractDelegateRule.isRuleChain(AbstractDelegateRule.java:311)
at net.sourceforge.pmd.lang.rule.AbstractDelegateRule.isRuleChain(AbstractDelegateRule.java:311)
at net.sourceforge.pmd.lang.rule.AbstractRuleChainVisitor.initialize(AbstractRuleChainVisitor.java:158)
at net.sourceforge.pmd.lang.rule.AbstractRuleChainVisitor.visitAll(AbstractRuleChainVisitor.java:63)
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)
... 154 more
]]>
</error>
<configerror rule="LoosePackageCoupling" msg="No packages or classes specified"/>
</pmd>
from gnag.
Snippets from dependency reports on fix-pmd branch (../gradlew dependencies
), important lines marked with <---
:
Using Checkstyle 8.1:
+--- com.puppycrawl.tools:checkstyle:8.1
| +--- antlr:antlr:2.7.7
| +--- org.antlr:antlr4-runtime:4.7
| +--- commons-beanutils:commons-beanutils:1.9.3
| | +--- commons-logging:commons-logging:1.2
| | \--- commons-collections:commons-collections:3.2.2
| +--- commons-cli:commons-cli:1.4
| \--- com.google.guava:guava:22.0
| +--- com.google.code.findbugs:jsr305:1.3.9 -> 2.0.1
| +--- com.google.errorprone:error_prone_annotations:2.0.18
| +--- com.google.j2objc:j2objc-annotations:1.1
| \--- org.codehaus.mojo:animal-sniffer-annotations:1.14
...
\--- net.sourceforge.pmd:pmd-java:6.10.0
+--- net.java.dev.javacc:javacc:5.0
+--- net.sourceforge.pmd:pmd-core:6.10.0
| +--- org.antlr:antlr4-runtime:4.7
| +--- com.beust:jcommander:1.72
| +--- commons-io:commons-io:2.6
| +--- net.java.dev.javacc:javacc:5.0
| +--- net.sourceforge.saxon:saxon:9.1.0.8 <---
| +--- org.apache.commons:commons-lang3:3.8.1
| +--- org.ow2.asm:asm:6.2.1
| \--- com.google.code.gson:gson:2.5
+--- net.sourceforge.saxon:saxon:9.1.0.8 <---
Using Checkstyle 8.2:
+--- com.puppycrawl.tools:checkstyle:8.2
| +--- antlr:antlr:2.7.7
| +--- org.antlr:antlr4-runtime:4.7
| +--- commons-beanutils:commons-beanutils:1.9.3
| | +--- commons-logging:commons-logging:1.2
| | \--- commons-collections:commons-collections:3.2.2
| +--- commons-cli:commons-cli:1.4
| +--- com.google.guava:guava:23.0
| | +--- com.google.code.findbugs:jsr305:1.3.9 -> 2.0.1
| | +--- com.google.errorprone:error_prone_annotations:2.0.18
| | +--- com.google.j2objc:j2objc-annotations:1.1
| | \--- org.codehaus.mojo:animal-sniffer-annotations:1.14
| \--- net.sf.saxon:Saxon-HE:9.8.0-4 <--- new!
...
\--- net.sourceforge.pmd:pmd-java:6.10.0
+--- net.java.dev.javacc:javacc:5.0
+--- net.sourceforge.pmd:pmd-core:6.10.0
| +--- org.antlr:antlr4-runtime:4.7
| +--- com.beust:jcommander:1.72
| +--- commons-io:commons-io:2.6
| +--- net.java.dev.javacc:javacc:5.0
| +--- net.sourceforge.saxon:saxon:9.1.0.8 <---
| +--- org.apache.commons:commons-lang3:3.8.1
| +--- org.ow2.asm:asm:6.2.1
| \--- com.google.code.gson:gson:2.5
+--- net.sourceforge.saxon:saxon:9.1.0.8 <---
+--- org.ow2.asm:asm:6.2.1
+--- commons-io:commons-io:2.6
\--- org.apache.commons:commons-lang3:3.8.1
To be clear: net.sourceforge.saxon:saxon and net.sf.saxon:Saxon-HE both include classes in the same packages.
from gnag.
Ok, this looks promising: pmd/pmd#1294
Using the outdated one, causes problems in projects that use have e.g. both PMD and checkstyle as a dependency (like qulice) because checkstyle uses the newer saxon and there are conflicts between classes used.
qulice is YAGC (yet another Gnag competitor) that has run into the same issue as we have.
The PMD folks have these things to say:
I just checked the qulice code and it's embedding all tools without isolation, so they fail where Maven can succeed when using the checkstyle and pmd plugins on their own.
A later comment offers some suggestions for addressing this problem, though they are Maven-specific. It also sounds like this issue may go away when PMD 7 is released, but that there's no guarantee it won't resurface in the future?
from gnag.
FWIW the PMD folks seem to have been a bit optimistic as to when v7 will release; right now they are ~20% of the way to their milestone (https://github.com/pmd/pmd/milestone/19).
from gnag.
Forcing both PMD and Checkstyle to use the older saxon seems to work:
https://github.com/teamed/qulice/pull/924/files#diff-114c410e043b6604a613c64a6616f3b6
[I have not verified that Checkstyle does not use dynamic checks on the saxon version to enable functionality.]
@btkelly let me know if you are interested in that workaround or if you'd instead prefer to look for a more robust long-term solution.
from gnag.
Related Issues (20)
- Weird lint failure on some projects in 2.1.0 HOT 1
- Kotlin dsl inconsistency HOT 2
- Allow users to override tool version whenever applicable? HOT 1
- Don't forcibly add jcenter to project repositories
- Add some simple regression tests
- Run different tools in parallel HOT 6
- Running gnagReport with `failOnError true` doesn't fail Jenkins builds HOT 1
- Update default PMD ruleset to use new format HOT 2
- Clarify default configuration settings
- Logo HOT 1
- Task Execution exception HOT 1
- How to use detekt's XML report? HOT 3
- Update CONTRIBUTING.md to reference one of the available test tasks HOT 1
- Case insensitive comparisons for AndroidLintExtensions's severity
- Look into upgrading gnag to the latest version of java (12) HOT 1
- Switch over to using Open JDK
- Gnag fails on Windows HOT 4
- Could not get unknown property 'sourceSets' HOT 1
- Gradle Plugin: support Gradle 7.0 HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from gnag.