Skip to content

[apex] Maven site report #2564

@raghujayjunk

Description

@raghujayjunk

Affects PMD Version: 6.24.0

Make sure, to test with the latest PMD version.

Description:
I am trying to generate pmd and cpd reports for a Salesforce project using mvn site. When i use 6.21.0 version, pmd and cpd html files are generated without any content. 6.24.0 results in this error.

A clear and concise description of what the bug is.
Exception in thread "main" java.util.ServiceConfigurationError: net.sourceforge.pmd.lang.Language: Provider net.sourceforge.pmd.lang.java.JavaLanguageModule could not be instantiated
Exception Stacktrace:
Caused by: java.lang.NoSuchMethodError: net.sourceforge.pmd.lang.metrics.internal.AbstractLanguageMetricsProvider.(Ljava/lang/Class;Ljava/lang/Class;Lnet/sourceforge/pmd/lang/metrics/MetricsComputer;)V
at net.sourceforge.pmd.lang.java.metrics.JavaMetricsProvider.(JavaMetricsProvider.java:22)

# Copy-paste the stack trace here
Exception in thread "main" java.util.ServiceConfigurationError: net.sourceforge.pmd.lang.Language: Provider net.sourceforge.pmd.lang.java.JavaLanguageModule could not be instantiated
	at java.util.ServiceLoader.fail(ServiceLoader.java:232)
	at java.util.ServiceLoader.access$100(ServiceLoader.java:185)
	at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:384)
	at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404)
	at java.util.ServiceLoader$1.next(ServiceLoader.java:480)
	at net.sourceforge.pmd.lang.LanguageRegistry.<init>(LanguageRegistry.java:35)
	at net.sourceforge.pmd.lang.LanguageRegistry.<clinit>(LanguageRegistry.java:24)
	at net.sourceforge.pmd.lang.apex.rule.AbstractApexRule.<init>(AbstractApexRule.java:122)
	at net.sourceforge.pmd.lang.apex.rule.AbstractStatisticalApexRule.<init>(AbstractStatisticalApexRule.java:20)
	at net.sourceforge.pmd.lang.apex.rule.design.ExcessiveNodeCountRule.<init>(ExcessiveNodeCountRule.java:33)
	at net.sourceforge.pmd.lang.apex.rule.design.ExcessiveParameterListRule.<init>(ExcessiveParameterListRule.java:18)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at java.lang.Class.newInstance(Class.java:442)
	at net.sourceforge.pmd.util.ResourceLoader.loadRuleFromClassPath(ResourceLoader.java:139)
	at net.sourceforge.pmd.rules.RuleBuilder.build(RuleBuilder.java:196)
	at net.sourceforge.pmd.rules.RuleFactory.buildRule(RuleFactory.java:211)
	at net.sourceforge.pmd.RuleSetFactory.parseSingleRuleNode(RuleSetFactory.java:616)
	at net.sourceforge.pmd.RuleSetFactory.parseRuleNode(RuleSetFactory.java:505)
	at net.sourceforge.pmd.RuleSetFactory.parseRuleSetNode(RuleSetFactory.java:409)
	at net.sourceforge.pmd.RuleSetFactory.createRuleSet(RuleSetFactory.java:229)
	at net.sourceforge.pmd.RuleSetFactory.createRule(RuleSetFactory.java:344)
	at net.sourceforge.pmd.RuleSetFactory.parseRuleReferenceNode(RuleSetFactory.java:667)
	at net.sourceforge.pmd.RuleSetFactory.parseRuleNode(RuleSetFactory.java:507)
	at net.sourceforge.pmd.RuleSetFactory.parseRuleSetNode(RuleSetFactory.java:409)
	at net.sourceforge.pmd.RuleSetFactory.createRuleSet(RuleSetFactory.java:229)
	at net.sourceforge.pmd.RuleSetFactory.createRuleSet(RuleSetFactory.java:224)
	at net.sourceforge.pmd.RuleSetFactory.createRuleSets(RuleSetFactory.java:185)
	at net.sourceforge.pmd.RuleSetFactory.createRuleSets(RuleSetFactory.java:169)
	at org.apache.maven.plugins.pmd.PmdReport.processFilesWithPMD(PmdReport.java:557)
	at org.apache.maven.plugins.pmd.PmdReport.executePmd(PmdReport.java:477)
	at org.apache.maven.plugins.pmd.PmdReport.executePmdWithClassloader(PmdReport.java:376)
	at org.apache.maven.plugins.pmd.PmdReport.canGenerateReport(PmdReport.java:350)
	at org.apache.maven.reporting.exec.MavenReportExecution.canGenerateReport(MavenReportExecution.java:89)
	at org.apache.maven.plugins.site.render.AbstractSiteRenderingMojo.getReports(AbstractSiteRenderingMojo.java:270)
	at org.apache.maven.plugins.site.render.SiteMojo.execute(SiteMojo.java:119)
	at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:137)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:210)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:156)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:148)
	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
	at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:56)
	at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:305)
	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192)
	at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105)
	at org.apache.maven.cli.MavenCli.execute(MavenCli.java:957)
	at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:289)
	at org.apache.maven.cli.MavenCli.main(MavenCli.java:193)
	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.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:282)
	at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:225)
	at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:406)
	at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:347)
