Class SarifLogger

    • Field Summary

      Fields 
      Modifier and Type Field Description
      private static int BUFFER_SIZE
      Input stream buffer size.
      private boolean closeStream
      Close output stream in auditFinished.
      private static java.lang.String COLUMN_PLACEHOLDER
      The placeholder for column.
      private static java.lang.String LINE_PLACEHOLDER
      The placeholder for line.
      private static java.lang.String MESSAGE_PLACEHOLDER
      The placeholder for message.
      private java.lang.String report
      Content for the entire report.
      private java.lang.String resultErrorOnly
      Content for result representing an error without filename or location.
      private java.lang.String resultFileOnly
      Content for result representing an error with filename only and without source location.
      private java.lang.String resultLineColumn
      Content for result representing an error with source line and column.
      private java.lang.String resultLineOnly
      Content for result representing an error with source line only.
      private java.util.List<java.lang.String> results
      The results.
      private static java.lang.String RESULTS_PLACEHOLDER
      The placeholder for results.
      private static java.lang.String RULE_ID_PLACEHOLDER
      The placeholder for rule id.
      private static java.lang.String SEVERITY_LEVEL_PLACEHOLDER
      The placeholder for severity level.
      private static int UNICODE_ESCAPE_UPPER_LIMIT
      Unicode escaping upper limit.
      private static int UNICODE_LENGTH
      The length of unicode placeholder.
      private static java.lang.String URI_PLACEHOLDER
      The placeholder for uri.
      private static java.lang.String VERSION_PLACEHOLDER
      The placeholder for version.
      private java.io.PrintWriter writer
      Helper writer that allows easy encoding and printing.
    • Field Detail

      • UNICODE_LENGTH

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

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

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

        private static final java.lang.String MESSAGE_PLACEHOLDER
        The placeholder for message.
        See Also:
        Constant Field Values
      • SEVERITY_LEVEL_PLACEHOLDER

        private static final java.lang.String SEVERITY_LEVEL_PLACEHOLDER
        The placeholder for severity level.
        See Also:
        Constant Field Values
      • URI_PLACEHOLDER

        private static final java.lang.String URI_PLACEHOLDER
        The placeholder for uri.
        See Also:
        Constant Field Values
      • LINE_PLACEHOLDER

        private static final java.lang.String LINE_PLACEHOLDER
        The placeholder for line.
        See Also:
        Constant Field Values
      • COLUMN_PLACEHOLDER

        private static final java.lang.String COLUMN_PLACEHOLDER
        The placeholder for column.
        See Also:
        Constant Field Values
      • RULE_ID_PLACEHOLDER

        private static final java.lang.String RULE_ID_PLACEHOLDER
        The placeholder for rule id.
        See Also:
        Constant Field Values
      • VERSION_PLACEHOLDER

        private static final java.lang.String VERSION_PLACEHOLDER
        The placeholder for version.
        See Also:
        Constant Field Values
      • RESULTS_PLACEHOLDER

        private static final java.lang.String RESULTS_PLACEHOLDER
        The placeholder for results.
        See Also:
        Constant Field Values
      • writer

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

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

        private final java.util.List<java.lang.String> results
        The results.
      • report

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

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

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

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

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

      • SarifLogger

        public SarifLogger​(java.io.OutputStream outputStream,
                           AutomaticBean.OutputStreamOptions outputStreamOptions)
                    throws java.io.IOException
        Creates a new SarifLogger instance.
        Parameters:
        outputStream - where to log audit events
        outputStreamOptions - if CLOSE that should be closed in auditFinished()
        Throws:
        java.lang.IllegalArgumentException - if outputStreamOptions is null
        java.io.IOException - if there is reading errors.
    • Method Detail

      • 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,
                                 java.lang.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 java.lang.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 java.lang.String escape​(java.lang.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 java.lang.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 java.lang.String readResource​(java.lang.String name)
                                             throws java.io.IOException
        Read string from given resource.
        Parameters:
        name - name of the desired resource
        Returns:
        the string content from the give resource
        Throws:
        java.io.IOException - if there is reading errors