@Test public void testFormatModuleNameDoesNotContainCheckSuffix() { final AuditEvent mock = PowerMockito.mock(AuditEvent.class); when(mock.getSourceName()).thenReturn("TestModule"); when(mock.getSeverityLevel()).thenReturn(SeverityLevel.WARNING); when(mock.getLine()).thenReturn(1); when(mock.getColumn()).thenReturn(1); when(mock.getMessage()).thenReturn("Mocked message."); when(mock.getFileName()).thenReturn("InputMockFile.java"); final AuditEventFormatter formatter = new AuditEventDefaultFormatter(); final String expected = "[WARN] InputMockFile.java:1:1: Mocked message. [TestModule]"; assertEquals("Invalid format", expected, formatter.format(mock)); }
@Override public String format(AuditEvent event) { final String fileName = event.getFileName(); final String message = event.getMessage(); final SeverityLevel severityLevel = event.getSeverityLevel(); final String severityLevelName; if (severityLevel == SeverityLevel.WARNING) { .append(fileName).append(':').append(event.getLine()); if (event.getColumn() > 0) { sb.append(':').append(event.getColumn()); if (event.getModuleId() == null) { final String checkShortName = getCheckShortName(event); sb.append(checkShortName); sb.append(event.getModuleId());
/** * Is matching by file name and Check name. * @param event event * @return true is matching */ private boolean isFileNameAndModuleNotMatching(AuditEvent event) { return event.getFileName() == null || fileRegexp != null && !fileRegexp.matcher(event.getFileName()).find() || event.getLocalizedMessage() == null || moduleId != null && !moduleId.equals(event.getModuleId()) || checkRegexp != null && !checkRegexp.matcher(event.getSourceName()).find(); }
/** * Returns the length of the buffer for StringBuilder. * bufferLength = fileNameLength + messageLength + lengthOfAllSeparators + * + severityNameLength + checkNameLength. * @param event audit event. * @param severityLevelNameLength length of severity level name. * @return the length of the buffer for StringBuilder. */ private static int calculateBufferLength(AuditEvent event, int severityLevelNameLength) { return LENGTH_OF_ALL_SEPARATORS + event.getFileName().length() + event.getMessage().length() + severityLevelNameLength + getCheckShortName(event).length(); }
/** * Checks whether the suppression matches the given {@link AuditEvent}. * @param event {@link AuditEvent} instance. * @return true if the suppression matches {@link AuditEvent}. */ private boolean isMatch(AuditEvent event) { boolean match = false; if (isInScopeOfSuppression(event)) { final Matcher sourceNameMatcher = eventSourceRegexp.matcher(event.getSourceName()); if (sourceNameMatcher.find()) { match = eventMessageRegexp == null || eventMessageRegexp.matcher(event.getMessage()).find(); } else { match = event.getModuleId() != null && eventSourceRegexp.matcher(event.getModuleId()).find(); } } return match; }
@Override public void addException(final AuditEvent event, final Throwable throwable) { final String check = event.getSourceName(); Logger.error( this, "%s[%d]: %s (%s), %[exception]s", event.getFileName().substring( this.env.basedir().toString().length() ), event.getLine(), event.getMessage(), check.substring(check.lastIndexOf('.') + 1), throwable ); }
/** * Outputs the given event to the writer. * @param event An event to print. */ private void writeFileError(AuditEvent event) { writer.print("<error" + " line=\"" + event.getLine() + "\""); if (event.getColumn() > 0) { writer.print(" column=\"" + event.getColumn() + "\""); } writer.print(" severity=\"" + event.getSeverityLevel().getName() + "\""); writer.print(" message=\"" + encode(event.getMessage()) + "\""); writer.print(" source=\""); if (event.getModuleId() == null) { writer.print(encode(event.getSourceName())); } else { writer.print(encode(event.getModuleId())); } writer.println("\"/>"); }
@Override public void fileFinished(AuditEvent event) { final String fileName = event.getFileName(); final FileMessages messages = fileMessages.get(fileName); synchronized (writerLock) { writeFileMessages(fileName, messages); } fileMessages.remove(fileName); }
private String printEvent(AuditEvent event) { final LocalizedMessage msg = event.getLocalizedMessage(); return String.format("%-8s %-40s %s:%d %s", msg.getSeverityLevel(), msg.getKey(), event.getFileName(), event.getLine(), event.getMessage()); } }
@Override public String format(AuditEvent event) { final String fileName = event.getFileName(); final String message = event.getMessage(); // avoid StringBuffer.expandCapacity final int bufLen = event.getFileName().length() + event.getMessage().length() + LENGTH_OF_ALL_SEPARATORS; final StringBuilder sb = new StringBuilder(bufLen); sb.append(fileName).append(':').append(event.getLine()); if (event.getColumn() > 0) { sb.append(':').append(event.getColumn()); } sb.append(": ").append(message); return sb.toString(); }
@Override public void addException(AuditEvent event, Throwable throwable) { LOG.warn(event.getFileName() + ":" + event.getLine() + " " + event.getMessage(), throwable); } }
@Override public void addError(AuditEvent event) { final String xpathQuery = XpathFileGeneratorAstFilter.findCorrespondingXpathQuery(event); if (xpathQuery != null) { printXmlHeader(); final File file = new File(event.getFileName()); writer.println("<suppress-xpath"); writer.print(" files=\""); writer.print(file.getName()); writer.println(QUOTE_CHAR); if (event.getModuleId() == null) { final String checkName = PackageObjectFactory.getShortFromFullModuleNames(event.getSourceName()); writer.print(" checks=\""); writer.print(checkName); } else { writer.print(" id=\""); writer.print(event.getModuleId()); } writer.println(QUOTE_CHAR); writer.print(" query=\""); writer.print(xpathQuery); writer.println("\"/>"); } }
/** * 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(); }
/** * Checks for a suppression of a check with the given source name and * location in the last file processed. * @param event audit event. * @return whether the check with the given name is suppressed at the given * source location */ public static boolean isSuppressed(AuditEvent event) { final List<Entry> entries = ENTRIES.get(); final String sourceName = event.getSourceName(); final String checkAlias = getAlias(sourceName); final int line = event.getLine(); final int column = event.getColumn(); boolean suppressed = false; for (Entry entry : entries) { final boolean afterStart = isSuppressedAfterEventStart(line, column, entry); final boolean beforeEnd = isSuppressedBeforeEventEnd(line, column, entry); final boolean nameMatches = ALL_WARNING_MATCHING_ID.equals(entry.getCheckName()) || entry.getCheckName().equalsIgnoreCase(checkAlias); final boolean idMatches = event.getModuleId() != null && event.getModuleId().equals(entry.getCheckName()); if (afterStart && beforeEnd && (nameMatches || idMatches)) { suppressed = true; break; } } return suppressed; }
@Override public boolean accept(AuditEvent event) { boolean accepted = true; if (event.getLocalizedMessage() != null) { final FileText fileText = getFileText(event.getFileName()); if (fileText != null) { final List<Suppression> suppressions = getSuppressions(fileText); accepted = getNearestSuppression(suppressions, event) == null; } } return accepted; }
SeverityLevel level = event.getSeverityLevel(); sink.text( event.getMessage() ); sink.tableCell_(); int line = event.getLine(); if ( getXrefLocation() != null && line != 0 )
@Override public void addError(AuditEvent event) { final int line = event.getLine(); final String message = event.getMessage(); if (position >= comments.length) { fail("found a warning when none was expected for #" + position + " at line " + line + " with message " + message); } final IndentComment comment = comments[position]; position++; final String possibleExceptedMessages = Arrays.stream(comment.getExpectedMessages()) .reduce("", (cur, next) -> cur + "\"" + next + "\", "); final String assertMessage = String.format( Locale.ROOT, "input expected warning #%d at line %d to report one of the following: %s" + "but got instead: %d: %s", position, comment.getLineNumber(), possibleExceptedMessages, line, message); assertTrue(assertMessage, line == comment.getLineNumber() && Arrays.stream(comment.getExpectedMessages()).anyMatch(message::endsWith)); }
@Override public void addError(AuditEvent event) { if (event.getSeverityLevel() != SeverityLevel.IGNORE) { final String fileName = event.getFileName(); if (fileName == null || !fileMessages.containsKey(fileName)) { synchronized (writerLock) { writeFileError(event); } } else { final FileMessages messages = fileMessages.get(fileName); messages.addError(event); } } }
@VisibleForTesting static String getRuleKey(AuditEvent event) { String key = null; try { key = event.getModuleId(); } catch (Exception e) { // checkstyle throws a NullPointerException if the message is not set } if (StringUtils.isBlank(key)) { try { key = event.getSourceName(); } catch (Exception e) { // checkstyle can throw a NullPointerException if the message is not set } } return key; }
@Override public boolean accept(AuditEvent evt) { String filename = evt.getFileName().replace('\\', '/'); if (JAVA5PATTERN.matcher(filename).find()) { if (evt.getSourceName().endsWith("MissingOverrideCheck")) { return false; } } if (pattern.matcher(filename).find()) { return false; } if (examplePattern.matcher(filename).find()) { if (evt.getSourceName().endsWith(".JavadocPackageCheck")) { return false; } if (evt.getSourceName().endsWith(".HideUtilityClassConstructorCheck")) { return false; } } return true; } }