diff --git a/docs/pages/release_notes.md b/docs/pages/release_notes.md index 60244eb622..da451fc770 100644 --- a/docs/pages/release_notes.md +++ b/docs/pages/release_notes.md @@ -30,6 +30,8 @@ This is a minor release. * core * [#1191](https://github.com/pmd/pmd/issues/1191): \[core] Test Framework: Sort violations by line/column +* java-bestpractices + * [#1267](https://github.com/pmd/pmd/pull/1267): \[java] MissingOverrideRule: Avoid NoClassDefFoundError with incomplete classpath * java-codestyle * [#1255](https://github.com/pmd/pmd/issues/1255): \[java] UnnecessaryFullyQualifiedName false positive: static method on shadowed implicitly imported class * java-errorprone diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/bestpractices/MissingOverrideRule.java b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/bestpractices/MissingOverrideRule.java index 9400c5e1bd..3b97daa27d 100644 --- a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/bestpractices/MissingOverrideRule.java +++ b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/bestpractices/MissingOverrideRule.java @@ -109,25 +109,30 @@ public class MissingOverrideRule extends AbstractJavaRule { return null; } - Set overridden = overriddenMethods(exploredType); - Map>> result = new HashMap<>(); - - for (Method m : exploredType.getDeclaredMethods()) { - if (!result.containsKey(m.getName())) { - result.put(m.getName(), new HashMap>()); + try { + Set overridden = overriddenMethods(exploredType); + Map>> result = new HashMap<>(); + + for (Method m : exploredType.getDeclaredMethods()) { + if (!result.containsKey(m.getName())) { + result.put(m.getName(), new HashMap>()); + } + + Map> pCountToOverloads = result.get(m.getName()); + + int paramCount = m.getParameterTypes().length; + if (!pCountToOverloads.containsKey(paramCount)) { + pCountToOverloads.put(paramCount, new ArrayList()); + } + + pCountToOverloads.get(paramCount).add(m); } - - Map> pCountToOverloads = result.get(m.getName()); - - int paramCount = m.getParameterTypes().length; - if (!pCountToOverloads.containsKey(paramCount)) { - pCountToOverloads.put(paramCount, new ArrayList()); - } - - pCountToOverloads.get(paramCount).add(m); + + return new MethodLookup(result, overridden); + } catch (final LinkageError e) { + // we may have an incomplete auxclasspath + return null; } - - return new MethodLookup(result, overridden); }