Skip to content

Commit ee1906b

Browse files
committed
Updated pom for latest ruby metrics parsers dependency.
Log/propagate exceptions.
1 parent db12b1f commit ee1906b

4 files changed

Lines changed: 78 additions & 54 deletions

File tree

pom.xml

Lines changed: 29 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,29 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
33
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
4+
45
<modelVersion>4.0.0</modelVersion>
56
<groupId>com.pica</groupId>
6-
<artifactId>SonarRubyPlugin</artifactId>
7+
<artifactId>sonar-ruby-plugin</artifactId>
78
<packaging>sonar-plugin</packaging>
8-
<version>1.0-SNAPSHOT</version>
9+
<version>1.0</version>
910
<name>Ruby Plugin</name>
1011
<description>Adds Sonar support for the Ruby language</description>
1112

12-
<!-- optional -->
13-
<organization>
14-
<name>PICA Group</name>
15-
<url>http://www.picagroup.com</url>
16-
</organization>
13+
<distributionManagement>
14+
<repository>
15+
<uniqueVersion>false</uniqueVersion>
16+
<id>pica-releases</id>
17+
<name>Pica Release Repository</name>
18+
<url>http://mvnrepository.picagroup.net/nexus/content/repositories/releases/</url>
19+
</repository>
20+
<snapshotRepository>
21+
<uniqueVersion>true</uniqueVersion>
22+
<id>pica-snapshots</id>
23+
<name>Pica Snapshot Repository</name>
24+
<url>http://mvnrepository.picagroup.net/nexus/content/repositories/snapshots/</url>
25+
</snapshotRepository>
26+
</distributionManagement>
1727

1828
<dependencies>
1929
<dependency>
@@ -22,9 +32,9 @@
2232
<version>2.10</version>
2333
</dependency>
2434
<dependency>
25-
<groupId>org.jenkins-ci.plugins</groupId>
26-
<artifactId>rubyMetrics</artifactId>
27-
<version>1.5.1-SNAPSHOT</version>
35+
<groupId>com.pica</groupId>
36+
<artifactId>ruby-metrics-parsers</artifactId>
37+
<version>1.0</version>
2838
</dependency>
2939
<dependency>
3040
<groupId>org.codehaus.sonar</groupId>
@@ -52,13 +62,20 @@
5262
<pluginClass>com.pica.sonarplugins.ruby.RubyPlugin</pluginClass>
5363
</configuration>
5464
</plugin>
65+
<plugin>
66+
<groupId>org.apache.maven.plugins</groupId>
67+
<artifactId>maven-release-plugin</artifactId>
68+
<configuration>
69+
<goals>deploy</goals>
70+
</configuration>
71+
</plugin>
5572
<plugin>
5673
<groupId>org.apache.maven.plugins</groupId>
5774
<artifactId>maven-compiler-plugin</artifactId>
5875
<version>2.0.2</version>
5976
<configuration>
60-
<source>1.5</source>
61-
<target>1.5</target>
77+
<source>1.6</source>
78+
<target>1.6</target>
6279
<encoding>UTF-8</encoding>
6380
</configuration>
6481
</plugin>

src/main/java/com/pica/sonarplugins/ruby/RubySensor.java

Lines changed: 42 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,14 @@
77
import com.pica.sonarplugins.ruby.parsers.CommentCountParser;
88
import org.apache.commons.io.FileUtils;
99
import org.apache.commons.io.IOUtils;
10+
import org.slf4j.Logger;
11+
import org.slf4j.LoggerFactory;
1012
import org.sonar.api.batch.Sensor;
1113
import org.sonar.api.batch.SensorContext;
1214
import org.sonar.api.measures.CoreMetrics;
1315
import org.sonar.api.resources.Project;
1416
import org.sonar.api.resources.ProjectFileSystem;
17+
import org.sonar.api.utils.SonarException;
1518
import org.sonar.squid.measures.Metric;
1619
import org.sonar.squid.text.Source;
1720

@@ -23,51 +26,51 @@
2326

