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

se.bjurr.violations.lib.parsers.CSSLintParser Maven / Gradle / Ivy

There is a newer version: 1.157.3
Show newest version
package se.bjurr.violations.lib.parsers;

import static com.google.common.collect.Lists.newArrayList;
import static se.bjurr.violations.lib.model.SEVERITY.ERROR;
import static se.bjurr.violations.lib.model.SEVERITY.INFO;
import static se.bjurr.violations.lib.model.SEVERITY.WARN;
import static se.bjurr.violations.lib.model.Violation.violationBuilder;

import java.io.File;
import java.util.List;

import se.bjurr.violations.lib.model.SEVERITY;
import se.bjurr.violations.lib.model.Violation;

import com.google.common.base.Charsets;
import com.google.common.base.Optional;
import com.google.common.io.Files;

public class CSSLintParser extends ViolationsParser {

 @Override
 public List parseFile(File file) throws Exception {
  String string = Files.toString(file, Charsets.UTF_8);
  List violations = newArrayList();
  List files = getChunks(string, "");
  for (String fileChunk : files) {
   String filename = getAttribute(fileChunk, "name");
   List issues = getChunks(fileChunk, "");
   for (String issueChunk : issues) {
    Integer line = getIntegerAttribute(issueChunk, "line");
    Optional charAttrib = findIntegerAttribute(issueChunk, "char");
    String severity = getAttribute(issueChunk, "severity");

    String message = getAttribute(issueChunk, "reason");
    String evidence = getAttribute(issueChunk, "evidence").trim();
    violations.add(//
      violationBuilder()//
        .setStartLine(line)//
        .setColumn(charAttrib.orNull())//
        .setFile(filename)//
        .setSeverity(toSeverity(severity))//
        .setMessage(message + ": " + evidence)//
        .build()//
      );
   }
  }
  return violations;
 }

 public SEVERITY toSeverity(String severity) {
  if (severity.equalsIgnoreCase("ERROR")) {
   return ERROR;
  }
  if (severity.equalsIgnoreCase("WARNING")) {
   return WARN;
  }
  return INFO;
 }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy