Class CommandLine

java.lang.Object
edu.umd.cs.findbugs.config.CommandLine
Direct Known Subclasses:
Churn.ChurnCommandLine, CountClassVersions.CountClassVersionsCommandLine, Filter.FilterCommandLine, FindBugsCommandLine, ListBugDatabaseInfo.ListBugDatabaseInfoCommandLine, MergeSummarizeAndView.MSVCommandLine, MineBugHistory.MineBugHistoryCommandLine, ObfuscateBugs.CommandLine, PrintingBugReporter.PrintingCommandLine, RebornIssues.CommandLine, RejarClassesForAnalysis.RejarClassesForAnalysisCommandLine, SetBugDatabaseInfo.SetInfoCommandLine, TestingGround.CommandLine, UnionResults.UnionResultsCommandLine, Update.UpdateCommandLine

public abstract class CommandLine extends Object
Helper class for parsing command line arguments.
  • Field Details

    • SPACES

      private static final String SPACES
      See Also:
    • optionList

      private final List<String> optionList
    • unlistedOptions

      private final Set<String> unlistedOptions
    • optionGroups

      private final Map<Integer,String> optionGroups
    • requiresArgumentSet

      private final Set<String> requiresArgumentSet
    • optionDescriptionMap

      private final Map<String,String> optionDescriptionMap
    • optionExtraPartSynopsisMap

      private final Map<String,String> optionExtraPartSynopsisMap
    • argumentDescriptionMap

      private final Map<String,String> argumentDescriptionMap
    • maxWidth

      int maxWidth
  • Constructor Details

    • CommandLine

      protected CommandLine()
  • Method Details

    • startOptionGroup

      public void startOptionGroup(String description)
      Start a new group of related command-line options.
      Parameters:
      description - description of the group
    • addSwitch

      public void addSwitch(String option, String description)
      Add a command line switch. This method is for adding options that do not require an argument.
      Parameters:
      option - the option, must start with "-"
      description - single line description of the option
    • addSwitchWithOptionalExtraPart

      public void addSwitchWithOptionalExtraPart(String option, String optionExtraPartSynopsis, String description)
      Add a command line switch that allows optional extra information to be specified as part of it.
      Parameters:
      option - the option, must start with "-"
      optionExtraPartSynopsis - synopsis of the optional extra information
      description - single-line description of the option
    • addOption

      public void addOption(String option, String argumentDesc, String description)
      Add an option requiring an argument.
      Parameters:
      option - the option, must start with "-"
      argumentDesc - brief (one or two word) description of the argument
      description - single line description of the option
    • makeOptionUnlisted

      public void makeOptionUnlisted(String option)
      Don't list this option when printing Usage information
      Parameters:
      option -
    • expandOptionFiles

      public String[] expandOptionFiles(String[] argv, boolean ignoreComments, boolean ignoreBlankLines) throws IOException, CommandLine.HelpRequestedException
      Expand option files in given command line. Any token beginning with "@" is assumed to be an option file. Option files contain one command line option per line.
      Parameters:
      argv - the original command line
      ignoreComments - ignore comments (lines starting with "#")
      ignoreBlankLines - ignore blank lines
      Returns:
      the expanded command line
      Throws:
      IOException
      CommandLine.HelpRequestedException
    • getAnalysisOptionProperties

      public static ArrayList<String> getAnalysisOptionProperties(boolean ignoreComments, boolean ignoreBlankLines)
    • addCommandLineOptions

      private static void addCommandLineOptions(ArrayList<String> resultList, BufferedReader reader, boolean ignoreComments, boolean ignoreBlankLines) throws IOException
      Throws:
      IOException
    • parse

      public int parse(String[] argv, int minArgs, int maxArgs, String usage)
      Parse switches/options, showing usage information if they can't be parsed, or if we have the wrong number of remaining arguments after parsing. Calls parse(String[]).
      Parameters:
      argv - command line arguments
      minArgs - allowed minimum number of arguments remaining after switches/options are parsed
      maxArgs - allowed maximum number of arguments remaining after switches/options are parsed
      usage - usage synopsis
      Returns:
      number of arguments parsed
    • parse

      public int parse(String[] argv) throws IOException, CommandLine.HelpRequestedException
      Parse a command line. Calls down to handleOption() and handleOptionWithArgument() methods. Stops parsing when it reaches the end of the command line, or when a command line argument not starting with "-" is seen.
      Parameters:
      argv - the arguments
      Returns:
      the number of arguments parsed; if equal to argv.length, then the entire command line was parsed
      Throws:
      CommandLine.HelpRequestedException
      IOException
    • parse

      private int parse(String[] argv, boolean dryRun) throws IOException, CommandLine.HelpRequestedException
      Throws:
      IOException
      CommandLine.HelpRequestedException
    • splitOption

      @NonNull static CommandLine.Option splitOption(String option)
    • handleOption

      protected abstract void handleOption(String option, String optionExtraPart) throws IOException
      Callback method for handling an option.
      Parameters:
      option - the option
      optionExtraPart - the "extra" part of the option (everything after the colon: e.g., "withMessages" in "-xml:withMessages"); the empty string if there was no extra part
      Throws:
      IOException
    • handleOptionWithArgument

      protected abstract void handleOptionWithArgument(String option, String argument) throws IOException
      Callback method for handling an option with an argument.
      Parameters:
      option - the option
      argument - the argument
      Throws:
      IOException
    • printUsage

      public void printUsage(OutputStream os)
      Print command line usage information to given stream.
      Parameters:
      os - the output stream
    • printField

      private static void printField(PrintStream out, String s, int width)