diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/api/AbstractFileSetCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/api/AbstractFileSetCheck.java index 54541f0505dc..5888a7312226 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/api/AbstractFileSetCheck.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/api/AbstractFileSetCheck.java @@ -37,8 +37,12 @@ public abstract class AbstractFileSetCheck extends AbstractViolationReporter implements FileSetCheck { - /** Collects the error messages. */ - private final SortedSet messageCollector = new TreeSet<>(); + /** + * Collects the error messages. + * @noinspection ThreadLocalNotStaticFinal + */ + private final ThreadLocal> messageCollector = + ThreadLocal.withInitial(TreeSet::new); /** The dispatcher errors are fired to. */ private MessageDispatcher messageDispatcher; @@ -73,12 +77,12 @@ public void beginProcessing(String charset) { @Override public final SortedSet process(File file, FileText fileText) throws CheckstyleException { - messageCollector.clear(); + messageCollector.get().clear(); // Process only what interested in if (CommonUtils.matchesFileExtension(file, fileExtensions)) { processFiltered(file, fileText); } - return new TreeSet<>(messageCollector); + return new TreeSet<>(messageCollector.get()); } @Override @@ -139,7 +143,7 @@ public final void setFileExtensions(String... extensions) { * @param messages the sorted set of {@link LocalizedMessage}. */ protected final void addMessages(SortedSet messages) { - messageCollector.addAll(messages); + messageCollector.get().addAll(messages); } @Override @@ -150,7 +154,7 @@ public final void log(int line, String key, Object... args) { @Override public final void log(int lineNo, int colNo, String key, Object... args) { - messageCollector.add( + messageCollector.get().add( new LocalizedMessage(lineNo, colNo, getMessageBundle(), @@ -169,8 +173,8 @@ public final void log(int lineNo, int colNo, String key, * @param fileName the audited file */ protected final void fireErrors(String fileName) { - final SortedSet errors = new TreeSet<>(messageCollector); - messageCollector.clear(); + final SortedSet errors = new TreeSet<>(messageCollector.get()); + messageCollector.get().clear(); messageDispatcher.fireErrors(fileName, errors); } }