diff options
Diffstat (limited to 'src/com/google/doclava/Doclava.java')
-rw-r--r-- | src/com/google/doclava/Doclava.java | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/src/com/google/doclava/Doclava.java b/src/com/google/doclava/Doclava.java index dfdc428..5ab2b65 100644 --- a/src/com/google/doclava/Doclava.java +++ b/src/com/google/doclava/Doclava.java @@ -16,12 +16,15 @@ package com.google.doclava; +import static java.util.stream.Collectors.toList; + import com.google.clearsilver.jsilver.JSilver; import com.google.clearsilver.jsilver.data.Data; import com.google.clearsilver.jsilver.resourceloader.ClassResourceLoader; import com.google.clearsilver.jsilver.resourceloader.CompositeResourceLoader; import com.google.clearsilver.jsilver.resourceloader.FileSystemResourceLoader; import com.google.clearsilver.jsilver.resourceloader.ResourceLoader; +import com.google.doclava.Errors.ErrorMessage; import com.google.doclava.javadoc.RootDocImpl; import com.sun.javadoc.ClassDoc; import com.sun.javadoc.Doc; @@ -60,6 +63,7 @@ import java.util.Map; import java.util.Set; import java.util.SortedMap; import java.util.TreeMap; +import java.util.function.Function; import java.util.jar.JarFile; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -175,6 +179,7 @@ public class Doclava implements Doclet { private static String proguardFile; private static String proofreadFile; private static String todoFile; + private static String lintBaselineFile; private static String stubsDir; private static HashSet<String> stubPackages; private static HashSet<String> stubImportPackages; @@ -547,6 +552,21 @@ public class Doclava implements Doclet { options.add( new Option() { + private final List<String> names = List.of("-lintbaseline"); + @Override public int getArgumentCount() { return 1; } + @Override public String getDescription() { return "Allowed lint errors"; } + @Override public Option.Kind getKind() { return Option.Kind.STANDARD; } + @Override public List<String> getNames() { return names; } + @Override public String getParameters() { return "<file>"; } + @Override public boolean process(String opt, List<String> arguments) { + lintBaselineFile = arguments.get(0); + return true; + } + } + ); + + options.add( + new Option() { private final List<String> names = List.of("-error"); @Override public int getArgumentCount() { return 1; } @Override public String getDescription() { return ""; } @@ -1564,6 +1584,9 @@ public class Doclava implements Doclet { if (!readManifest()) { return false; } + if (!readLintBaselineFile(lintBaselineFile)) { + return false; + } // Set up the data structures Converter.makeInfo(root); @@ -1815,6 +1838,36 @@ public class Doclava implements Doclet { return true; } + private static boolean readLintBaselineFile(String lintBaselineFile) { + if (lintBaselineFile == null) { + return true; + } + + Function<String, SourcePositionInfo> mapper = (line) -> { + if (line.trim().length() == 0) { + return null; + } + String[] words = line.split(" "); + String[] cols = words[0].split(":"); + if (cols.length != 2) { + System.err.println("ignored baseline entry: " + line); + return null; + } + int row = Integer.parseInt(cols[1]); + return new SourcePositionInfo(cols[0], row, 0); + + }; + try (BufferedReader reader = new BufferedReader(new FileReader(lintBaselineFile))) { + List<SourcePositionInfo> baseline = + reader.lines().map(mapper).filter(line -> line != null).collect(toList()); + Errors.setLintBaseline(baseline); + return true; + } catch (IOException exception) { + exception.printStackTrace(System.err); + return false; + } + } + private static boolean readManifest() { manifestPermissions.clear(); if (manifestFile == null) { |