Open dizzzz opened 5 years ago
in another (non public project):
java.lang.NullPointerException
at com.sebastian_daschner.jaxrs_analyzer.analysis.javadoc.JavaDocAnalyzer.findMethodResult(JavaDocAnalyzer.java:80)
at com.sebastian_daschner.jaxrs_analyzer.analysis.javadoc.JavaDocAnalyzer.lambda$null$1(JavaDocAnalyzer.java:72)
at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
at java.util.HashMap$KeySpliterator.forEachRemaining(HashMap.java:1556)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
at com.sebastian_daschner.jaxrs_analyzer.analysis.javadoc.JavaDocAnalyzer.lambda$combineResults$3(JavaDocAnalyzer.java:74)
at java.util.HashMap.forEach(HashMap.java:1289)
at com.sebastian_daschner.jaxrs_analyzer.analysis.javadoc.JavaDocAnalyzer.combineResults(JavaDocAnalyzer.java:71)
at com.sebastian_daschner.jaxrs_analyzer.analysis.javadoc.JavaDocAnalyzer.analyze(JavaDocAnalyzer.java:32)
at com.sebastian_daschner.jaxrs_analyzer.analysis.ProjectAnalyzer.analyze(ProjectAnalyzer.java:107)
at com.sebastian_daschner.jaxrs_analyzer.JAXRSAnalyzer.analyze(JAXRSAnalyzer.java:47)
at com.sebastian_daschner.jaxrs_analyzer.maven.JAXRSAnalyzerMojo.execute(JAXRSAnalyzerMojo.java:226)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:137)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:154)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:146)
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:954)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:192)
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: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)
@sdaschner please could you have a look?
I've just found a way to reproduce the original issue:
java.lang.NullPointerException
at java.util.Objects.requireNonNull(Objects.java:203)
at com.sebastian_daschner.jaxrs_analyzer.model.methods.MethodIdentifier.<init>(MethodIdentifier.java:49)
at com.sebastian_daschner.jaxrs_analyzer.model.methods.MethodIdentifier.of(MethodIdentifier.java:180)
Basically by adding a javadoc in a static method inside an enum, e.g:
public enum MyEnum {
FOO(1), BAR(2)
private int code;
MyEnum(final int code) {
this.code = code;
}
public Integer getCode() {
return code;
}
/**
* A javadoc description
*
* @param code enum code
*/
public static MyEnum getByCode(final int code) {
return Arrays.asList(values()).stream()
.filter(i -> i.getCode().equals(code))
.findFirst()
.orElse(MyEnum.FOO);
}
}
Then I get the stacktrace above.
@sdaschner shouldn't we parse the javadoc only on rest endpoints?
Well the method doesn't need to be static and don't even need a param, any javadoc inside an enum method will raise the exception:
/**
* A javadoc description
*
*/
public void getByCode() {
}
Hi, do you have plans to repair this issue and release a new version? regards Dannes
For my project I have a dependency on a fix on a reasonable short time. Would you able to address the reported issue?
This looks to be a duplicate of #182.
I tried to reproduce the two null pointer exceptions I found in the current plugin; One I was able to reproduce in a project I am actively involved:
To reproduce:
mvn clean install -DskipTests
(sorry a lot of CVE data is downloaded - it sometimes fails)