diff options
Diffstat (limited to 'src/main/java/com/puppycrawl/tools/checkstyle/filters/SuppressElement.java')
-rw-r--r-- | src/main/java/com/puppycrawl/tools/checkstyle/filters/SuppressElement.java | 42 |
1 files changed, 36 insertions, 6 deletions
diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/filters/SuppressElement.java b/src/main/java/com/puppycrawl/tools/checkstyle/filters/SuppressElement.java index ad2d6d23e..21c17eea1 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/filters/SuppressElement.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/filters/SuppressElement.java @@ -24,7 +24,6 @@ import java.util.regex.Pattern; import com.puppycrawl.tools.checkstyle.api.AuditEvent; import com.puppycrawl.tools.checkstyle.api.Filter; -import com.puppycrawl.tools.checkstyle.utils.CommonUtils; /** * This filter processes {@link AuditEvent} @@ -53,6 +52,12 @@ public class SuppressElement /** The pattern for check class names. */ private final String checkPattern; + /** The regexp to match message names against. */ + private final Pattern messageRegexp; + + /** The pattern for message names. */ + private final String messagePattern; + /** Module id filter. */ private final String moduleId; @@ -74,20 +79,33 @@ public class SuppressElement * * @param files regular expression for names of filtered files. * @param checks regular expression for filtered check classes. + * @param message regular expression for messages. * @param modId the id * @param lines lines CSV values and ranges for line number filtering. * @param columns columns CSV values and ranges for column number filtering. */ public SuppressElement(String files, String checks, - String modId, String lines, String columns) { + String message, String modId, String lines, String columns) { filePattern = files; - fileRegexp = Pattern.compile(files); + if (files == null) { + fileRegexp = null; + } + else { + fileRegexp = Pattern.compile(files); + } checkPattern = checks; if (checks == null) { checkRegexp = null; } else { - checkRegexp = CommonUtils.createPattern(checks); + checkRegexp = Pattern.compile(checks); + } + messagePattern = message; + if (message == null) { + messageRegexp = null; + } + else { + messageRegexp = Pattern.compile(message); } moduleId = modId; linesCsv = lines; @@ -109,6 +127,7 @@ public class SuppressElement @Override public boolean accept(AuditEvent event) { return isFileNameAndModuleNotMatching(event) + || !isMessageNameMatching(event) || isLineAndColumnMatch(event); } @@ -119,13 +138,22 @@ public class SuppressElement */ private boolean isFileNameAndModuleNotMatching(AuditEvent event) { return event.getFileName() == null - || !fileRegexp.matcher(event.getFileName()).find() + || fileRegexp != null && !fileRegexp.matcher(event.getFileName()).find() || event.getLocalizedMessage() == null || moduleId != null && !moduleId.equals(event.getModuleId()) || checkRegexp != null && !checkRegexp.matcher(event.getSourceName()).find(); } /** + * Is matching by message. + * @param event event + * @return true is matching or not set. + */ + private boolean isMessageNameMatching(AuditEvent event) { + return messageRegexp == null || messageRegexp.matcher(event.getMessage()).find(); + } + + /** * Whether line and column match. * @param event event to process. * @return true if line and column match. @@ -138,7 +166,8 @@ public class SuppressElement @Override public int hashCode() { - return Objects.hash(filePattern, checkPattern, moduleId, linesCsv, columnsCsv); + return Objects.hash(filePattern, checkPattern, messagePattern, moduleId, linesCsv, + columnsCsv); } @Override @@ -152,6 +181,7 @@ public class SuppressElement final SuppressElement suppressElement = (SuppressElement) other; return Objects.equals(filePattern, suppressElement.filePattern) && Objects.equals(checkPattern, suppressElement.checkPattern) + && Objects.equals(messagePattern, suppressElement.messagePattern) && Objects.equals(moduleId, suppressElement.moduleId) && Objects.equals(linesCsv, suppressElement.linesCsv) && Objects.equals(columnsCsv, suppressElement.columnsCsv); |