diff --git a/src/main/java/edu/hm/hafner/analysis/parser/pvsstudio/PlogMessage.java b/src/main/java/edu/hm/hafner/analysis/parser/pvsstudio/PlogMessagesReader.java similarity index 69% rename from src/main/java/edu/hm/hafner/analysis/parser/pvsstudio/PlogMessage.java rename to src/main/java/edu/hm/hafner/analysis/parser/pvsstudio/PlogMessagesReader.java index 361f7b6d8..1f2e6f748 100644 --- a/src/main/java/edu/hm/hafner/analysis/parser/pvsstudio/PlogMessage.java +++ b/src/main/java/edu/hm/hafner/analysis/parser/pvsstudio/PlogMessagesReader.java @@ -7,7 +7,6 @@ import java.util.logging.Logger; import org.apache.commons.lang3.StringUtils; -import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; @@ -22,52 +21,41 @@ * * @author PVS-Studio Team */ -class PlogMessage { - private String file = StringUtils.EMPTY; - private int lineNumber = 0; - private String errorCode = StringUtils.EMPTY; - private String message = StringUtils.EMPTY; - private String level = StringUtils.EMPTY; - - public String getHash() { - return errorCode + message + file + lineNumber; - } - - @Override - public String toString() { - return message; - } - - String getFilePath() { - return file; - } +class PlogMessagesReader { + private int failWarningsCount; + private int falseAlarmCount; - public int getLine() { - return lineNumber; - } + /** + * Getting list messages from the report. + * + * @param readerFactory + * factory containing report file reader + * + * @return list plog messages + */ + List getMessagesFromReport(final ReaderFactory readerFactory) { + var plogDoc = readerFactory.readDocument(); + plogDoc.getDocumentElement().normalize(); - public String getType() { - return errorCode; - } + NodeList nList = plogDoc.getElementsByTagName("PVS-Studio_Analysis_Log"); - public String getLevel() { - return level; - } + List plogMessages = new ArrayList<>(); + for (int nodeCount = 0; nodeCount < nList.getLength(); nodeCount++) { + Node nNode = nList.item(nodeCount); - private static boolean skipMessage(final NodeList elements) { - return elements != null && elements.item(0) != null - && equalsIgnoreCase(elements.item(0).getTextContent(), "true"); - } + if (nNode.getNodeType() == Node.ELEMENT_NODE) { + processNode(plogMessages, nNode); + } + } - private static boolean nodeNotNull(final NodeList elements) { - return elements != null && elements.item(0) != null && elements.item(0).getTextContent() != null; - } + if ((plogMessages.size() + falseAlarmCount) == 0 && failWarningsCount > 0) { + Logger.getLogger(PvsStudioParser.class.getName()).log(Level.SEVERE, "No messages were parsed!"); + } - private static boolean errorCodeIsValid(final String errorCode) { - return !(errorCode.isEmpty() || errorCode.charAt(0) != 'V'); + return plogMessages; } - private static void processNode(final List plogMessages, final Node node) { + private void processNode(final List plogMessages, final Node node) { var eElement = (Element) node; var nodeFalseAlarm = eElement.getElementsByTagName("FalseAlarm"); @@ -116,39 +104,50 @@ private static void processNode(final List plogMessages, final Node plogMessages.add(msg); } - private static int failWarningsCount = 0; - private static int falseAlarmCount = 0; + private boolean skipMessage(final NodeList elements) { + return elements != null && elements.item(0) != null + && equalsIgnoreCase(elements.item(0).getTextContent(), "true"); + } - /** - * Getting list messages from report. - * - * @param readerFactory - * factory containing report file reader - * - * @return list plog messages - */ - static List getMessagesFromReport(final ReaderFactory readerFactory) { - Document plogDoc = readerFactory.readDocument(); - plogDoc.getDocumentElement().normalize(); + private boolean nodeNotNull(final NodeList elements) { + return elements != null && elements.item(0) != null && elements.item(0).getTextContent() != null; + } - NodeList nList = plogDoc.getElementsByTagName("PVS-Studio_Analysis_Log"); + private boolean errorCodeIsValid(final String errorCode) { + return !(errorCode.isEmpty() || errorCode.charAt(0) != 'V'); + } - falseAlarmCount = 0; - failWarningsCount = 0; + static class PlogMessage { + private String file = StringUtils.EMPTY; + private int lineNumber = 0; + private String errorCode = StringUtils.EMPTY; + private String message = StringUtils.EMPTY; + private String level = StringUtils.EMPTY; - List plogMessages = new ArrayList<>(); - for (int nodeCount = 0; nodeCount < nList.getLength(); nodeCount++) { - Node nNode = nList.item(nodeCount); + public String getHash() { + return errorCode + message + file + lineNumber; + } - if (nNode.getNodeType() == Node.ELEMENT_NODE) { - processNode(plogMessages, nNode); - } + @Override + public String toString() { + return message; } - if ((plogMessages.size() + falseAlarmCount) == 0 && failWarningsCount > 0) { - Logger.getLogger(PVSStudioParser.class.getName()).log(Level.SEVERE, "No messages were parsed!"); + String getFilePath() { + return file; } - return plogMessages; + public int getLine() { + return lineNumber; + } + + public String getType() { + return errorCode; + } + + public String getLevel() { + return level; + } } } + diff --git a/src/main/java/edu/hm/hafner/analysis/parser/pvsstudio/PVSStudioParser.java b/src/main/java/edu/hm/hafner/analysis/parser/pvsstudio/PvsStudioParser.java similarity index 87% rename from src/main/java/edu/hm/hafner/analysis/parser/pvsstudio/PVSStudioParser.java rename to src/main/java/edu/hm/hafner/analysis/parser/pvsstudio/PvsStudioParser.java index 55ad6f125..2175bde15 100644 --- a/src/main/java/edu/hm/hafner/analysis/parser/pvsstudio/PVSStudioParser.java +++ b/src/main/java/edu/hm/hafner/analysis/parser/pvsstudio/PvsStudioParser.java @@ -7,13 +7,14 @@ import edu.hm.hafner.analysis.ReaderFactory; import edu.hm.hafner.analysis.Report; import edu.hm.hafner.analysis.Severity; +import edu.hm.hafner.analysis.parser.pvsstudio.PlogMessagesReader.PlogMessage; /** * A parser for the PVS-Studio static analyzer. * * @author PVS-Studio Team */ -public class PVSStudioParser extends IssueParser { +public class PvsStudioParser extends IssueParser { private static final long serialVersionUID = -7777775729854832128L; private static final String SEVERITY_HIGH = "1"; private static final String SEVERITY_NORMAL = "2"; @@ -38,8 +39,9 @@ else if (SEVERITY_LOW.equals(level)) { public Report parse(final ReaderFactory readerFactory) throws ParsingException, ParsingCanceledException { try (IssueBuilder issueBuilder = new IssueBuilder()) { var report = new Report(); + var parser = new PlogMessagesReader(); - for (PlogMessage plogMessage : PlogMessage.getMessagesFromReport(readerFactory)) { + for (PlogMessage plogMessage : parser.getMessagesFromReport(readerFactory)) { issueBuilder.setFileName(plogMessage.getFilePath()); issueBuilder.setSeverity(getSeverity(plogMessage.getLevel())); diff --git a/src/main/java/edu/hm/hafner/analysis/registry/PvsStudioDescriptor.java b/src/main/java/edu/hm/hafner/analysis/registry/PvsStudioDescriptor.java index 703481308..8c18d7d57 100644 --- a/src/main/java/edu/hm/hafner/analysis/registry/PvsStudioDescriptor.java +++ b/src/main/java/edu/hm/hafner/analysis/registry/PvsStudioDescriptor.java @@ -1,7 +1,7 @@ package edu.hm.hafner.analysis.registry; import edu.hm.hafner.analysis.IssueParser; -import edu.hm.hafner.analysis.parser.pvsstudio.PVSStudioParser; +import edu.hm.hafner.analysis.parser.pvsstudio.PvsStudioParser; /** * A descriptor for the PVS-Studio static analyzer. @@ -18,7 +18,7 @@ class PvsStudioDescriptor extends ParserDescriptor { @Override public IssueParser createParser(final Option... options) { - return new PVSStudioParser(); + return new PvsStudioParser(); } @Override diff --git a/src/test/java/edu/hm/hafner/analysis/parser/pvsstudio/PVSStudioParserTest.java b/src/test/java/edu/hm/hafner/analysis/parser/pvsstudio/PvsStudioParserTest.java similarity index 93% rename from src/test/java/edu/hm/hafner/analysis/parser/pvsstudio/PVSStudioParserTest.java rename to src/test/java/edu/hm/hafner/analysis/parser/pvsstudio/PvsStudioParserTest.java index 7c6b02c96..21a0c47c1 100644 --- a/src/test/java/edu/hm/hafner/analysis/parser/pvsstudio/PVSStudioParserTest.java +++ b/src/test/java/edu/hm/hafner/analysis/parser/pvsstudio/PvsStudioParserTest.java @@ -10,12 +10,12 @@ import edu.hm.hafner.analysis.registry.AbstractParserTest; /** - * Tests the class {@link PVSStudioParser}. + * Tests the class {@link PvsStudioParser}. * * @author PVS-Studio Team */ -class PVSStudioParserTest extends AbstractParserTest { - PVSStudioParserTest() { +class PvsStudioParserTest extends AbstractParserTest { + PvsStudioParserTest() { super("TestReport.plog"); } @@ -55,6 +55,6 @@ private String getFormedMessage(final String type, final String messageFromFile) @Override protected IssueParser createParser() { - return new PVSStudioParser(); + return new PvsStudioParser(); } }