package hudson.plugins.rubymetricfu; import hudson.plugins.rubymetricfu.model.MetricFuResults; import org.yaml.snakeyaml.*; import java.io.InputStream; import java.io.FileInputStream; import java.io.File; import java.util.Map; public class MetricFuParser { private File yamlReport; public MetricFuParser(File yamlReport) { this.yamlReport = yamlReport; } public MetricFuResults parse() { MetricFuResults result = new MetricFuResults(); try { InputStream input = new FileInputStream(yamlReport); Yaml yaml = new Yaml(); Map data = (Map) yaml.load(input); Map flogData = (Map) data.get(":flog"); Map flayData = (Map) data.get(":flay"); Map rcovData = (Map) data.get(":rcov"); result.setFlogMethodAverage((String) (flogData.get(":average").toString())); result.setFlogTotal((String) (flogData.get(":total").toString())); result.setFlayTotal((String) flayData.get(":total_score").toString()); result.setRcovCoverage((String) rcovData.get(":global_percent_run").toString()); } catch (Exception e) { System.out.println(e); } return result; } }