Class RegexpHeaderCheck
- java.lang.Object
-
- com.puppycrawl.tools.checkstyle.api.AutomaticBean
-
- com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter
-
- com.puppycrawl.tools.checkstyle.api.AbstractFileSetCheck
-
- com.puppycrawl.tools.checkstyle.checks.header.AbstractHeaderCheck
-
- com.puppycrawl.tools.checkstyle.checks.header.RegexpHeaderCheck
-
- All Implemented Interfaces:
Configurable
,Contextualizable
,ExternalResourceHolder
,FileSetCheck
public class RegexpHeaderCheck extends AbstractHeaderCheck
Checks the header of the source against a header file that contains aregular expression
for each line of the source header. In default configuration, if header is not specified, the default value of header is set to null and the check does not rise any violations.
-
-
Field Summary
Fields Modifier and Type Field Description private static int[]
EMPTY_INT_ARRAY
Empty array to avoid instantiations.private java.util.List<java.util.regex.Pattern>
headerRegexps
The compiled regular expressions.static java.lang.String
MSG_HEADER_MISMATCH
A key is pointing to the warning message text in "messages.properties" file.static java.lang.String
MSG_HEADER_MISSING
A key is pointing to the warning message text in "messages.properties" file.private int[]
multiLines
The header lines to repeat (0 or more) in the check, sorted.
-
Constructor Summary
Constructors Constructor Description RegexpHeaderCheck()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private boolean
isMatch(java.lang.String line, int headerLineNo)
Checks if a code line matches the required header line.private boolean
isMultiLine(int lineNo)
Returns true if line is multiline header lines or false.private void
logFirstSinglelineLine(int startHeaderLine, int headerSize)
Logs warning if any non-multiline lines left in header regexp.protected void
postProcessHeaderLines()
Hook method for post processing header lines.protected void
processFiltered(java.io.File file, java.util.List<java.lang.String> lines)
Called to process a file that matches the specified file extensions.void
setHeader(java.lang.String header)
Validates theheader
by compiling it withPattern.compile(String)
and throwsIllegalArgumentException
ifheader
isn't a valid pattern.void
setMultiLines(int... list)
Set the lines numbers to repeat in the header check.-
Methods inherited from class com.puppycrawl.tools.checkstyle.checks.header.AbstractHeaderCheck
finishLocalSetup, getExternalResourceLocations, getHeaderLines, setCharset, setHeaderFile
-
Methods inherited from class com.puppycrawl.tools.checkstyle.api.AbstractFileSetCheck
beginProcessing, destroy, finishProcessing, fireErrors, getFileExtensions, getMessageCollector, getMessageDispatcher, init, log, log, process, setFileExtensions, setMessageDispatcher
-
Methods inherited from class com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter
getCustomMessages, getId, getMessageBundle, getSeverity, getSeverityLevel, log, setId, setSeverity
-
Methods inherited from class com.puppycrawl.tools.checkstyle.api.AutomaticBean
configure, contextualize, getConfiguration, setupChild
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface com.puppycrawl.tools.checkstyle.api.Configurable
configure
-
Methods inherited from interface com.puppycrawl.tools.checkstyle.api.Contextualizable
contextualize
-
-
-
-
Field Detail
-
MSG_HEADER_MISSING
public static final java.lang.String MSG_HEADER_MISSING
A key is pointing to the warning message text in "messages.properties" file.- See Also:
- Constant Field Values
-
MSG_HEADER_MISMATCH
public static final java.lang.String MSG_HEADER_MISMATCH
A key is pointing to the warning message text in "messages.properties" file.- See Also:
- Constant Field Values
-
EMPTY_INT_ARRAY
private static final int[] EMPTY_INT_ARRAY
Empty array to avoid instantiations.
-
headerRegexps
private final java.util.List<java.util.regex.Pattern> headerRegexps
The compiled regular expressions.
-
multiLines
private int[] multiLines
The header lines to repeat (0 or more) in the check, sorted.
-
-
Method Detail
-
setMultiLines
public void setMultiLines(int... list)
Set the lines numbers to repeat in the header check.- Parameters:
list
- comma separated list of line numbers to repeat in header.
-
processFiltered
protected void processFiltered(java.io.File file, java.util.List<java.lang.String> lines)
Description copied from class:AbstractFileSetCheck
Called to process a file that matches the specified file extensions.- Specified by:
processFiltered
in classAbstractFileSetCheck
- Parameters:
file
- the file to be processedlines
- an immutable list of the contents of the file.
-
logFirstSinglelineLine
private void logFirstSinglelineLine(int startHeaderLine, int headerSize)
Logs warning if any non-multiline lines left in header regexp.- Parameters:
startHeaderLine
- header line number to start fromheaderSize
- whole header size
-
isMatch
private boolean isMatch(java.lang.String line, int headerLineNo)
Checks if a code line matches the required header line.- Parameters:
line
- the code lineheaderLineNo
- the header line number.- Returns:
- true if and only if the line matches the required header line.
-
isMultiLine
private boolean isMultiLine(int lineNo)
Returns true if line is multiline header lines or false.- Parameters:
lineNo
- a line number- Returns:
- if
lineNo
is one of the repeat header lines.
-
postProcessHeaderLines
protected void postProcessHeaderLines()
Description copied from class:AbstractHeaderCheck
Hook method for post processing header lines. This implementation does nothing.- Specified by:
postProcessHeaderLines
in classAbstractHeaderCheck
-
setHeader
public void setHeader(java.lang.String header)
Validates theheader
by compiling it withPattern.compile(String)
and throwsIllegalArgumentException
ifheader
isn't a valid pattern.- Overrides:
setHeader
in classAbstractHeaderCheck
- Parameters:
header
- the header value to validate and set (in that order)
-
-