Skip to content

Commit

Permalink
Load bugpattern category reflectively during documentation generation
Browse files Browse the repository at this point in the history
This avoids skew when new categories are added and the released error prone
still has the old version of the enum.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=106191491
  • Loading branch information
cushon authored and Eddie Aftandilian committed Oct 27, 2015
1 parent 2a57593 commit 00d211d
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 9 deletions.
Expand Up @@ -17,6 +17,7 @@
package com.google.errorprone; package com.google.errorprone;


import static com.google.common.base.MoreObjects.firstNonNull; import static com.google.common.base.MoreObjects.firstNonNull;
import static com.google.common.base.Verify.verifyNotNull;


import com.google.errorprone.BugPattern.Category; import com.google.errorprone.BugPattern.Category;
import com.google.errorprone.BugPattern.MaturityLevel; import com.google.errorprone.BugPattern.MaturityLevel;
Expand All @@ -38,7 +39,7 @@ public final class BugPatternInstance {
public String summary; public String summary;
public String explanation; public String explanation;
public String[] altNames; public String[] altNames;
public Category category; public String category;
public MaturityLevel maturity; public MaturityLevel maturity;
public SeverityLevel severity; public SeverityLevel severity;
public Suppressibility suppressibility; public Suppressibility suppressibility;
Expand All @@ -52,22 +53,17 @@ public static BugPatternInstance fromElement(Element element) {
BugPattern annotation = element.getAnnotation(BugPattern.class); BugPattern annotation = element.getAnnotation(BugPattern.class);
instance.name = annotation.name(); instance.name = annotation.name();
instance.altNames = annotation.altNames(); instance.altNames = annotation.altNames();
instance.category = annotation.category();
instance.maturity = annotation.maturity(); instance.maturity = annotation.maturity();
instance.severity = annotation.severity(); instance.severity = annotation.severity();
instance.suppressibility = annotation.suppressibility(); instance.suppressibility = annotation.suppressibility();
instance.summary = annotation.summary(); instance.summary = annotation.summary();
instance.explanation = annotation.explanation(); instance.explanation = annotation.explanation();
instance.documentSuppression = annotation.documentSuppression();


Map<String, Object> keyValues = getAnnotation(element, BugPattern.class.getName()); Map<String, Object> keyValues = getAnnotation(element, BugPattern.class.getName());
// Avoid MirroredTypeException hacks: instance.category = verifyNotNull(keyValues.get("category")).toString();
instance.customSuppressionAnnotation = instance.customSuppressionAnnotation =
firstNonNull(keyValues.get("customSuppressionAnnotation"), "").toString(); firstNonNull(keyValues.get("customSuppressionAnnotation"), "").toString();
// TODO(cushon): access directly once documentSuppression is in the released BugPattern
if (keyValues.containsKey("documentSuppression")) {
instance.documentSuppression =
Boolean.parseBoolean(keyValues.get("documentSuppression").toString());
}


return instance; return instance;
} }
Expand Down
Expand Up @@ -68,7 +68,7 @@ private static BugPatternInstance deadExceptionTestInfo() {
instance.explanation = instance.explanation =
"The exception is created with new, but is not thrown, and the reference is lost."; "The exception is created with new, but is not thrown, and the reference is lost.";
instance.altNames = new String[] {"ThrowableInstanceNeverThrown"}; instance.altNames = new String[] {"ThrowableInstanceNeverThrown"};
instance.category = Category.JDK; instance.category = Category.JDK.toString();
instance.severity = SeverityLevel.ERROR; instance.severity = SeverityLevel.ERROR;
instance.maturity = MaturityLevel.MATURE; instance.maturity = MaturityLevel.MATURE;
instance.suppressibility = Suppressibility.SUPPRESS_WARNINGS; instance.suppressibility = Suppressibility.SUPPRESS_WARNINGS;
Expand Down

0 comments on commit 00d211d

Please sign in to comment.