Package com.puppycrawl.tools.checkstyle
Class SarifLogger
- java.lang.Object
-
- com.puppycrawl.tools.checkstyle.AbstractAutomaticBean
-
- com.puppycrawl.tools.checkstyle.SarifLogger
-
- All Implemented Interfaces:
AuditListener
,Configurable
,Contextualizable
,EventListener
public class SarifLogger extends AbstractAutomaticBean implements AuditListener
Simple SARIF logger. SARIF stands for the static analysis results interchange format. See reference
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class com.puppycrawl.tools.checkstyle.AbstractAutomaticBean
AbstractAutomaticBean.OutputStreamOptions
-
-
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 String
COLUMN_PLACEHOLDER
The placeholder for column.private static String
LINE_PLACEHOLDER
The placeholder for line.private static String
MESSAGE_PLACEHOLDER
The placeholder for message.private String
report
Content for the entire report.private String
resultErrorOnly
Content for result representing an error without filename or location.private String
resultFileOnly
Content for result representing an error with filename only and without source location.private String
resultLineColumn
Content for result representing an error with source line and column.private String
resultLineOnly
Content for result representing an error with source line only.private List<String>
results
The results.private static String
RESULTS_PLACEHOLDER
The placeholder for results.private static String
RULE_ID_PLACEHOLDER
The placeholder for rule id.private static 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 String
URI_PLACEHOLDER
The placeholder for uri.private static String
VERSION_PLACEHOLDER
The placeholder for version.private PrintWriter
writer
Helper writer that allows easy encoding and printing.
-
Constructor Summary
Constructors Constructor Description SarifLogger(OutputStream outputStream, AbstractAutomaticBean.OutputStreamOptions outputStreamOptions)
Creates a newSarifLogger
instance.SarifLogger(OutputStream outputStream, AutomaticBean.OutputStreamOptions outputStreamOptions)
Creates a newSarifLogger
instance.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addError(AuditEvent event)
Notify that an audit error was discovered on a specific file.void
addException(AuditEvent event, Throwable throwable)
Notify that an exception happened while performing audit.void
auditFinished(AuditEvent event)
Notify that the audit is finished.void
auditStarted(AuditEvent event)
Notify that the audit is about to start.static String
escape(String value)
Escape \b, \f, \n, \r, \t, \", \\ and U+0000 through U+001F.private static String
escapeUnicode1F(char chr)
Escape the character between 0x00 to 0x1F in JSON.void
fileFinished(AuditEvent event)
Notify that audit is finished on a specific file.void
fileStarted(AuditEvent event)
Notify that audit is about to start on a specific file.protected void
finishLocalSetup()
Provides a hook to finish the part of this component's setup that was not handled by the bean introspection.static String
readResource(String name)
Read string from given resource.private static String
renderSeverityLevel(SeverityLevel severityLevel)
Render the severity level into SARIF severity level.-
Methods inherited from class com.puppycrawl.tools.checkstyle.AbstractAutomaticBean
configure, contextualize, getConfiguration, setupChild
-
-
-
-
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 String MESSAGE_PLACEHOLDER
The placeholder for message.- See Also:
- Constant Field Values
-
SEVERITY_LEVEL_PLACEHOLDER
private static final String SEVERITY_LEVEL_PLACEHOLDER
The placeholder for severity level.- See Also:
- Constant Field Values
-
URI_PLACEHOLDER
private static final String URI_PLACEHOLDER
The placeholder for uri.- See Also:
- Constant Field Values
-
LINE_PLACEHOLDER
private static final String LINE_PLACEHOLDER
The placeholder for line.- See Also:
- Constant Field Values
-
COLUMN_PLACEHOLDER
private static final String COLUMN_PLACEHOLDER
The placeholder for column.- See Also:
- Constant Field Values
-
RULE_ID_PLACEHOLDER
private static final String RULE_ID_PLACEHOLDER
The placeholder for rule id.- See Also:
- Constant Field Values
-
VERSION_PLACEHOLDER
private static final String VERSION_PLACEHOLDER
The placeholder for version.- See Also:
- Constant Field Values
-
RESULTS_PLACEHOLDER
private static final String RESULTS_PLACEHOLDER
The placeholder for results.- See Also:
- Constant Field Values
-
writer
private final PrintWriter writer
Helper writer that allows easy encoding and printing.
-
closeStream
private final boolean closeStream
Close output stream in auditFinished.
-
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 Detail
-
SarifLogger
public SarifLogger(OutputStream outputStream, AutomaticBean.OutputStreamOptions outputStreamOptions) throws IOException
Creates a newSarifLogger
instance.- Parameters:
outputStream
- where to log audit eventsoutputStreamOptions
- ifCLOSE
that should be closed in auditFinished()- Throws:
IllegalArgumentException
- if outputStreamOptions is nullIOException
- if there is reading errors.
-
SarifLogger
public SarifLogger(OutputStream outputStream, AbstractAutomaticBean.OutputStreamOptions outputStreamOptions) throws IOException
Creates a newSarifLogger
instance.- Parameters:
outputStream
- where to log audit eventsoutputStreamOptions
- ifCLOSE
that should be closed in auditFinished()- Throws:
IllegalArgumentException
- if outputStreamOptions is nullIOException
- if there is reading errors.
-
-
Method Detail
-
finishLocalSetup
protected void finishLocalSetup()
Description copied from class:AbstractAutomaticBean
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 classAbstractAutomaticBean
-
auditStarted
public void auditStarted(AuditEvent event)
Description copied from interface:AuditListener
Notify that the audit is about to start.- Specified by:
auditStarted
in interfaceAuditListener
- Parameters:
event
- the event details
-
auditFinished
public void auditFinished(AuditEvent event)
Description copied from interface:AuditListener
Notify that the audit is finished.- Specified by:
auditFinished
in interfaceAuditListener
- Parameters:
event
- the event details
-
addError
public void addError(AuditEvent event)
Description copied from interface:AuditListener
Notify that an audit error was discovered on a specific file.- Specified by:
addError
in interfaceAuditListener
- Parameters:
event
- the event details
-
addException
public void addException(AuditEvent event, Throwable throwable)
Description copied from interface:AuditListener
Notify that an exception happened while performing audit.- Specified by:
addException
in interfaceAuditListener
- Parameters:
event
- the event detailsthrowable
- 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 interfaceAuditListener
- 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 interfaceAuditListener
- 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. See reference - 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
-
-