Index: src/main/java/hudson/plugins/warnings/parser/MsBuildParser.java
===================================================================
--- src/main/java/hudson/plugins/warnings/parser/MsBuildParser.java (revision 12233)
+++ src/main/java/hudson/plugins/warnings/parser/MsBuildParser.java (working copy)
@@ -13,7 +13,7 @@
/** Warning type of this parser. */
static final String WARNING_TYPE = "MSBuild";
/** Pattern of MSBuild compiler warnings. */
- private static final String MS_BUILD_WARNING_PATTERN = "(.*)\\((\\d*).*\\)\\s*:\\s*(warning|error)\\s*([^:]*):\\s*(.*)";
+ private static final String MS_BUILD_WARNING_PATTERN = "(.*)\\((\\d*).*\\)\\s*:\\s*(warning|error|Warning|Error)\\s*([^:]*):\\s*(.*)";
/**
* Creates a new instance of MsBuildParser
.
Index: src/test/java/hudson/plugins/warnings/parser/MsBuildParserTest.java
===================================================================
--- src/test/java/hudson/plugins/warnings/parser/MsBuildParserTest.java (revision 12233)
+++ src/test/java/hudson/plugins/warnings/parser/MsBuildParserTest.java (working copy)
@@ -5,6 +5,7 @@
import hudson.plugins.warnings.util.model.Priority;
import java.io.IOException;
+import java.io.StringBufferInputStream;
import java.util.Collection;
import java.util.Iterator;
@@ -52,5 +53,40 @@
"MediaPortal.cs",
MsBuildParser.WARNING_TYPE, "CS0162", Priority.NORMAL);
}
+
+ /**
+ * MSBuildParser should also detect keywords 'Warning' and 'Error', as they are
+ * produced by the .NET-2.0 compiler of VS2005
+ *
+ * @throws IOException
+ *
+ * @see Issue 2383
+ */
+ @Test
+ public void shouldDetectKeywordsInRegexCaseInsensitive() throws IOException {
+ StringBuilder testData = new StringBuilder();
+ testData.append("Src\\Parser\\CSharp\\cs.ATG (2242,17): Warning CS0168: The variable 'type' is declared but never used");
+ testData.append("\r\n");
+ testData.append("C:\\Src\\Parser\\CSharp\\file.cs (10): Error XXX: An error occurred");
+
+ Collection warnings = new MsBuildParser().parse(new StringBufferInputStream(testData.toString()));
+
+ assertEquals("Wrong number of warnings detected.", 2, warnings.size());
+
+ Iterator iterator = warnings.iterator();
+ FileAnnotation annotation = iterator.next();
+ checkWarning(annotation,
+ 2242,
+ "The variable 'type' is declared but never used",
+ "Src/Parser/CSharp/cs.ATG",
+ MsBuildParser.WARNING_TYPE, "CS0168", Priority.NORMAL);
+ annotation = iterator.next();
+ checkWarning(annotation,
+ 10,
+ "An error occurred",
+ "C:/Src/Parser/CSharp/file.cs",
+ MsBuildParser.WARNING_TYPE, "XXX", Priority.HIGH);
+
+ }
}