All Downloads are FREE. Search and download functionalities are using the official Maven repository.

edu.hm.hafner.analysis.parser.pvsstudio.PVSStudioParser Maven / Gradle / Ivy

package edu.hm.hafner.analysis.parser.pvsstudio;

import java.util.List;

import edu.hm.hafner.analysis.IssueBuilder;
import edu.hm.hafner.analysis.IssueParser;
import edu.hm.hafner.analysis.ParsingCanceledException;
import edu.hm.hafner.analysis.ParsingException;
import edu.hm.hafner.analysis.ReaderFactory;
import edu.hm.hafner.analysis.Report;
import edu.hm.hafner.analysis.Severity;

/**
 * A parser for the PVS-Studio static analyzer.
 *
 * @author PVS-Studio Team
 */
public class PVSStudioParser extends IssueParser {
    private static final long serialVersionUID = -7777775729854832128L;

    private static Severity getSeverity(final String level) {
        if ("1".equals(level)) {
            return Severity.WARNING_HIGH;
        }
        else if ("2".equals(level)) {
            return Severity.WARNING_NORMAL;
        }
        else if ("3".equals(level)) {
            return Severity.WARNING_LOW;
        }
        else {
            return Severity.ERROR;
        }
    }

    @Override
    public Report parse(final ReaderFactory readerFactory) throws ParsingException, ParsingCanceledException {
        try (IssueBuilder issueBuilder = new IssueBuilder()) {
            List plogMessages = PlogMessage.getMessagesFromReport(readerFactory);

            Report report = new Report();

            for (PlogMessage plogMessage : plogMessages) {
                issueBuilder.setFileName(plogMessage.getFilePath());

                issueBuilder.setSeverity(getSeverity(plogMessage.getLevel()));
                issueBuilder.setMessage(plogMessage.toString());
                issueBuilder.setCategory(plogMessage.getType());

                issueBuilder.setType(AnalyzerType.fromErrorCode(plogMessage.getType()).getMessage());

                issueBuilder.setLineStart(plogMessage.getLine());

                report.add(issueBuilder.buildAndClean());
            }

            return report;
        }
    }
}





© 2015 - 2025 Weber Informatics LLC | Privacy Policy