From ca3ffb73abc810385a4ce8fe685ad31c9d172bff Mon Sep 17 00:00:00 2001 From: alexkravin Date: Fri, 13 Mar 2015 17:18:46 +0400 Subject: [PATCH] Added support of logging severity for all audit events, issue #67 --- .../tools/checkstyle/CheckStyleTask.java | 6 ++--- .../tools/checkstyle/DefaultLogger.java | 17 ++++++++---- .../com/puppycrawl/tools/checkstyle/Main.java | 2 +- .../checkstyle/BaseCheckTestSupport.java | 26 ++++++++++++++++++- .../checks/javadoc/WriteTagCheckTest.java | 3 ++- 5 files changed, 43 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/CheckStyleTask.java b/src/main/java/com/puppycrawl/tools/checkstyle/CheckStyleTask.java index ee7489bc7..fb44c2586 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/CheckStyleTask.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/CheckStyleTask.java @@ -453,7 +453,7 @@ public class CheckStyleTask extends Task final OutputStream debug = new LogOutputStream(this, Project.MSG_DEBUG); final OutputStream err = new LogOutputStream(this, Project.MSG_ERR); - listeners[0] = new DefaultLogger(debug, true, err, true); + listeners[0] = new DefaultLogger(debug, true, err, true, true); } else { for (int i = 0; i < formatterCount; i++) { @@ -584,9 +584,9 @@ public class CheckStyleTask extends Task if (toFile == null || !useFile) { return new DefaultLogger( new LogOutputStream(task, Project.MSG_DEBUG), - true, new LogOutputStream(task, Project.MSG_ERR), true); + true, new LogOutputStream(task, Project.MSG_ERR), true, true); } - return new DefaultLogger(new FileOutputStream(toFile), true); + return new DefaultLogger(new FileOutputStream(toFile), true, true); } /** diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/DefaultLogger.java b/src/main/java/com/puppycrawl/tools/checkstyle/DefaultLogger.java index 26d32724a..300b959fb 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/DefaultLogger.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/DefaultLogger.java @@ -53,15 +53,19 @@ public class DefaultLogger /** close error stream after use */ private final boolean closeError; + /** print severity level. */ + private boolean printSeverity = true; + /** * Creates a new DefaultLogger instance. * @param os where to log infos and errors * @param closeStreamsAfterUse if oS should be closed in auditFinished() + * @param printSeverity if severity level should be printed */ - public DefaultLogger(OutputStream os, boolean closeStreamsAfterUse) + public DefaultLogger(OutputStream os, boolean closeStreamsAfterUse, boolean printSeverity) { // no need to close oS twice - this(os, closeStreamsAfterUse, os, false); + this(os, closeStreamsAfterUse, os, false, printSeverity); } /** @@ -71,11 +75,13 @@ public class DefaultLogger * @param closeInfoAfterUse auditFinished should close infoStream * @param errorStream the OutputStream for error messages * @param closeErrorAfterUse auditFinished should close errorStream + * @param printSeverity if severity level should be printed */ public DefaultLogger(OutputStream infoStream, boolean closeInfoAfterUse, OutputStream errorStream, - boolean closeErrorAfterUse) + boolean closeErrorAfterUse, + boolean printSeverity) { closeInfo = closeInfoAfterUse; closeError = closeErrorAfterUse; @@ -83,6 +89,7 @@ public class DefaultLogger errorWriter = infoStream == errorStream ? infoWriter : new PrintWriter(errorStream); + this.printSeverity = printSeverity; } /** @@ -110,8 +117,8 @@ public class DefaultLogger if (evt.getColumn() > 0) { sb.append(':').append(evt.getColumn()); } - if (SeverityLevel.WARNING == severityLevel) { - sb.append(": warning"); + if (printSeverity) { + sb.append(": ").append(severityLevel.getName()); } sb.append(": ").append(message); errorWriter.println(sb.toString()); diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/Main.java b/src/main/java/com/puppycrawl/tools/checkstyle/Main.java index d34f8a045..554e23ba0 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/Main.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/Main.java @@ -200,7 +200,7 @@ public final class Main listener = new XMLLogger(out, closeOut); } else if ("plain".equals(format)) { - listener = new DefaultLogger(out, closeOut); + listener = new DefaultLogger(out, closeOut, true); } else { System.out.println("Invalid format: (" + format diff --git a/src/test/java/com/puppycrawl/tools/checkstyle/BaseCheckTestSupport.java b/src/test/java/com/puppycrawl/tools/checkstyle/BaseCheckTestSupport.java index 1a45601b2..1d98f9845 100644 --- a/src/test/java/com/puppycrawl/tools/checkstyle/BaseCheckTestSupport.java +++ b/src/test/java/com/puppycrawl/tools/checkstyle/BaseCheckTestSupport.java @@ -26,7 +26,11 @@ public abstract class BaseCheckTestSupport { protected static class BriefLogger extends DefaultLogger { public BriefLogger(OutputStream out) { - super(out, true); + super(out, true, false); + } + + public BriefLogger(OutputStream out, boolean printSeverity) { + super(out, true, printSeverity); } @Override @@ -67,6 +71,21 @@ public abstract class BaseCheckTestSupport { return c; } + protected Checker createChecker(Configuration checkConfig, boolean printSeverity) + throws Exception { + final DefaultConfiguration dc = createCheckerConfig(checkConfig); + final Checker c = new Checker(); + // make sure the tests always run with english error messages + // so the tests don't fail in supported locales like german + final Locale locale = Locale.ENGLISH; + c.setLocaleCountry(locale.getCountry()); + c.setLocaleLanguage(locale.getLanguage()); + c.setModuleClassLoader(Thread.currentThread().getContextClassLoader()); + c.configure(dc); + c.addListener(new BriefLogger(stream, printSeverity)); + return c; + } + protected DefaultConfiguration createCheckerConfig(Configuration config) { final DefaultConfiguration dc = new DefaultConfiguration("configuration"); @@ -88,6 +107,11 @@ public abstract class BaseCheckTestSupport { return new File("src/test/java/com/puppycrawl/tools/checkstyle/" + filename).getCanonicalPath(); } + protected void verify(Configuration aConfig, boolean printSeverity, String fileName, + String[] expected) throws Exception { + verify(createChecker(aConfig, printSeverity), fileName, fileName, expected); + } + protected void verify(Configuration aConfig, String fileName, String[] expected) throws Exception { verify(createChecker(aConfig), fileName, fileName, expected); diff --git a/src/test/java/com/puppycrawl/tools/checkstyle/checks/javadoc/WriteTagCheckTest.java b/src/test/java/com/puppycrawl/tools/checkstyle/checks/javadoc/WriteTagCheckTest.java index 9bed0748b..0a6fbab4e 100644 --- a/src/test/java/com/puppycrawl/tools/checkstyle/checks/javadoc/WriteTagCheckTest.java +++ b/src/test/java/com/puppycrawl/tools/checkstyle/checks/javadoc/WriteTagCheckTest.java @@ -85,6 +85,7 @@ public class WriteTagCheckTest extends BaseCheckTestSupport @Test public void testTagSeverity() throws Exception { + final boolean printSeverity = true; checkConfig.addAttribute("tag", "@incomplete"); checkConfig.addAttribute("tagFormat", "\\S"); checkConfig.addAttribute("tagSeverity", "warning"); @@ -92,7 +93,7 @@ public class WriteTagCheckTest extends BaseCheckTestSupport { "11: " + getCheckMessage(WRITE_TAG, "warning: @incomplete", "This class needs more code..."), }; - verify(checkConfig, getPath("InputWriteTag.java"), expected); + verify(checkConfig, printSeverity, getPath("InputWriteTag.java"), expected); } @Test