Class SarifLogger

java.lang.Object
com.puppycrawl.tools.checkstyle.api.AutomaticBean
com.puppycrawl.tools.checkstyle.SarifLogger
All Implemented Interfaces:
AuditListener, Configurable, Contextualizable, EventListener

public class SarifLogger extends AutomaticBean implements AuditListener
Simple SARIF logger. SARIF stands for the static analysis results interchange format. Reference: https://sarifweb.azurewebsites.net/
  • Field Details

    • UNICODE_LENGTH

      private static final int UNICODE_LENGTH
      The length of unicode placeholder.
      See Also:
    • UNICODE_ESCAPE_UPPER_LIMIT

      private static final int UNICODE_ESCAPE_UPPER_LIMIT
      Unicode escaping upper limit.
      See Also:
    • BUFFER_SIZE

      private static final int BUFFER_SIZE
      Input stream buffer size.
      See Also:
    • MESSAGE_PLACEHOLDER

      private static final String MESSAGE_PLACEHOLDER
      The placeholder for message.
      See Also:
    • SEVERITY_LEVEL_PLACEHOLDER

      private static final String SEVERITY_LEVEL_PLACEHOLDER
      The placeholder for severity level.
      See Also:
    • URI_PLACEHOLDER

      private static final String URI_PLACEHOLDER
      The placeholder for uri.
      See Also:
    • LINE_PLACEHOLDER

      private static final String LINE_PLACEHOLDER
      The placeholder for line.
      See Also:
    • COLUMN_PLACEHOLDER

      private static final String COLUMN_PLACEHOLDER
      The placeholder for column.
      See Also:
    • RULE_ID_PLACEHOLDER

      private static final String RULE_ID_PLACEHOLDER
      The placeholder for rule id.
      See Also:
    • VERSION_PLACEHOLDER

      private static final String VERSION_PLACEHOLDER
      The placeholder for version.
      See Also:
    • RESULTS_PLACEHOLDER

      private static final String RESULTS_PLACEHOLDER
      The placeholder for results.
      See Also:
    • writer

      private final PrintWriter writer
      Helper writer that allows easy encoding and printing.
    • closeStream

      private final boolean closeStream
      Close output stream in auditFinished.
    • results

      private final List<String> results
      The results.
    • report

      private final String report
      Content for the entire report.
    • resultLineColumn

      private final String resultLineColumn
      Content for result representing an error with source line and column.
    • resultLineOnly

      private final String resultLineOnly
      Content for result representing an error with source line only.
    • resultFileOnly

      private final String resultFileOnly
      Content for result representing an error with filename only and without source location.
    • resultErrorOnly

      private final String resultErrorOnly
      Content for result representing an error without filename or location.
  • Constructor Details

  • Method Details

    • finishLocalSetup

      protected void finishLocalSetup()
      Description copied from class: AutomaticBean
      Provides a hook to finish the part of this component's setup that was not handled by the bean introspection.

      The default implementation does nothing.

      Specified by:
      finishLocalSetup in class AutomaticBean
    • auditStarted

      public void auditStarted(AuditEvent event)
      Description copied from interface: AuditListener
      Notify that the audit is about to start.
      Specified by:
      auditStarted in interface AuditListener
      Parameters:
      event - the event details
    • auditFinished

      public void auditFinished(AuditEvent event)
      Notify that the audit is finished. Following idea suppressions are false positives
      Specified by:
      auditFinished in interface AuditListener
      Parameters:
      event - the event details
    • addError

      public void addError(AuditEvent event)
      Notify that an audit error was discovered on a specific file. Following idea suppressions are false positives
      Specified by:
      addError in interface AuditListener
      Parameters:
      event - the event details
    • addException

      public void addException(AuditEvent event, Throwable throwable)
      Notify that an exception happened while performing audit. Following idea suppressions are false positives
      Specified by:
      addException in interface AuditListener
      Parameters:
      event - the event details
      throwable - details of the exception
    • fileStarted

      public void fileStarted(AuditEvent event)
      Description copied from interface: AuditListener
      Notify that audit is about to start on a specific file.
      Specified by:
      fileStarted in interface AuditListener
      Parameters:
      event - the event details
    • fileFinished

      public void fileFinished(AuditEvent event)
      Description copied from interface: AuditListener
      Notify that audit is finished on a specific file.
      Specified by:
      fileFinished in interface AuditListener
      Parameters:
      event - the event details
    • renderSeverityLevel

      private static String renderSeverityLevel(SeverityLevel severityLevel)
      Render the severity level into SARIF severity level.
      Parameters:
      severityLevel - the Severity level.
      Returns:
      the rendered severity level in string.
    • escape

      public static String escape(String value)
      Escape \b, \f, \n, \r, \t, \", \\ and U+0000 through U+001F. Reference: https://www.ietf.org/rfc/rfc4627.txt - 2.5. Strings
      Parameters:
      value - the value to escape.
      Returns:
      the escaped value if necessary.
    • escapeUnicode1F

      private static String escapeUnicode1F(char chr)
      Escape the character between 0x00 to 0x1F in JSON.
      Parameters:
      chr - the character to be escaped.
      Returns:
      the escaped string.
    • readResource

      public static String readResource(String name) throws IOException
      Read string from given resource.
      Parameters:
      name - name of the desired resource
      Returns:
      the string content from the give resource
      Throws:
      IOException - if there is reading errors