-
Notifications
You must be signed in to change notification settings - Fork 628
Closed
Description
I'm getting this error when running spotbugs:
The following errors occurred during analysis:
Exception analyzing BaseUrl using detector edu.umd.cs.findbugs.detect.FindDeadLocalStores
java.lang.ArrayIndexOutOfBoundsException: Index 5 out of bounds for length 5
At edu.umd.cs.findbugs.BugCounts.addError(PackageStats.java:50)
At edu.umd.cs.findbugs.PackageStats.addError(PackageStats.java:240)
At edu.umd.cs.findbugs.ProjectStats.addBug(ProjectStats.java:273)
At edu.umd.cs.findbugs.SortedBugCollection.add(SortedBugCollection.java:960)
At edu.umd.cs.findbugs.SortedBugCollection.add(SortedBugCollection.java:227)
At edu.umd.cs.findbugs.BugCollectionBugReporter.doReportBug(BugCollectionBugReporter.java:110)
At edu.umd.cs.findbugs.AbstractBugReporter.reportBug(AbstractBugReporter.java:179)
At edu.umd.cs.findbugs.DelegatingBugReporter.reportBug(DelegatingBugReporter.java:69)
At edu.umd.cs.findbugs.FilterBugReporter.reportBug(FilterBugReporter.java:49)
At edu.umd.cs.findbugs.FilterBugReporter.reportBug(FilterBugReporter.java:49)
At edu.umd.cs.findbugs.BugAccumulator.reportBug(BugAccumulator.java:199)
At edu.umd.cs.findbugs.BugAccumulator.reportAccumulatedBugs(BugAccumulator.java:180)
At edu.umd.cs.findbugs.detect.FindDeadLocalStores.analyzeMethod(FindDeadLocalStores.java:647)
At edu.umd.cs.findbugs.detect.FindDeadLocalStores.visitClassContext(FindDeadLocalStores.java:198)
At edu.umd.cs.findbugs.DetectorToDetector2Adapter.visitClass(DetectorToDetector2Adapter.java:76)
At edu.umd.cs.findbugs.FindBugs2.lambda$analyzeApplication$1(FindBugs2.java:1108)
At java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
At edu.umd.cs.findbugs.CurrentThreadExecutorService.execute(CurrentThreadExecutorService.java:86)
At java.base/java.util.concurrent.AbstractExecutorService.invokeAll(AbstractExecutorService.java:247)
At edu.umd.cs.findbugs.FindBugs2.analyzeApplication(FindBugs2.java:1118)
At edu.umd.cs.findbugs.FindBugs2.execute(FindBugs2.java:309)
At com.siriusxm.sbt.library.SxmJavaSpotBugsPlugin$.$anonfun$projectSettings$5(SxmJavaSpotBugsPlugin.scala:71)
At com.siriusxm.sbt.library.SxmJavaSpotBugsPlugin$.$anonfun$projectSettings$5$adapted(SxmJavaSpotBugsPlugin.scala:39)
At scala.Function1.$anonfun$compose$1(Function1.scala:49)
At sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:63)
At sbt.std.Transform$$anon$4.work(Transform.scala:69)
At sbt.Execute.$anonfun$submit$2(Execute.scala:283)
At sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:24)
At sbt.Execute.work(Execute.scala:292)
At sbt.Execute.$anonfun$submit$1(Execute.scala:283)
At sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:265)
At sbt.CompletionService$$anon$2.call(CompletionService.scala:65)
At java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
At java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
At java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
At java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
At java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
At java.base/java.lang.Thread.run(Thread.java:833)
the contents of the class are:
import io.vavr.control.Validation;
import java.net.MalformedURLException;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.Optional;
public class BaseUrl {
public final String value;
private BaseUrl(String value) {
this.value = value;
}
public static Validation<String, Optional<BaseUrl>> fromString(String value) {
if (value.isEmpty()) {
return Validation.valid(Optional.empty());
} else {
if (isValidUrl(value)) {
return Validation.valid(Optional.of(new BaseUrl(value)));
} else {
return Validation.invalid(
"baseUrl '"
+ value
+ "' doesn't match expected format (must be a valid URL with env/region variables)");
}
}
}
private static String replace(String value) {
return value.replace("${region}", "region").replace("${env}", "env");
}
private static Boolean isValidUrl(String value) {
try {
new URL(replace(value)).toURI();
return true;
} catch (MalformedURLException e) {
return false;
} catch (URISyntaxException e) {
return false;
}
}
@Override
public boolean equals(Object other) {
if (this == other) {
return true;
}
if (other == null || getClass() != other.getClass()) {
return false;
}
BaseUrl baseUrl = (BaseUrl) other;
return value.equals(baseUrl.value);
}
@Override
public int hashCode() {
return value.hashCode();
}
}
I've tried reproducing it in a test (had to remove the io.vavr
import) but it succeeds. I have other files in which the same error raises but they are a bit more complex, I could try minimizing them.
version 4.8.5
Metadata
Metadata
Assignees
Labels
No labels