private BugCheckerInfo(Class<? extends BugChecker> checker, BugPattern pattern) { this( checker, pattern.name(), ImmutableSet.<String>builder().add(pattern.name()).add(pattern.altNames()).build(), pattern.summary(), pattern.severity(), createLinkUrl(pattern), Stream.of(pattern.suppressionAnnotations()).anyMatch(a -> isSuppressWarnings(a)), Stream.of(pattern.suppressionAnnotations()) .filter(a -> !isSuppressWarnings(a)) .collect(toImmutableSet()), ImmutableSet.copyOf(pattern.tags()), pattern.disableable()); }
public static BugPatternInstance fromElement(Element element) { BugPatternInstance instance = new BugPatternInstance(); instance.className = element.toString(); BugPattern annotation = element.getAnnotation(BugPattern.class); instance.name = annotation.name(); instance.altNames = annotation.altNames(); instance.tags = annotation.tags(); instance.severity = annotation.severity(); instance.summary = annotation.summary(); instance.explanation = annotation.explanation(); instance.documentSuppression = annotation.documentSuppression(); instance.providesFix = annotation.providesFix(); Map<String, Object> keyValues = getAnnotation(element, BugPattern.class.getName()); Object suppression = keyValues.get("suppressionAnnotations"); if (suppression == null) { instance.suppressionAnnotations = new String[] {SuppressWarnings.class.getName()}; } else { Preconditions.checkState(suppression instanceof List); @SuppressWarnings("unchecked") // Always List<? extends AnnotationValue>, see above. List<? extends AnnotationValue> resultList = (List<? extends AnnotationValue>) suppression; instance.suppressionAnnotations = resultList.stream().map(AnnotationValue::toString).toArray(String[]::new); } instance.generateExamplesFromTestCases = !keyValues.containsKey("generateExamplesFromTestCases") || (boolean) keyValues.get("generateExamplesFromTestCases"); return instance; }
private BugCheckerInfo(Class<? extends BugChecker> checker, BugPattern pattern) { this( checker, pattern.name(), ImmutableSet.<String>builder().add(pattern.name()).add(pattern.altNames()).build(), pattern.summary(), pattern.severity(), createLinkUrl(pattern), Stream.of(pattern.suppressionAnnotations()).anyMatch(a -> isSuppressWarnings(a)), Stream.of(pattern.suppressionAnnotations()) .filter(a -> !isSuppressWarnings(a)) .collect(toImmutableSet()), ImmutableSet.copyOf(pattern.tags()), pattern.disableable()); }