Caused by: java.lang.NoSuchMethodError: net.sourceforge.pmd.lang.metrics.internal.AbstractLanguageMetricsProvider.<init>(Ljava/lang/Class;Ljava/lang/Class;Lnet/sourceforge/pmd/lang/metrics/MetricsComputer;)V
	at net.sourceforge.pmd.lang.java.metrics.JavaMetricsProvider.<init>(JavaMetricsProvider.java:22)
	at net.sourceforge.pmd.lang.java.AbstractJavaHandler.<init>(AbstractJavaHandler.java:52)
	at net.sourceforge.pmd.lang.java.JavaLanguageHandler.<init>(JavaLanguageHandler.java:25)
	at net.sourceforge.pmd.lang.java.JavaLanguageHandler.<init>(JavaLanguageHandler.java:22)
	at net.sourceforge.pmd.lang.java.JavaLanguageModule.<init>(JavaLanguageModule.java:20)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at java.lang.Class.newInstance(Class.java:442)
	at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:380)
	... 57 more

Steps to reproduce:

  • pom.xml
    <properties>
        <pmdVersion>6.24.0</pmdVersion>
    </properties>

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-pmd-plugin</artifactId>
                    <version>3.13.0</version>
                    <dependencies>
                        <dependency>
                            <groupId>net.sourceforge.pmd</groupId>
                            <artifactId>pmd-apex</artifactId>
                            <version>${pmdVersion}</version>
                        </dependency>
                        <dependency>
                            <groupId>net.sourceforge.pmd</groupId>
                            <artifactId>pmd-core</artifactId>
                            <version>${pmdVersion}</version>
                        </dependency>
                    </dependencies>
                    <configuration>
                        <linkXRef>true</linkXRef>
                        <verbose>true</verbose>
                        <failOnViolation>false</failOnViolation>
                    </configuration>
                </plugin>

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-site-plugin</artifactId>
                    <version>3.9.0</version>
                    <dependencies>
                        <dependency>
                            <groupId>net.sourceforge.pmd</groupId>
                            <artifactId>pmd-apex</artifactId>
                            <version>${pmdVersion}</version>
                        </dependency>
                        <dependency>
                            <groupId>net.sourceforge.pmd</groupId>
                            <artifactId>pmd-core</artifactId>
                            <version>${pmdVersion}</version>
                        </dependency>
                    </dependencies>
                </plugin>
                     <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>3.0.0-M4</version>
        </plugin>
            </plugins>
        </pluginManagement>
    </build>

    <dependencies>

        <!-- https://mvnrepository.com/artifact/net.sourceforge.pmd/pmd -->
        <dependency>
            <groupId>net.sourceforge.pmd</groupId>
            <artifactId>pmd</artifactId>
            <version>${pmdVersion}</version>
            <type>pom</type>
        </dependency>

        <dependency>
            <groupId>net.sourceforge.pmd</groupId>
            <artifactId>pmd-apex</artifactId>
            <version>${pmdVersion}</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-site-plugin -->
        <dependency>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-site-plugin</artifactId>
            <version>3.9.0</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-surefire-plugin -->
        <dependency>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>3.0.0-M4</version>
        </dependency>
    </dependencies>

    <reporting>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-pmd-plugin</artifactId>
                <version>3.13.0</version>
                <!-- <dependencies>
                    <dependency>
                        <groupId>net.sourceforge.pmd</groupId>
                        <artifactId>pmd-apex</artifactId>
                        <version>${pmdVersion}</version>
                    </dependency>
                    <dependency>
                        <groupId>net.sourceforge.pmd</groupId>
                        <artifactId>pmd-core</artifactId>
                        <version>${pmdVersion}</version>
                    </dependency>
                </dependencies> -->
                <configuration>
                    <linkXRef>true</linkXRef>
                    <excludes>
                        <exclude>SBBQ*</exclude>
                    </excludes>
                    <rulesets>
                        <ruleset>C:\Users\raghunath.srinivasan\Desktop\gpay\pomWrkDir\gpRuleSet.xml</ruleset>
                    </rulesets>
                    <language>Apex</language>
                    <showPmdLog>true</showPmdLog>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-project-info-reports-plugin</artifactId>
                <version>3.0.0</version>
            </plugin>
        </plugins>
    </reporting>

Metadata

Metadata

Assignees

Labels

a:questionRequest for information that doesn't necessarily entail changes to the code base

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions