Class Main

java.lang.Object
com.puppycrawl.tools.checkstyle.Main

public final class Main extends Object
Wrapper command line program for the Checker.
  • Field Details

  • Constructor Details

    • Main

      private Main()
      Client code should not create instances of this class, but use main(String[]) method instead.
  • Method Details

    • main

      public static void main(String... args) throws IOException
      Loops over the files specified checking them for errors. The exit code is the number of errors found in all the files.
      Parameters:
      args - the command line arguments.
      Throws:
      IOException - if there is a problem with files access
    • getVersionString

      private static String getVersionString()
      Returns the version string printed when the user requests version help (--version or -V).
      Returns:
      a version string based on the package implementation version
    • execute

      private static int execute(picocli.CommandLine.ParseResult parseResult, Main.CliOptions options) throws IOException, CheckstyleException
      Validates the user input and returns -1 if invalid, otherwise executes CheckStyle and returns the number of violations.
      Parameters:
      parseResult - generic access to options and parameters found on the command line
      options - encapsulates options and parameters specified on the command line
      Returns:
      number of violations
      Throws:
      IOException - if a file could not be read.
      CheckstyleException - if something happens processing the files.
    • getFilesToProcess

      private static List<File> getFilesToProcess(Main.CliOptions options)
      Determines the files to process.
      Parameters:
      options - the user-specified options
      Returns:
      list of files to process
    • listFiles

      private static List<File> listFiles(File node, List<Pattern> patternsToExclude)
      Traverses a specified node looking for files to check. Found files are added to a specified list. Subdirectories are also traversed.
      Parameters:
      node - the node to process
      patternsToExclude - The list of patterns to exclude from searching or being added as files.
      Returns:
      found files
    • isPathExcluded

      private static boolean isPathExcluded(String path, Iterable<Pattern> patternsToExclude)
      Checks if a directory/file path should be excluded based on if it matches one of the patterns supplied.
      Parameters:
      path - The path of the directory/file to check
      patternsToExclude - The collection of patterns to exclude from searching or being added as files.
      Returns:
      True if the directory/file matches one of the patterns.
    • runCli

      private static int runCli(Main.CliOptions options, List<File> filesToProcess) throws IOException, CheckstyleException
      Do execution of CheckStyle based on Command line options.
      Parameters:
      options - user-specified options
      filesToProcess - the list of files whose style to check
      Returns:
      number of violations
      Throws:
      IOException - if a file could not be read.
      CheckstyleException - if something happens processing the files.
    • runCheckstyle

      private static int runCheckstyle(Main.CliOptions options, List<File> filesToProcess) throws CheckstyleException, IOException
      Executes required Checkstyle actions based on passed parameters.
      Parameters:
      options - user-specified options
      filesToProcess - the list of files whose style to check
      Returns:
      number of violations of ERROR level
      Throws:
      IOException - when output file could not be found
      CheckstyleException - when properties file could not be loaded
    • loadProperties

      private static Properties loadProperties(File file) throws CheckstyleException
      Loads properties from a File.
      Parameters:
      file - the properties file
      Returns:
      the properties in file
      Throws:
      CheckstyleException - when could not load properties file
    • getRootModule

      private static RootModule getRootModule(String name, ClassLoader moduleClassLoader) throws CheckstyleException
      Creates a new instance of the root module that will control and run Checkstyle.
      Parameters:
      name - The name of the module. This will either be a short name that will have to be found or the complete package name.
      moduleClassLoader - Class loader used to load the root module.
      Returns:
      The new instance of the root module.
      Throws:
      CheckstyleException - if no module can be instantiated from name
    • getTreeWalkerConfig

      Returns TreeWalker module configuration.
      Parameters:
      config - The configuration object.
      Returns:
      The TreeWalker module configuration.
    • createListener

      private static AuditListener createListener(Main.OutputFormat format, Path outputLocation) throws IOException
      This method creates in AuditListener an open stream for validation data, it must be closed by RootModule (default implementation is Checker) by calling AuditListener.auditFinished(AuditEvent).
      Parameters:
      format - format of the audit listener
      outputLocation - the location of output
      Returns:
      a fresh new AuditListener
      Throws:
      IOException - when provided output location is not found
    • getOutputStream

      private static OutputStream getOutputStream(Path outputPath) throws IOException
      Create output stream or return System.out.
      Parameters:
      outputPath - output location
      Returns:
      output stream
      Throws:
      IOException - might happen
    • getOutputStreamOptions

      Create AbstractAutomaticBean.OutputStreamOptions for the given location.
      Parameters:
      outputPath - output location
      Returns:
      output stream options