Affects PMD Version: 7.0.0-rc1
Make sure, to test with the latest PMD version.
Description:
Unable to utilize rule UnusedMethod
Exception Stacktrace:
[main] DEBUG net.sourceforge.pmd.lang.apex.multifile.ApexMultifileAnalysis - Parsed 709 classes in 929ms
[main] ERROR net.sourceforge.pmd.lang.apex.multifile.ApexMultifileAnalysis - Exception while initializing Apexlink (Index 34812 out of bounds for length 34812)
java.lang.ArrayIndexOutOfBoundsException: Index 34812 out of bounds for length 34812
at com.nawforce.common.parsers.UTF8Decode$.getCharOffsetFrom(UTF8Decode.scala:38)
at com.nawforce.runtime.parsers.ByteArraySourceData.subdata(SourceData.scala:66)
at com.nawforce.runtime.parsers.ByteArraySourceData.subdata(SourceData.scala:61)
at com.nawforce.runtime.parsers.Source.extractSource(Source.scala:57)
at com.nawforce.runtime.parsers.CodeParser.extractSource(CodeParser.scala:76)
at com.nawforce.common.cst.Block$.constructLazy(Statements.scala:108)
at com.nawforce.common.cst.ApexMethodDeclaration$.$anonfun$construct$17(BodyDeclarations.scala:273)
at scala.Option.map(Option.scala:242)
at com.nawforce.common.cst.ApexMethodDeclaration$.construct(BodyDeclarations.scala:273)
at com.nawforce.common.cst.ClassBodyDeclaration$.$anonfun$construct$1(BodyDeclarations.scala:106)
at scala.Option.map(Option.scala:242)
at com.nawforce.common.cst.ClassBodyDeclaration$.construct(BodyDeclarations.scala:99)
at com.nawforce.common.cst.ClassDeclaration$.$anonfun$construct$9(TypeDeclarations.scala:120)
at scala.Option.map(Option.scala:242)
at com.nawforce.common.cst.ClassDeclaration$.$anonfun$construct$8(TypeDeclarations.scala:119)
at scala.Option.orElse(Option.scala:477)
at com.nawforce.common.cst.ClassDeclaration$.$anonfun$construct$6(TypeDeclarations.scala:119)
at scala.collection.immutable.List.flatMap(List.scala:293)
at scala.collection.immutable.List.flatMap(List.scala:79)
at com.nawforce.common.cst.ClassDeclaration$.construct(TypeDeclarations.scala:114)
at com.nawforce.common.cst.ClassDeclaration$.constructInner(TypeDeclarations.scala:95)
at com.nawforce.common.cst.ClassBodyDeclaration$.$anonfun$construct$13(BodyDeclarations.scala:178)
at scala.Option.map(Option.scala:242)
at com.nawforce.common.cst.ClassBodyDeclaration$.$anonfun$construct$12(BodyDeclarations.scala:171)
at scala.Option.orElse(Option.scala:477)
at com.nawforce.common.cst.ClassBodyDeclaration$.construct(BodyDeclarations.scala:170)
at com.nawforce.common.cst.ClassDeclaration$.$anonfun$construct$9(TypeDeclarations.scala:120)
at scala.Option.map(Option.scala:242)
at com.nawforce.common.cst.ClassDeclaration$.$anonfun$construct$8(TypeDeclarations.scala:119)
at scala.Option.orElse(Option.scala:477)
at com.nawforce.common.cst.ClassDeclaration$.$anonfun$construct$6(TypeDeclarations.scala:119)
at scala.collection.immutable.List.flatMap(List.scala:293)
at scala.collection.immutable.List.flatMap(List.scala:79)
at com.nawforce.common.cst.ClassDeclaration$.construct(TypeDeclarations.scala:114)
at com.nawforce.common.types.apex.FullDeclaration$.$anonfun$construct$1(FullDeclaration.scala:275)
at scala.Option.map(Option.scala:242)
at com.nawforce.common.types.apex.FullDeclaration$.construct(FullDeclaration.scala:268)
at com.nawforce.common.cst.CompilationUnit$.$anonfun$construct$1(TypeDeclarations.scala:47)
at scala.util.DynamicVariable.withValue(DynamicVariable.scala:59)
at com.nawforce.common.cst.CompilationUnit$.construct(TypeDeclarations.scala:48)
at com.nawforce.common.types.apex.FullDeclaration$.create(FullDeclaration.scala:253)
at com.nawforce.common.org.PackageDeploy.$anonfun$loadClasses$12(PackageDeploy.scala:146)
at com.nawforce.common.org.PackageDeploy.$anonfun$loadClasses$11(PackageDeploy.scala:146)
at scala.collection.immutable.List.flatMap(List.scala:293)
at scala.collection.immutable.List.flatMap(List.scala:79)
at com.nawforce.common.org.PackageDeploy.$anonfun$loadClasses$10(PackageDeploy.scala:143)
at com.nawforce.common.org.PackageDeploy.loadClasses(PackageDeploy.scala:139)
at com.nawforce.common.org.PackageDeploy.deployFromWorkspace(PackageDeploy.scala:69)
at com.nawforce.common.org.PackageDeploy.deployFromWorkspace$(PackageDeploy.scala:51)
at com.nawforce.common.org.PackageImpl.deployFromWorkspace(PackageImpl.scala:48)
at com.nawforce.common.org.PackageImpl.<init>(PackageImpl.scala:68)
at com.nawforce.common.org.OrgImpl.$anonfun$addPackage$1(OrgImpl.scala:207)
at scala.util.DynamicVariable.withValue(DynamicVariable.scala:59)
at com.nawforce.common.org.OrgImpl.addPackage(OrgImpl.scala:206)
at com.nawforce.common.org.OrgImpl.newSFDXPackageInternal(OrgImpl.scala:158)
at com.nawforce.common.org.OrgImpl.newSFDXPackage(OrgImpl.scala:148)
at net.sourceforge.pmd.lang.apex.multifile.ApexMultifileAnalysis.<init>(ApexMultifileAnalysis.java:68)
at net.sourceforge.pmd.lang.apex.ApexLanguageProcessor.<init>(ApexLanguageProcessor.java:21)
at net.sourceforge.pmd.lang.apex.ApexLanguageModule.createProcessor(ApexLanguageModule.java:43)
at net.sourceforge.pmd.lang.LanguageProcessorRegistry.create(LanguageProcessorRegistry.java:131)
at net.sourceforge.pmd.PmdAnalysis.performAnalysisImpl(PmdAnalysis.java:352)
at net.sourceforge.pmd.PmdAnalysis.performAnalysisImpl(PmdAnalysis.java:317)
at net.sourceforge.pmd.PmdAnalysis.performAnalysis(PmdAnalysis.java:297)
at net.sourceforge.pmd.PmdAnalysis.runAndReturnStats(PmdAnalysis.java:515)
at net.sourceforge.pmd.cli.commands.internal.PmdCommand.execute(PmdCommand.java:354)
at net.sourceforge.pmd.cli.commands.internal.AbstractPmdSubcommand.call(AbstractPmdSubcommand.java:35)
at net.sourceforge.pmd.cli.commands.internal.AbstractPmdSubcommand.call(AbstractPmdSubcommand.java:20)
at picocli.CommandLine.executeUserObject(CommandLine.java:2041)
at picocli.CommandLine.access$1500(CommandLine.java:148)
at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2461)
at picocli.CommandLine$RunLast.handle(CommandLine.java:2453)
at picocli.CommandLine$RunLast.handle(CommandLine.java:2415)
at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2273)
at picocli.CommandLine$RunLast.execute(CommandLine.java:2417)
at picocli.CommandLine.execute(CommandLine.java:2170)
at net.sourceforge.pmd.cli.PmdCli.main(PmdCli.java:18)
[main] ERROR net.sourceforge.pmd.lang.apex.multifile.ApexMultifileAnalysis - PMD will not attempt to initialize Apexlink further, this can cause rules like UnusedMethod to be dysfunctional
Code Sample demonstrating the issue:
Steps to reproduce:
Please provide detailed steps for how we can reproduce the bug.
mvn clean verify
)pmd check -dir force-app\main\default\classes -R category/apex/design.xml/UnusedMethod -f text -v
Running PMD through: [CLI]
openjdk 17.0.6 2023-01-17
OpenJDK Runtime Environment Temurin-17.0.6+10 (build 17.0.6+10)
OpenJDK 64-Bit Server VM Temurin-17.0.6+10 (build 17.0.6+10, mixed mode, sharing)
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4