2427
public class RubySensor implements Sensor {
2528

26-
private Ruby ruby;
29+
private Ruby ruby;
2730

28-
public RubySensor(Ruby ruby) {
29-
this.ruby = ruby;
30-
}
31+
public RubySensor(Ruby ruby) {
32+
this.ruby = ruby;
33+
}
3134

32-
public boolean shouldExecuteOnProject(Project project) {
33-
return project.getLanguage().equals(Ruby.INSTANCE);
34-
}
35+
public boolean shouldExecuteOnProject(Project project) {
36+
return project.getLanguage().equals(Ruby.INSTANCE);
37+
}
3538

36-
public void analyse(Project project, SensorContext context) {
37-
computeBaseMetrics(context, project);
38-
}
39+
public void analyse(Project project, SensorContext context) {
40+
computeBaseMetrics(context, project);
41+
}
3942

40-
protected void computeBaseMetrics(SensorContext sensorContext, Project project) {
41-
Reader reader = null;
42-
ProjectFileSystem fileSystem = project.getFileSystem();
43+
protected void computeBaseMetrics(SensorContext sensorContext, Project project) {
44+
Reader reader = null;
45+
ProjectFileSystem fileSystem = project.getFileSystem();
4346

44-
Set<RubyPackage> packageList = new HashSet<RubyPackage>();
45-
for (File rubyFile : fileSystem.getSourceFiles(ruby)) {
46-
try {
47-
reader = new StringReader(FileUtils.readFileToString(rubyFile, fileSystem.getSourceCharset().name()));
48-
RubyFile resource = RubyFile.fromIOFile(rubyFile, fileSystem.getSourceDirs());
49-
Source source = new Source(reader, new RubyRecognizer());
50-
packageList.add(new RubyPackage(resource.getParent().getKey()));
47+
Set<RubyPackage> packageList = new HashSet<RubyPackage>();
48+
for (File rubyFile : fileSystem.getSourceFiles(ruby)) {
49+
try {
50+
reader = new StringReader(FileUtils.readFileToString(rubyFile, fileSystem.getSourceCharset().name()));
51+
RubyFile resource = RubyFile.fromIOFile(rubyFile, fileSystem.getSourceDirs());
52+
Source source = new Source(reader, new RubyRecognizer());
53+
packageList.add(new RubyPackage(resource.getParent().getKey()));
5154

52-
sensorContext.saveMeasure(resource, CoreMetrics.LINES, (double) source.getMeasure(Metric.LINES));
53-
sensorContext.saveMeasure(resource, CoreMetrics.NCLOC, (double) source.getMeasure(Metric.LINES_OF_CODE));
54-
int numCommentLines = CommentCountParser.countLinesOfComment(rubyFile);
55-
sensorContext.saveMeasure(resource, CoreMetrics.COMMENT_LINES, (double) numCommentLines);
56-
sensorContext.saveMeasure(resource, CoreMetrics.FILES, 1.0);
57-
sensorContext.saveMeasure(resource, CoreMetrics.CLASSES, 1.0);
58-
} catch (Exception e) {
59-
//TODO: WHERE ERRORS GO!?
60-
} finally {
61-
IOUtils.closeQuietly(reader);
62-
}
55+
sensorContext.saveMeasure(resource, CoreMetrics.LINES, (double) source.getMeasure(Metric.LINES));
56+
sensorContext.saveMeasure(resource, CoreMetrics.NCLOC, (double) source.getMeasure(Metric.LINES_OF_CODE));
57+
int numCommentLines = CommentCountParser.countLinesOfComment(rubyFile);
58+
sensorContext.saveMeasure(resource, CoreMetrics.COMMENT_LINES, (double) numCommentLines);
59+
sensorContext.saveMeasure(resource, CoreMetrics.FILES, 1.0);
60+
sensorContext.saveMeasure(resource, CoreMetrics.CLASSES, 1.0);
61+
} catch (Exception e) {
62+
throw new SonarException("Error computing base metrics for project.", e);
63+
} finally {
64+
IOUtils.closeQuietly(reader);
65+
}
66+
}
67+
for (RubyPackage pack : packageList) {
68+
sensorContext.saveMeasure(pack, CoreMetrics.PACKAGES, 1.0);
69+
}
6370
}
64-
for (RubyPackage pack : packageList) {
65-
sensorContext.saveMeasure(pack, CoreMetrics.PACKAGES, 1.0);
66-
}
67-
}
6871

69-
@Override
70-
public String toString() {
71-
return getClass().getSimpleName();
72-
}
72+
@Override
73+
public String toString() {
74+
return getClass().getSimpleName();
75+
}
7376
}

src/main/java/com/pica/sonarplugins/ruby/parsers/CommentCountParser.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,16 @@
33
import org.apache.commons.io.FileUtils;
44
import org.apache.commons.io.LineIterator;
55
import org.apache.commons.lang.StringUtils;
6+
import org.slf4j.Logger;
7+
import org.slf4j.LoggerFactory;
68

79
import java.io.File;
810
import java.io.IOException;
911

1012
public class CommentCountParser {
13+
14+
private static final Logger LOG = LoggerFactory.getLogger(CommentCountParser.class);
15+
1116
public static int countLinesOfComment(File file) {
1217
int numComments = 0;
1318
LineIterator iterator = null;
@@ -21,7 +26,7 @@ public static int countLinesOfComment(File file) {
2126
}
2227
}
2328
} catch (IOException e) {
24-
//TODO: Log ALL the errors!
29+
LOG.error("Error determining comment count for file " + file, e);
2530
} finally {
2631
LineIterator.closeQuietly(iterator);
2732
}

src/main/java/com/pica/sonarplugins/ruby/rcov/RcovSensor.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,9 @@ public void analyse(Project project, SensorContext context) {
3030
} catch (IOException e) {
3131
LOG.error("Error analysing project.", e);
3232
}
33-
3433
}
3534

36-
protected void parseReport(ProjectFileSystem fileSystem, File rootFile, final SensorContext context) throws IOException {;
35+
protected void parseReport(ProjectFileSystem fileSystem, File rootFile, final SensorContext context) throws IOException {
3736
//Coverage will be assigned to the "root" ruby file
3837
RubyFile rootRubyFile = RubyFile.fromIOFile(fileSystem.getBasedir(), fileSystem.getSourceDirs());
3938

0 commit comments

Comments
 (0)