This repository has been archived by the owner on Apr 6, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 148
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #76 from SvenLuebke/master
Added 4 new parsers: QAC, Metrowerks CodeWarrior (linker and compiler) and EB tresos Studio
- Loading branch information
Showing
13 changed files
with
559 additions
and
1 deletion.
There are no files selected for viewing
81 changes: 81 additions & 0 deletions
81
src/main/java/hudson/plugins/warnings/parser/EBtresosStudioParser.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,81 @@ | ||
package hudson.plugins.warnings.parser; | ||
|
||
import java.util.regex.Matcher; | ||
import java.util.regex.Pattern; | ||
|
||
import hudson.Extension; | ||
|
||
import hudson.plugins.analysis.util.model.Priority; | ||
|
||
/** | ||
* A parser for EB tresos Studio warnings. | ||
* | ||
* @author Sven Lübke | ||
*/ | ||
@Extension | ||
public class EBtresosStudioParser extends RegexpLineParser { | ||
/** Pattern of EB tresos warnings. */ | ||
private static final String TRESOS_WARNING_PATTERN = "^(INFO|WARNING|ERROR)\\s\\d*-\\d*-\\d*,\\d*:\\d*:\\d*\\s\\(((\\p{Alnum}|_)*)\\)\\s(.*)$"; | ||
private static final String[] TRESOS_INFO_MSGS_IGNORE = { | ||
"13014", //Generated "B:\Camera_comp\src\workspace\ECU_Camera\output\generated\include\FiM_Trace.h" | ||
"13030", //Running generator "CanTp_TS_TxDxM6I5R0_GeneratorId" in mode "generate" for module "CanTp_TS_TxDxM6I5R0" | ||
"13015", //Generated "B:\Camera_comp\src\workspace\ECU_Camera\output\generated\make\Make_cfg.mak" | ||
"160001", //Generated file Com_SymbolicNames_PBcfg.h | ||
"170001", //Generated file src/PduR_Lcfg.c | ||
"20053", //Generating file B:\Camera_comp\src\workspace\ECU_Camera\output\generated\output\Dio.epc | ||
"2113", //Creating directory "B:\Camera_comp\src\workspace\ECU_Camera\output\generated\output" | ||
"2501", //Generated "B:\Camera_comp\src\workspace\ECU_Camera\output\generated\include\Common_MemMap.h" | ||
"2506", //Creating directory "B:\Camera_comp\src\workspace\ECU_Camera\output\generated\orti" | ||
"OS_1", //*** AutosarOS 4.5.38 Build 20130705 (PA/XPC56XXL) *** | ||
"OS_3", //OS-Generation succeeded for project Os_TS_T2D17M4I5R0_AS403 | ||
"SWDUPDATER_10", //Successfully completed the update of the Basic Software Module Descriptions and Service Component Descriptions. | ||
"SWDUPDATER_14", //Imported BSW module description CanIf. | ||
"SWDUPDATER_24", //Imported service component type Dem. | ||
"SWDUPDATER_7", //Generated description file PduR_Bswmd.arxml. | ||
"SWDUPDATER_8" //Imported all description files successfully. | ||
}; | ||
|
||
/** | ||
* Creates a new instance of <code>EBtresosStudioParser</code>. | ||
*/ | ||
public EBtresosStudioParser() { | ||
super(Messages._Warnings_EBtresosStudio_ParserName(), | ||
Messages._Warnings_EBtresosStudio_LinkName(), | ||
Messages._Warnings_EBtresosStudio_TrendName(), | ||
TRESOS_WARNING_PATTERN); | ||
} | ||
|
||
@Override | ||
protected Warning createWarning(final Matcher matcher) { | ||
String fileName = "*.xdm"; | ||
int lineNumber = 0; | ||
String type = matcher.group(1); | ||
String category = matcher.group(2); | ||
String message = matcher.group(4); | ||
Priority priority; | ||
|
||
|
||
if (type.equals("ERROR")) { | ||
priority = Priority.HIGH; | ||
} | ||
if (type.equals("INFO")) { | ||
priority = Priority.NORMAL; | ||
|
||
for (String tresosMsgCategory : TRESOS_INFO_MSGS_IGNORE) { | ||
if (tresosMsgCategory.equals(category)) { | ||
//type = ""; | ||
priority = Priority.LOW; | ||
message = "really unimportant tresos message"; | ||
fileName = "unimportant.file"; | ||
lineNumber = 1; | ||
break; | ||
} | ||
} | ||
} | ||
else { | ||
priority = Priority.HIGH; | ||
} | ||
return createWarning(fileName, lineNumber, category, message, priority); | ||
} | ||
} | ||
|
53 changes: 53 additions & 0 deletions
53
src/main/java/hudson/plugins/warnings/parser/MetrowerksCWCompilerParser.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
package hudson.plugins.warnings.parser; | ||
|
||
import java.util.regex.Matcher; | ||
import java.util.regex.Pattern; | ||
|
||
import hudson.Extension; | ||
|
||
import hudson.plugins.analysis.util.model.Priority; | ||
|
||
/** | ||
* A parser for Metrowerks Codewarrior 4.x compiler warnings. | ||
* | ||
* @author Sven Lübke | ||
*/ | ||
@Extension | ||
public class MetrowerksCWCompilerParser extends RegexpLineParser { | ||
/** Pattern of MW CodeWarrior compiler warnings. */ | ||
private static final String CW_COMPILER_WARNING_PATTERN = "^(.+?)\\((\\d+)\\): (INFORMATION|WARNING|ERROR) (.+?): (.*)$"; | ||
|
||
/** | ||
* Creates a new instance of <code>MetrowerksCWCompilerParser</code>. | ||
*/ | ||
public MetrowerksCWCompilerParser() { | ||
super(Messages._Warnings_MetrowerksCWCompiler_ParserName(), | ||
Messages._Warnings_MetrowerksCWCompiler_LinkName(), | ||
Messages._Warnings_MetrowerksCWCompiler_TrendName(), | ||
CW_COMPILER_WARNING_PATTERN); | ||
} | ||
|
||
@Override | ||
protected Warning createWarning(final Matcher matcher) { | ||
String fileName = matcher.group(1); | ||
int lineNumber = getLineNumber(matcher.group(2)); | ||
String message = matcher.group(5); | ||
Priority priority; | ||
|
||
String category; | ||
if ("error".equalsIgnoreCase(matcher.group(3))) { | ||
priority = Priority.HIGH; | ||
category = "ERROR"; | ||
} | ||
else if ("information".equalsIgnoreCase(matcher.group(3))) { | ||
priority = Priority.LOW; | ||
category = "Info"; | ||
} | ||
else { | ||
priority = Priority.NORMAL; | ||
category = "Warning"; | ||
} | ||
return createWarning(fileName, lineNumber, category, message, priority); | ||
} | ||
} | ||
|
53 changes: 53 additions & 0 deletions
53
src/main/java/hudson/plugins/warnings/parser/MetrowerksCWLinkerParser.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
package hudson.plugins.warnings.parser; | ||
|
||
import java.util.regex.Matcher; | ||
import java.util.regex.Pattern; | ||
|
||
import hudson.Extension; | ||
|
||
import hudson.plugins.analysis.util.model.Priority; | ||
|
||
/** | ||
* A parser for Metrowerks Codewarrior 4.x linker warnings. | ||
* | ||
* @author Sven Lübke | ||
*/ | ||
@Extension | ||
public class MetrowerksCWLinkerParser extends RegexpLineParser { | ||
/** Pattern of MW CodeWarrior linker warnings. */ | ||
private static final String CW_LINKER_WARNING_PATTERN = "^(INFORMATION|WARNING|ERROR) (.+)$"; | ||
|
||
/** | ||
* Creates a new instance of <code>MetrowerksCWLinkerParser</code>. | ||
*/ | ||
public MetrowerksCWLinkerParser() { | ||
super(Messages._Warnings_MetrowerksCWLinker_ParserName(), | ||
Messages._Warnings_MetrowerksCWLinker_LinkName(), | ||
Messages._Warnings_MetrowerksCWLinker_TrendName(), | ||
CW_LINKER_WARNING_PATTERN); | ||
} | ||
|
||
@Override | ||
protected Warning createWarning(final Matcher matcher) { | ||
/* String fileName = matcher.group(3); */ | ||
String message = matcher.group(2); | ||
String message_category = matcher.group(1); | ||
Priority priority; | ||
|
||
String category; | ||
if ("error".equalsIgnoreCase(message_category)) { | ||
priority = Priority.HIGH; | ||
category = "ERROR"; | ||
} | ||
else if ("information".equalsIgnoreCase(message_category)) { | ||
priority = Priority.LOW; | ||
category = "Info"; | ||
} | ||
else { | ||
priority = Priority.NORMAL; | ||
category = "Warning"; | ||
} | ||
return createWarning("See Warning message", 0, category, message, priority); | ||
} | ||
} | ||
|
49 changes: 49 additions & 0 deletions
49
src/main/java/hudson/plugins/warnings/parser/QACSourceCodeAnalyserParser.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
package hudson.plugins.warnings.parser; | ||
|
||
import java.util.regex.Matcher; | ||
import java.util.regex.Pattern; | ||
|
||
import hudson.Extension; | ||
|
||
import hudson.plugins.analysis.util.model.Priority; | ||
|
||
/** | ||
* A parser for PRQA QA-C Sourcecode Analyser warnings. | ||
* | ||
* @author Sven Lübke | ||
*/ | ||
@Extension | ||
public class QACSourceCodeAnalyserParser extends RegexpLineParser { | ||
/** Pattern of QA-C Sourcecode Analyser warnings. */ | ||
private static final String QAC_WARNING_PATTERN = "^(.+?)\\((\\d+),(\\d+)\\): (Err|Msg)\\((\\d+):(\\d+)\\) (.+?)$"; | ||
|
||
/** | ||
* Creates a new instance of <code>QACSourceCodeAnalyserParser</code>. | ||
*/ | ||
public QACSourceCodeAnalyserParser() { | ||
super(Messages._Warnings_QAC_ParserName(), | ||
Messages._Warnings_QAC_LinkName(), | ||
Messages._Warnings_QAC_TrendName(), | ||
QAC_WARNING_PATTERN); | ||
} | ||
|
||
@Override | ||
protected Warning createWarning(final Matcher matcher) { | ||
String fileName = matcher.group(1); | ||
int lineNumber = getLineNumber(matcher.group(2)); | ||
String message = matcher.group(7); | ||
Priority priority; | ||
|
||
String category; | ||
if ("err".equalsIgnoreCase(matcher.group(4))) { | ||
priority = Priority.HIGH; | ||
category = "ERROR"; | ||
} | ||
else { | ||
priority = Priority.NORMAL; | ||
category = "Warning"; | ||
} | ||
return createWarning(fileName, lineNumber, category, message, priority); | ||
} | ||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
75 changes: 75 additions & 0 deletions
75
src/test/java/hudson/plugins/warnings/parser/MetrowerksCWCompilerParserTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,75 @@ | ||
package hudson.plugins.warnings.parser; | ||
|
||
import static org.junit.Assert.*; | ||
|
||
import java.io.IOException; | ||
import java.util.Collection; | ||
import java.util.Iterator; | ||
|
||
import org.junit.Test; | ||
|
||
import hudson.plugins.analysis.util.model.FileAnnotation; | ||
import hudson.plugins.analysis.util.model.Priority; | ||
|
||
/** | ||
* Tests the class {@link MetrowerksCWCompilerParser}. | ||
*/ | ||
public class MetrowerksCWCompilerParserTest extends ParserTester { | ||
|
||
private static final String INFO_CATEGORY = "Info"; | ||
private static final String WARNING_CATEGORY = "Warning"; | ||
private static final String ERROR_CATEGORY = "ERROR"; | ||
private static final String WARNING_TYPE = new MetrowerksCWCompilerParser().getGroup(); | ||
|
||
/** | ||
* Parses a file with CodeWarrior warnings. | ||
* | ||
* @throws IOException | ||
* if the file could not be read | ||
*/ | ||
@Test | ||
public void testWarningsParser() throws IOException { | ||
Collection<FileAnnotation> warnings = new MetrowerksCWCompilerParser().parse(openFile()); | ||
|
||
assertEquals(WRONG_NUMBER_OF_WARNINGS_DETECTED, 5, warnings.size()); | ||
|
||
Iterator<FileAnnotation> iterator = warnings.iterator(); | ||
FileAnnotation annotation = iterator.next(); | ||
checkWarning(annotation, | ||
570, | ||
"Warning-directive found: EEPROM_QUEUE_BUFFER_SIZE instead of MONITOR_ERROR_DATA_LENGTH is used here. This must be fixed sooner or later", | ||
"E:/work/PATH/PATH/PATH/PATH/Test1.c", | ||
WARNING_TYPE, WARNING_CATEGORY, Priority.NORMAL); | ||
annotation = iterator.next(); | ||
checkWarning(annotation, | ||
305, | ||
"Possible loss of data", | ||
"E:/work/PATH/PATH/PATH/Test2.c", | ||
WARNING_TYPE, WARNING_CATEGORY, Priority.NORMAL); | ||
annotation = iterator.next(); | ||
checkWarning(annotation, | ||
1501, | ||
"bla not declared (or typename)", | ||
"E:/work/PATH/PATH/Test3.c", | ||
WARNING_TYPE, ERROR_CATEGORY, Priority.HIGH); | ||
annotation = iterator.next(); | ||
checkWarning(annotation, | ||
1502, | ||
"';' missing", | ||
"E:/work/PATH/Test4.c", | ||
WARNING_TYPE, ERROR_CATEGORY, Priority.HIGH); | ||
annotation = iterator.next(); | ||
checkWarning(annotation, | ||
480, | ||
"Inline expansion done for function call", | ||
"E:/work/PATH/PATH/PATH/PATH/PATH/PATH/PATH/Test5.c", | ||
WARNING_TYPE, INFO_CATEGORY, Priority.LOW); | ||
} | ||
|
||
/** {@inheritDoc} */ | ||
@Override | ||
protected String getWarningsFile() { | ||
return "MetrowerksCWCompiler.txt"; | ||
} | ||
} | ||
|
Oops, something went wrong.