public static void main(String[] args) throws Exception { // findbugs // mvn clean compile findbugs:findbugs -Dbuildtime.output.csv=true // -Dbuildtime.output.csv.file=classes\out.csv // pmd // mvn pmd:pmd -Dbuildtime.output.csv=true // -Dbuildtime.output.csv.file=classes\out.csv // findbugs // mvn clean compile -Pfindsecbugs -Dbuildtime.output.csv=true // -Dbuildtime.output.csv.file=classes\out.csv // sonar // mvn sonar:sonar -Dbuildtime.output.csv=true // -Dbuildtime.output.csv.file=classes\out.csv // rewrite results file name with times and version // String toolName = "sonar"; String toolName = ""; String csvToolName = ""; if (args.length < 1) { System.out.println( "Please provide the name of the tool.\n" + "Currently supported: PMD (pmd), FindBugs (findbugs), FindSecBugs (findbugs) and SonarQube (sonar)."); } else { toolName = args[0]; } // System.out.println("Tool: " + toolName); PropertiesManager propM = new PropertiesManager(); WriteFiles wf = new WriteFiles(); if (toolName.contains("sonar")) { // We need to generate the results // file from the webService wf.writeSonarResults(); } if (toolName.equals("findsecbugs")) { csvToolName = "findbugs"; } else if (toolName.equals("crawler")) { csvToolName = "exec-maven-plugin:java"; } else { csvToolName = toolName; } propM.saveProperty(toolName, wf.getToolTime(csvToolName)); propM.saveProperty("benchmark-version", wf.getbenchmarkVersion()); // // propM.displayProperties(); wf.deletePreviousResults( toolName, wf.getVersionNumber(toolName), propM.getProperty("benchmark-version", "")); wf.resultsFileName( toolName, propM.getProperty("benchmark-version", ""), propM.getProperty(toolName, ""), wf.getVersionNumber(toolName)); }
public String getVersionNumber(String toolName) { try { File findbugsFile = new File(FINDBUGS_FILE); DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance(); // Prevent XXE docBuilderFactory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder(); InputSource is = null; Document doc = null; Node root = null; Reader reader = new Reader(); switch (toolName) { case "findbugs": is = new InputSource(new FileInputStream(findbugsFile)); doc = docBuilder.parse(is); root = doc.getDocumentElement(); return reader.getAttributeValue("version", root); case "findsecbugs": return WriteFiles.getLine(new File("pom.xml"), "findsecbugs-plugin", true) .trim() .replace("<version>", "") .replace("</version>", ""); case "pmd": is = new InputSource(new FileInputStream(new File(PMD_FILE))); doc = docBuilder.parse(is); root = doc.getDocumentElement(); return reader.getAttributeValue("version", root); case "sonar": return "TBD"; } } catch (Exception e) { System.out.println("An error ocurred during results file parsing."); } return ""; }