hcoles / classycle-maven-plugin

Simple maven plugin for classycle
3 stars 3 forks source link

NullPointerException #7

Open cternes opened 8 years ago

cternes commented 8 years ago

Hi,

I'm trying to use the classcycle-maven-plugin but struggling with NPE while using the command

mvn classycle:check

It seems to be independent of the dependency definition, it just occurs everytime.

The exception is the following:

org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.pitest:classycle-maven-plugin:0.4:check (default-cli) on project openkeepass: Execution default-cli of goal org.pitest:classycle-maven-plugin:0.4:check failed.
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:224)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:862)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:286)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:197)
    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:497)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: org.apache.maven.plugin.PluginExecutionException: Execution default-cli of goal org.pitest:classycle-maven-plugin:0.4:check failed.
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:145)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
    ... 20 more
Caused by: java.lang.NullPointerException
    at java.io.StringReader.<init>(StringReader.java:50)
    at classycle.dependency.DependencyDefinitionParser.<init>(DependencyDefinitionParser.java:85)
    at classycle.dependency.DependencyProcessor.<init>(DependencyProcessor.java:56)
    at classycle.dependency.DependencyChecker.<init>(DependencyChecker.java:63)
    at org.pitest.classycle.check.CheckGoal.analyse(CheckGoal.java:25)
    at org.pitest.classycle.AbstractGoal.analyse(AbstractGoal.java:33)
    at org.pitest.classycle.check.CheckMojo.execute(CheckMojo.java:73)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
    ... 21 more

My pom.xml looks like this:

<plugin>
            <groupId>org.pitest</groupId>
            <artifactId>classycle-maven-plugin</artifactId>
            <version>0.4</version>
            <executions>
                <execution>
                    <id>verify</id>
                    <phase>verify</phase>
                    <goals>
                        <goal>check</goal>
                    </goals>
                    <configuration>
                        <dependencyDefinitionFile>rules.txt</dependencyDefinitionFile>
                        <resultRenderer>classycle.dependency.DefaultResultRenderer</resultRenderer>
                    </configuration>
                </execution>
            </executions>
        </plugin>

and my rules.txt file looks like this:

show allResults
[all] = de.slackspace.*
check absenceOfClassCycles > 1 in [all]

I'm pretty sure my definition file is correct because when I directly use it with the classcycle jar it works.

What do you suggest?

hcoles commented 8 years ago

What happens if you run?

mvn verify

cternes commented 8 years ago

Interestingly mvn verifyworks correctly.

 Failed to execute goal org.pitest:classycle-maven-plugin:0.4:check (verify) on project openkeepass: Unwanted dependencies found. See output for details.

Is this the recommended way to call the plugin?

cternes commented 8 years ago

I think the command

mvn classycle:check

will never work because there is no dependency definition nor a dependency definition file defined when running this command. Both parameters will always be null when running this command directly.

It could make sense to remove this command from the Readme file to avoid confusion.