### Eclipse Workspace Patch 1.0 #P sonar-cxx-plugin Index: src/main/java/org/sonar/plugins/cxx/CxxLineCounter.java =================================================================== --- src/main/java/org/sonar/plugins/cxx/CxxLineCounter.java (revision 5264) +++ src/main/java/org/sonar/plugins/cxx/CxxLineCounter.java (working copy) @@ -20,10 +20,16 @@ package org.sonar.plugins.cxx; import java.io.File; -import java.io.FileNotFoundException; import java.io.FileReader; +import java.io.IOException; +import java.io.Reader; +import java.io.StringReader; import java.util.List; +import org.apache.commons.io.FileUtils; +import org.apache.commons.io.IOUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.sonar.api.batch.SensorContext; import org.sonar.api.measures.CoreMetrics; import org.sonar.api.resources.Project; @@ -31,8 +37,8 @@ import org.sonar.squid.recognizer.CodeRecognizer; import org.sonar.squid.text.Source; - public final class CxxLineCounter extends CxxSensor { + private static final Logger LOG = LoggerFactory.getLogger(CxxLineCounter.class); private CxxLanguage lang; public CxxLineCounter(CxxLanguage lang) { this.lang = lang; @@ -45,16 +51,22 @@ for (File file : sources) { org.sonar.api.resources.File cxxFile = org.sonar.api.resources.File.fromIOFile(file, project); + Reader reader = null; try { - Source result = new Source(new FileReader(file), codeRecognizer, "//"); - + reader = new FileReader(file); + Source result = new Source(reader, codeRecognizer, "//"); + context.saveMeasure(cxxFile, CoreMetrics.LINES, (double) result.getMeasure(Metric.LINES)); context.saveMeasure(cxxFile, CoreMetrics.COMMENT_LINES, (double) result.getMeasure(Metric.COMMENT_LINES)); context.saveMeasure(cxxFile, CoreMetrics.COMMENT_BLANK_LINES, (double) result.getMeasure(Metric.COMMENT_BLANK_LINES)); context.saveMeasure(cxxFile, CoreMetrics.COMMENTED_OUT_CODE_LINES, (double) result.getMeasure(Metric.COMMENTED_OUT_CODE_LINES)); context.saveMeasure(cxxFile, CoreMetrics.NCLOC, (double) result.getMeasure(Metric.LINES_OF_CODE)); - } catch (FileNotFoundException ex) { - + LOG.debug("Analyzed file " + file.getAbsolutePath()); + } catch (IOException ex) { + LOG.error("Can not analyze file " + file.getAbsolutePath() + " : " + + ex.getMessage(), ex); + } finally { + IOUtils.closeQuietly(reader); } } }