mirror of
https://github.com/SonarSource/sonarqube.git
synced 2024-08-07 15:05:55 +02:00
SONAR-2797 end of support of maven archetypes
This commit is contained in:
parent
3d4da0c8c9
commit
dc30e55e56
@ -1,8 +0,0 @@
|
||||
To update the archetype project :
|
||||
|
||||
1. update sources of the initial project (/project directory)
|
||||
2. /project$ mvn install -DsonarTargetVersion=<version>
|
||||
3. copy the content of /project/target/generated-sources/archetype/src/main/resources to src/main/resources. Be careful with .svn files !
|
||||
|
||||
To execute the archetype :
|
||||
mvn archetype:generate -B -DarchetypeGroupId=org.codehaus.sonar.archetypes -DarchetypeArtifactId=sonar-basic-plugin-archetype -DarchetypeVersion=<SONAR VERSION> -DgroupId=com.mycompany.sonar -DartifactId=sonar-basic-sample-plugin -Dversion=0.1-SNAPSHOT
|
@ -1,52 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<parent>
|
||||
<groupId>org.codehaus.sonar</groupId>
|
||||
<artifactId>sonar</artifactId>
|
||||
<version>2.12-SNAPSHOT</version>
|
||||
<relativePath>../..</relativePath>
|
||||
</parent>
|
||||
|
||||
<groupId>org.codehaus.sonar.archetypes</groupId>
|
||||
<artifactId>sonar-basic-plugin-archetype</artifactId>
|
||||
<packaging>maven-archetype</packaging>
|
||||
<name>Sonar :: Archetypes :: Basic</name>
|
||||
<description>Maven archetype to create a basic Sonar plugin</description>
|
||||
|
||||
<properties>
|
||||
<sonarTargetVersion>${project.version}</sonarTargetVersion>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.codehaus.sonar</groupId>
|
||||
<artifactId>sonar-plugin-api</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<resources>
|
||||
<resource>
|
||||
<filtering>true</filtering>
|
||||
<directory>${basedir}/src/main/resources</directory>
|
||||
</resource>
|
||||
</resources>
|
||||
<extensions>
|
||||
<extension>
|
||||
<groupId>org.apache.maven.archetype</groupId>
|
||||
<artifactId>archetype-packaging</artifactId>
|
||||
<version>2.0-alpha-4</version>
|
||||
</extension>
|
||||
</extensions>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<artifactId>maven-archetype-plugin</artifactId>
|
||||
<version>2.0-alpha-4</version>
|
||||
<extensions>true</extensions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
@ -1,59 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>org.codehaus.sonar.archetypes</groupId>
|
||||
<artifactId>sonar-basic-plugin</artifactId>
|
||||
<packaging>sonar-plugin</packaging>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
<name>My Sonar plugin</name>
|
||||
<description>plugin description</description>
|
||||
|
||||
<!-- optional -->
|
||||
<organization>
|
||||
<name>My company</name>
|
||||
<url>http://www.mycompany.com</url>
|
||||
</organization>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.codehaus.sonar</groupId>
|
||||
<artifactId>sonar-plugin-api</artifactId>
|
||||
<version>${sonarTargetVersion}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- add your dependencies here -->
|
||||
|
||||
<!-- unit tests -->
|
||||
<dependency>
|
||||
<groupId>org.codehaus.sonar</groupId>
|
||||
<artifactId>sonar-testing-harness</artifactId>
|
||||
<version>${sonarTargetVersion}</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.codehaus.sonar</groupId>
|
||||
<artifactId>sonar-packaging-maven-plugin</artifactId>
|
||||
<version>1.0</version>
|
||||
<extensions>true</extensions>
|
||||
<configuration>
|
||||
<pluginClass>${package}.SamplePlugin</pluginClass>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>2.0.2</version>
|
||||
<configuration>
|
||||
<source>1.5</source>
|
||||
<target>1.5</target>
|
||||
<encoding>UTF-8</encoding>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
@ -1,38 +0,0 @@
|
||||
package org.sonar.plugins.sample;
|
||||
|
||||
import org.sonar.api.web.*;
|
||||
|
||||
@UserRole(UserRole.USER)
|
||||
@Description("Show how to use Ruby Widget API")
|
||||
@WidgetProperties({
|
||||
@WidgetProperty(key="param1",
|
||||
description="This is a mandatory parameter",
|
||||
optional=false
|
||||
),
|
||||
@WidgetProperty(key="max",
|
||||
description="max threshold",
|
||||
type=WidgetPropertyType.INTEGER,
|
||||
defaultValue="80"
|
||||
),
|
||||
@WidgetProperty(key="param2",
|
||||
description="This is an optional parameter"
|
||||
),
|
||||
@WidgetProperty(key="floatprop",
|
||||
description="test description"
|
||||
)
|
||||
})
|
||||
public class SampleDashboardWidget extends AbstractRubyTemplate implements RubyRailsWidget {
|
||||
|
||||
public String getId() {
|
||||
return "sample";
|
||||
}
|
||||
|
||||
public String getTitle() {
|
||||
return "Sample";
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getTemplatePath() {
|
||||
return "/sample_dashboard_widget.html.erb";
|
||||
}
|
||||
}
|
@ -1,26 +0,0 @@
|
||||
package org.sonar.plugins.sample;
|
||||
|
||||
import org.sonar.api.measures.Metrics;
|
||||
import org.sonar.api.measures.Metric;
|
||||
import org.sonar.api.measures.CoreMetrics;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Arrays;
|
||||
|
||||
public class SampleMetrics implements Metrics {
|
||||
|
||||
public static final Metric MESSAGE = new Metric("message_key", "Message",
|
||||
"This is a metric to store a well known message", Metric.ValueType.STRING, -1, false,
|
||||
CoreMetrics.DOMAIN_GENERAL);
|
||||
|
||||
|
||||
public static final Metric RANDOM = new Metric("random", "Random",
|
||||
"Random value", Metric.ValueType.FLOAT, Metric.DIRECTION_BETTER, false,
|
||||
CoreMetrics.DOMAIN_GENERAL);
|
||||
|
||||
// getMetrics() method is defined in the Metrics interface and is used by
|
||||
// Sonar to retrieve the list of new Metric
|
||||
public List<Metric> getMetrics() {
|
||||
return Arrays.asList(MESSAGE, RANDOM);
|
||||
}
|
||||
}
|
@ -1,43 +0,0 @@
|
||||
package org.sonar.plugins.sample;
|
||||
|
||||
import org.sonar.api.Plugin;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* This class is the entry point for all extensions
|
||||
*/
|
||||
public class SamplePlugin implements Plugin {
|
||||
|
||||
/**
|
||||
* @deprecated this is not used anymore
|
||||
*/
|
||||
public String getKey() {
|
||||
return "sample";
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated this is not used anymore
|
||||
*/
|
||||
public String getName() {
|
||||
return "My Sonar plugin";
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated this is not used anymore
|
||||
*/
|
||||
public String getDescription() {
|
||||
return "You shouldn't expect too much from this plugin except displaying the Hello World message.";
|
||||
}
|
||||
|
||||
// This is where you're going to declare all your Sonar extensions
|
||||
public List getExtensions() {
|
||||
return Arrays.asList(SampleMetrics.class, SampleSensor.class, SampleDashboardWidget.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return getClass().getSimpleName();
|
||||
}
|
||||
}
|
@ -1,30 +0,0 @@
|
||||
package org.sonar.plugins.sample;
|
||||
|
||||
import org.apache.commons.lang.math.RandomUtils;
|
||||
import org.sonar.api.batch.Sensor;
|
||||
import org.sonar.api.batch.SensorContext;
|
||||
import org.sonar.api.measures.Measure;
|
||||
import org.sonar.api.resources.Project;
|
||||
|
||||
public class SampleSensor implements Sensor {
|
||||
|
||||
public boolean shouldExecuteOnProject(Project project) {
|
||||
// this sensor is executed on any type of project
|
||||
return true;
|
||||
}
|
||||
|
||||
public void analyse(Project project, SensorContext sensorContext) {
|
||||
saveLabelMeasure(sensorContext);
|
||||
saveNumericMeasure(sensorContext);
|
||||
}
|
||||
|
||||
private void saveNumericMeasure(SensorContext context) {
|
||||
// Sonar API includes many libraries like commons-lang and google-collections
|
||||
context.saveMeasure(SampleMetrics.RANDOM, RandomUtils.nextDouble());
|
||||
}
|
||||
|
||||
private void saveLabelMeasure(SensorContext context) {
|
||||
Measure measure = new Measure(SampleMetrics.MESSAGE, "Hello World!");
|
||||
context.saveMeasure(measure);
|
||||
}
|
||||
}
|
@ -1,40 +0,0 @@
|
||||
<div class="dashbox">
|
||||
<h3><span title="<%= metric('random').description -%>"></span></h3>
|
||||
<p>
|
||||
<span class="big">
|
||||
<%= format_measure('random') -%> <%= tendency_icon(measure('random')) %>
|
||||
</span>
|
||||
</p>
|
||||
<p><%= format_measure('message') -%></p>
|
||||
<p>
|
||||
<%= format_measure('ncloc', :suffix => ' lines', :url => url_for_drilldown('ncloc')) -%>
|
||||
</p>
|
||||
</div>
|
||||
<div class="dashbox">
|
||||
<h3>Help</h3>
|
||||
<p>
|
||||
Read configuration : <%= configuration('sonar.jdbc.username') -%>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Sample of Jfree Eastwood chart : <br/>
|
||||
<%= gchart('cht=bhs&chco=FF0000,00FF00,0000FF&chs=200x125&chd=s:FOE,THE,Bar&chxt=x,y&chxl=1:|Dec|Nov|Oct|0:||20K||60K||100K|') -%>
|
||||
</p>
|
||||
<p>
|
||||
Widget properties:
|
||||
<table>
|
||||
<tr>
|
||||
<td>max:</td>
|
||||
<td><%= widget_properties['max'] -%></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>param1:</td>
|
||||
<td><%= widget_properties['param1'] -%></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>param2:</td>
|
||||
<td><%= widget_properties['param2'] -%></td>
|
||||
</tr>
|
||||
</table>
|
||||
</p>
|
||||
</div>
|
@ -1,16 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?><archetype-descriptor name="sonar-basic-plugin">
|
||||
<fileSets>
|
||||
<fileSet filtered="true" packaged="true" encoding="UTF-8">
|
||||
<directory>src/main/java</directory>
|
||||
<includes>
|
||||
<include>**/*.java</include>
|
||||
</includes>
|
||||
</fileSet>
|
||||
<fileSet encoding="UTF-8">
|
||||
<directory>src/main/resources</directory>
|
||||
<includes>
|
||||
<include>**/*.erb</include>
|
||||
</includes>
|
||||
</fileSet>
|
||||
</fileSets>
|
||||
</archetype-descriptor>
|
@ -1,12 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?><archetype>
|
||||
<id>sonar-basic-plugin</id>
|
||||
<sources>
|
||||
<source>src/main/java/SampleDashboardWidget.java</source>
|
||||
<source>src/main/java/SampleMetrics.java</source>
|
||||
<source>src/main/java/SamplePlugin.java</source>
|
||||
<source>src/main/java/SampleSensor.java</source>
|
||||
</sources>
|
||||
<resources>
|
||||
<resource>src/main/resources/sample_dashboard_widget.html.erb</resource>
|
||||
</resources>
|
||||
</archetype>
|
@ -1,58 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>$groupId</groupId>
|
||||
<artifactId>$artifactId</artifactId>
|
||||
<packaging>sonar-plugin</packaging>
|
||||
<version>$version</version>
|
||||
<name>My Sonar plugin</name>
|
||||
<description>plugin description</description>
|
||||
|
||||
<!-- optional -->
|
||||
<organization>
|
||||
<name>My company</name>
|
||||
<url>http://www.mycompany.com</url>
|
||||
</organization>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.codehaus.sonar</groupId>
|
||||
<artifactId>sonar-plugin-api</artifactId>
|
||||
<version>${sonarTargetVersion}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- add your dependencies here -->
|
||||
|
||||
<!-- unit tests -->
|
||||
<dependency>
|
||||
<groupId>org.codehaus.sonar</groupId>
|
||||
<artifactId>sonar-testing-harness</artifactId>
|
||||
<version>${sonarTargetVersion}</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.codehaus.sonar</groupId>
|
||||
<artifactId>sonar-packaging-maven-plugin</artifactId>
|
||||
<version>1.0</version>
|
||||
<extensions>true</extensions>
|
||||
<configuration>
|
||||
<pluginClass>${package}.SamplePlugin</pluginClass>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>2.0.2</version>
|
||||
<configuration>
|
||||
<source>1.5</source>
|
||||
<target>1.5</target>
|
||||
<encoding>UTF-8</encoding>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
@ -1,41 +0,0 @@
|
||||
#set( $symbol_pound = '#' )
|
||||
#set( $symbol_dollar = '$' )
|
||||
#set( $symbol_escape = '\' )
|
||||
package ${package};
|
||||
|
||||
import org.sonar.api.web.*;
|
||||
|
||||
@UserRole(UserRole.USER)
|
||||
@Description("Show how to use Ruby Widget API")
|
||||
@WidgetProperties({
|
||||
@WidgetProperty(key="param1",
|
||||
description="This is a mandatory parameter",
|
||||
optional=false
|
||||
),
|
||||
@WidgetProperty(key="max",
|
||||
description="max threshold",
|
||||
type=WidgetPropertyType.INTEGER,
|
||||
defaultValue="80"
|
||||
),
|
||||
@WidgetProperty(key="param2",
|
||||
description="This is an optional parameter"
|
||||
),
|
||||
@WidgetProperty(key="floatprop",
|
||||
description="test description"
|
||||
)
|
||||
})
|
||||
public class SampleDashboardWidget extends AbstractRubyTemplate implements RubyRailsWidget {
|
||||
|
||||
public String getId() {
|
||||
return "sample";
|
||||
}
|
||||
|
||||
public String getTitle() {
|
||||
return "Sample";
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getTemplatePath() {
|
||||
return "/sample_dashboard_widget.html.erb";
|
||||
}
|
||||
}
|
@ -1,29 +0,0 @@
|
||||
#set( $symbol_pound = '#' )
|
||||
#set( $symbol_dollar = '$' )
|
||||
#set( $symbol_escape = '\' )
|
||||
package ${package};
|
||||
|
||||
import org.sonar.api.measures.Metrics;
|
||||
import org.sonar.api.measures.Metric;
|
||||
import org.sonar.api.measures.CoreMetrics;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Arrays;
|
||||
|
||||
public class SampleMetrics implements Metrics {
|
||||
|
||||
public static final Metric MESSAGE = new Metric("message_key", "Message",
|
||||
"This is a metric to store a well known message", Metric.ValueType.STRING, -1, false,
|
||||
CoreMetrics.DOMAIN_GENERAL);
|
||||
|
||||
|
||||
public static final Metric RANDOM = new Metric("random", "Random",
|
||||
"Random value", Metric.ValueType.FLOAT, Metric.DIRECTION_BETTER, false,
|
||||
CoreMetrics.DOMAIN_GENERAL);
|
||||
|
||||
// getMetrics() method is defined in the Metrics interface and is used by
|
||||
// Sonar to retrieve the list of new Metric
|
||||
public List<Metric> getMetrics() {
|
||||
return Arrays.asList(MESSAGE, RANDOM);
|
||||
}
|
||||
}
|
@ -1,46 +0,0 @@
|
||||
#set( $symbol_pound = '#' )
|
||||
#set( $symbol_dollar = '$' )
|
||||
#set( $symbol_escape = '\' )
|
||||
package ${package};
|
||||
|
||||
import org.sonar.api.Plugin;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* This class is the entry point for all extensions
|
||||
*/
|
||||
public class SamplePlugin implements Plugin {
|
||||
|
||||
/**
|
||||
* @deprecated this is not used anymore
|
||||
*/
|
||||
public String getKey() {
|
||||
return "sample";
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated this is not used anymore
|
||||
*/
|
||||
public String getName() {
|
||||
return "My Sonar plugin";
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated this is not used anymore
|
||||
*/
|
||||
public String getDescription() {
|
||||
return "You shouldn't expect too much from this plugin except displaying the Hello World message.";
|
||||
}
|
||||
|
||||
// This is where you're going to declare all your Sonar extensions
|
||||
public List getExtensions() {
|
||||
return Arrays.asList(SampleMetrics.class, SampleSensor.class, SampleDashboardWidget.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return getClass().getSimpleName();
|
||||
}
|
||||
}
|
@ -1,33 +0,0 @@
|
||||
#set( $symbol_pound = '#' )
|
||||
#set( $symbol_dollar = '$' )
|
||||
#set( $symbol_escape = '\' )
|
||||
package ${package};
|
||||
|
||||
import org.apache.commons.lang.math.RandomUtils;
|
||||
import org.sonar.api.batch.Sensor;
|
||||
import org.sonar.api.batch.SensorContext;
|
||||
import org.sonar.api.measures.Measure;
|
||||
import org.sonar.api.resources.Project;
|
||||
|
||||
public class SampleSensor implements Sensor {
|
||||
|
||||
public boolean shouldExecuteOnProject(Project project) {
|
||||
// this sensor is executed on any type of project
|
||||
return true;
|
||||
}
|
||||
|
||||
public void analyse(Project project, SensorContext sensorContext) {
|
||||
saveLabelMeasure(sensorContext);
|
||||
saveNumericMeasure(sensorContext);
|
||||
}
|
||||
|
||||
private void saveNumericMeasure(SensorContext context) {
|
||||
// Sonar API includes many libraries like commons-lang and google-collections
|
||||
context.saveMeasure(SampleMetrics.RANDOM, RandomUtils.nextDouble());
|
||||
}
|
||||
|
||||
private void saveLabelMeasure(SensorContext context) {
|
||||
Measure measure = new Measure(SampleMetrics.MESSAGE, "Hello World!");
|
||||
context.saveMeasure(measure);
|
||||
}
|
||||
}
|
@ -1,40 +0,0 @@
|
||||
<div class="dashbox">
|
||||
<h3><span title="<%= metric('random').description -%>"></span></h3>
|
||||
<p>
|
||||
<span class="big">
|
||||
<%= format_measure('random') -%> <%= tendency_icon(measure('random')) %>
|
||||
</span>
|
||||
</p>
|
||||
<p><%= format_measure('message') -%></p>
|
||||
<p>
|
||||
<%= format_measure('ncloc', :suffix => ' lines', :url => url_for_drilldown('ncloc')) -%>
|
||||
</p>
|
||||
</div>
|
||||
<div class="dashbox">
|
||||
<h3>Help</h3>
|
||||
<p>
|
||||
Read configuration : <%= configuration('sonar.jdbc.username') -%>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Sample of Jfree Eastwood chart : <br/>
|
||||
<%= gchart('cht=bhs&chco=FF0000,00FF00,0000FF&chs=200x125&chd=s:FOE,THE,Bar&chxt=x,y&chxl=1:|Dec|Nov|Oct|0:||20K||60K||100K|') -%>
|
||||
</p>
|
||||
<p>
|
||||
Widget properties:
|
||||
<table>
|
||||
<tr>
|
||||
<td>max:</td>
|
||||
<td><%= widget_properties['max'] -%></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>param1:</td>
|
||||
<td><%= widget_properties['param1'] -%></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>param2:</td>
|
||||
<td><%= widget_properties['param2'] -%></td>
|
||||
</tr>
|
||||
</table>
|
||||
</p>
|
||||
</div>
|
@ -1,59 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<parent>
|
||||
<groupId>org.codehaus.sonar</groupId>
|
||||
<artifactId>sonar</artifactId>
|
||||
<version>2.12-SNAPSHOT</version>
|
||||
<relativePath>../..</relativePath>
|
||||
</parent>
|
||||
|
||||
<groupId>org.codehaus.sonar.archetypes</groupId>
|
||||
<artifactId>sonar-gwt-plugin-archetype</artifactId>
|
||||
<packaging>maven-archetype</packaging>
|
||||
<name>Sonar :: Archetypes :: GWT</name>
|
||||
<description>Maven archetype to create a Sonar plugin including GWT pages</description>
|
||||
|
||||
<properties>
|
||||
<sonarTargetVersion>${project.version}</sonarTargetVersion>
|
||||
<dollar>$</dollar>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.codehaus.sonar</groupId>
|
||||
<artifactId>sonar-plugin-api</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.codehaus.sonar</groupId>
|
||||
<artifactId>sonar-gwt-api</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<resources>
|
||||
<resource>
|
||||
<filtering>true</filtering>
|
||||
<directory>${basedir}/src/main/resources</directory>
|
||||
</resource>
|
||||
</resources>
|
||||
|
||||
<extensions>
|
||||
<extension>
|
||||
<groupId>org.apache.maven.archetype</groupId>
|
||||
<artifactId>archetype-packaging</artifactId>
|
||||
<version>2.0-alpha-4</version>
|
||||
</extension>
|
||||
</extensions>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<artifactId>maven-archetype-plugin</artifactId>
|
||||
<version>2.0-alpha-4</version>
|
||||
<extensions>true</extensions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
@ -1,123 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>org.codehaus.sonar.archetypes</groupId>
|
||||
<artifactId>sonar-gwt-plugin</artifactId>
|
||||
<packaging>sonar-plugin</packaging>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
<name>My Sonar GWT plugin</name>
|
||||
<description>GWT Sample description</description>
|
||||
|
||||
<!-- optional -->
|
||||
<organization>
|
||||
<name>My company</name>
|
||||
<url>http://www.mycompany.com</url>
|
||||
</organization>
|
||||
|
||||
<repositories>
|
||||
<repository>
|
||||
<!-- for gwt-incubator -->
|
||||
<id>sonar</id>
|
||||
<name>Sonar</name>
|
||||
<url>http://repository.sonarsource.org/content/repositories/sonar</url>
|
||||
<releases>
|
||||
<enabled>true</enabled>
|
||||
</releases>
|
||||
<snapshots>
|
||||
<enabled>false</enabled>
|
||||
</snapshots>
|
||||
</repository>
|
||||
</repositories>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.codehaus.sonar</groupId>
|
||||
<artifactId>sonar-plugin-api</artifactId>
|
||||
<version>${sonarTargetVersion}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.codehaus.sonar</groupId>
|
||||
<artifactId>sonar-gwt-api</artifactId>
|
||||
<version>${sonarTargetVersion}</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.google.gwt</groupId>
|
||||
<artifactId>gwt-user</artifactId>
|
||||
<version>2.0.3</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.google.gwt</groupId>
|
||||
<artifactId>gwt-incubator</artifactId>
|
||||
<version>2.0.1</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
<!-- unit tests -->
|
||||
<dependency>
|
||||
<groupId>org.codehaus.sonar</groupId>
|
||||
<artifactId>sonar-testing-harness</artifactId>
|
||||
<version>${sonarTargetVersion}</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<version>4.7</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>src/main/java</directory>
|
||||
</resource>
|
||||
</resources>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.codehaus.sonar</groupId>
|
||||
<artifactId>sonar-packaging-maven-plugin</artifactId>
|
||||
<version>1.0</version>
|
||||
<extensions>true</extensions>
|
||||
<configuration>
|
||||
<pluginClass>${package}.GwtSamplePlugin</pluginClass>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.codehaus.mojo</groupId>
|
||||
<artifactId>gwt-maven-plugin</artifactId>
|
||||
<version>1.2</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<configuration>
|
||||
<modules>
|
||||
<module>${package}.resourcetab.SampleResourceTab</module>
|
||||
<module>${package}.page.SamplePage</module>
|
||||
</modules>
|
||||
<webappDirectory>${project.build.directory}/classes</webappDirectory>
|
||||
<!-- do not break the following property on two lines -->
|
||||
<extraJvmArgs>-Xmx512m -Dgwt.jjs.permutationWorkerFactory=com.google.gwt.dev.ThreadedPermutationWorkerFactory</extraJvmArgs>
|
||||
</configuration>
|
||||
<goals>
|
||||
<goal>compile</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>2.0.2</version>
|
||||
<configuration>
|
||||
<source>1.5</source>
|
||||
<target>1.5</target>
|
||||
<encoding>UTF-8</encoding>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
@ -1,40 +0,0 @@
|
||||
package org.sonar.plugins.gwtsample;
|
||||
|
||||
import org.sonar.api.Plugin;
|
||||
import org.sonar.plugins.gwtsample.page.GwtSamplePage;
|
||||
import org.sonar.plugins.gwtsample.resourcetab.GwtSampleResourceTab;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
public class GwtSamplePlugin implements Plugin {
|
||||
|
||||
/**
|
||||
* @deprecated this is not used anymore
|
||||
*/
|
||||
public String getKey() {
|
||||
return "gwt-sample";
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated this is not used anymore
|
||||
*/
|
||||
public String getName() {
|
||||
return "GWT Sample";
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated this is not used anymore
|
||||
*/
|
||||
public String getDescription() {
|
||||
return "GWT Sample description";
|
||||
}
|
||||
|
||||
public List getExtensions() {
|
||||
return Arrays.asList(GwtSampleResourceTab.class, GwtSamplePage.class);
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
return getKey();
|
||||
}
|
||||
}
|
@ -1,18 +0,0 @@
|
||||
package org.sonar.plugins.gwtsample.page;
|
||||
|
||||
import org.sonar.api.web.GwtPage;
|
||||
import org.sonar.api.web.NavigationSection;
|
||||
import org.sonar.api.web.UserRole;
|
||||
|
||||
@NavigationSection(NavigationSection.RESOURCE)
|
||||
@UserRole(UserRole.USER)
|
||||
public class GwtSamplePage extends GwtPage {
|
||||
|
||||
public String getGwtId() {
|
||||
return "org.sonar.plugins.gwtsample.page.SamplePage";
|
||||
}
|
||||
|
||||
public String getTitle() {
|
||||
return "Sample";
|
||||
}
|
||||
}
|
@ -1,13 +0,0 @@
|
||||
<module>
|
||||
|
||||
<inherits name='com.google.gwt.user.User'/>
|
||||
<inherits name="com.google.gwt.json.JSON"/>
|
||||
<inherits name="com.google.gwt.http.HTTP"/>
|
||||
<inherits name="org.sonar.Sonar"/>
|
||||
|
||||
<entry-point class='org.sonar.plugins.gwtsample.page.client.SamplePage'/>
|
||||
|
||||
<extend-property name="locale" values="en"/>
|
||||
<extend-property name="locale" values="fr"/>
|
||||
|
||||
</module>
|
@ -1,11 +0,0 @@
|
||||
package org.sonar.plugins.gwtsample.page.client;
|
||||
|
||||
import com.google.gwt.core.client.GWT;
|
||||
|
||||
public interface I18nConstants extends com.google.gwt.i18n.client.Constants {
|
||||
|
||||
static I18nConstants INSTANCE = GWT.create(I18nConstants.class);
|
||||
|
||||
@DefaultStringValue("This is a sample")
|
||||
String sample();
|
||||
}
|
@ -1,2 +0,0 @@
|
||||
# This file must use UTF-8 encoding
|
||||
sample=Ceci est un exemple
|
@ -1,18 +0,0 @@
|
||||
package org.sonar.plugins.gwtsample.page.client;
|
||||
|
||||
import com.google.gwt.user.client.ui.Label;
|
||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import org.sonar.gwt.ui.Page;
|
||||
import org.sonar.wsclient.services.Resource;
|
||||
|
||||
public class SamplePage extends Page {
|
||||
|
||||
@Override
|
||||
protected Widget doOnResourceLoad(Resource resource) {
|
||||
VerticalPanel panel = new VerticalPanel();
|
||||
panel.add(new Label(resource.getName(true)));
|
||||
panel.add(new Label(I18nConstants.INSTANCE.sample()));
|
||||
return panel;
|
||||
}
|
||||
}
|
@ -1,32 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
||||
"http://www.w3.org/TR/html4/loose.dtd">
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
|
||||
<title>GWT Smaple</title>
|
||||
<link href="http://localhost:9000/dev/stylesheets/yui-2.6.0.css" media="all" rel="Stylesheet" type="text/css" />
|
||||
<link href="http://localhost:9000/dev/stylesheets/style.css" media="all" rel="Stylesheet" type="text/css" />
|
||||
<script src="http://localhost:9000/dev/javascripts/application.js" type="text/javascript"></script>
|
||||
<script src="http://localhost:9000/dev/javascripts/prototype.js" type="text/javascript"></script>
|
||||
<script src="http://localhost:9000/dev/javascripts/scriptaculous.js" type="text/javascript"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<script type="text/javascript">
|
||||
var config = {
|
||||
"sonar_url": "http://localhost:9000/dev",
|
||||
"resource_key" : "org.codehaus.sonar:sonar",
|
||||
};
|
||||
</script>
|
||||
|
||||
<div class="error" id="error" style="display:none"><span id="errormsg"></span> [<a href="#" onclick="javascript:$('error').hide();return false;">hide</a>]</div>
|
||||
<div class="warning" id="warning" style="display:none"><span id="warningmsg"></span> [<a href="#" onclick="javascript:$('warning').hide();return false;">hide</a>]</div>
|
||||
<div class="notice" id="info" style="display:none"><span id="infomsg"></span> [<a href="#" onclick="javascript:$('info').hide();return false;">hide</a>]</div>
|
||||
|
||||
<div id="gwtpage">
|
||||
</div>
|
||||
|
||||
<script type="text/javascript" language="javascript" src="org.sonar.plugins.gwtsample.page.GwtSamplePage.nocache.js"></script>
|
||||
</body>
|
||||
</html>
|
@ -1,17 +0,0 @@
|
||||
package org.sonar.plugins.gwtsample.resourcetab;
|
||||
|
||||
import org.sonar.api.web.GwtPage;
|
||||
import org.sonar.api.web.NavigationSection;
|
||||
import org.sonar.api.web.UserRole;
|
||||
|
||||
@NavigationSection(NavigationSection.RESOURCE_TAB)
|
||||
@UserRole(UserRole.USER)
|
||||
public class GwtSampleResourceTab extends GwtPage {
|
||||
public String getTitle() {
|
||||
return "Sample";
|
||||
}
|
||||
|
||||
public String getGwtId() {
|
||||
return "org.sonar.plugins.gwtsample.resourcetab.SampleResourceTab";
|
||||
}
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
<module>
|
||||
|
||||
<inherits name='com.google.gwt.user.User'/>
|
||||
<inherits name="com.google.gwt.json.JSON"/>
|
||||
<inherits name="com.google.gwt.http.HTTP"/>
|
||||
<inherits name="org.sonar.Sonar"/>
|
||||
|
||||
<entry-point class='org.sonar.plugins.gwtsample.resourcetab.client.SampleResourceTab'/>
|
||||
|
||||
</module>
|
@ -1,14 +0,0 @@
|
||||
package org.sonar.plugins.gwtsample.resourcetab.client;
|
||||
|
||||
import com.google.gwt.user.client.ui.Label;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import org.sonar.gwt.ui.Page;
|
||||
import org.sonar.wsclient.services.Resource;
|
||||
|
||||
public class SampleResourceTab extends Page {
|
||||
|
||||
@Override
|
||||
protected Widget doOnResourceLoad(Resource resource) {
|
||||
return new Label("This is a sample");
|
||||
}
|
||||
}
|
@ -1,13 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?><archetype-descriptor name="sonar-gwt-plugin-archetype">
|
||||
<fileSets>
|
||||
<fileSet filtered="true" packaged="true" encoding="UTF-8">
|
||||
<directory>src/main/java</directory>
|
||||
<includes>
|
||||
<include>**/*.xml</include>
|
||||
<include>**/*.html</include>
|
||||
<include>**/*.java</include>
|
||||
<include>**/*.properties</include>
|
||||
</includes>
|
||||
</fileSet>
|
||||
</fileSets>
|
||||
</archetype-descriptor>
|
@ -1,15 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?><archetype>
|
||||
<id>sonar-gwt-plugin</id>
|
||||
<sources>
|
||||
<source>src/main/java/GwtSamplePlugin.java</source>
|
||||
<source>src/main/java/page/client/I18nConstants.java</source>
|
||||
<source>src/main/java/page/client/I18nConstants_fr.properties</source>
|
||||
<source>src/main/java/page/client/SamplePage.java</source>
|
||||
<source>src/main/java/page/GwtSamplePage.java</source>
|
||||
<source>src/main/java/page/public/test.html</source>
|
||||
<source>src/main/java/page/SamplePage.gwt.xml</source>
|
||||
<source>src/main/java/resourcetab/client/SampleResourceTab.java</source>
|
||||
<source>src/main/java/resourcetab/GwtSampleResourceTab.java</source>
|
||||
<source>src/main/java/resourcetab/SampleResourceTab.gwt.xml</source>
|
||||
</sources>
|
||||
</archetype>
|
@ -1,121 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>$groupId</groupId>
|
||||
<artifactId>$artifactId</artifactId>
|
||||
<packaging>sonar-plugin</packaging>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
<name>My Sonar GWT plugin</name>
|
||||
<description>GWT Sample description</description>
|
||||
|
||||
<!-- optional -->
|
||||
<organization>
|
||||
<name>My company</name>
|
||||
<url>http://www.mycompany.com</url>
|
||||
</organization>
|
||||
|
||||
<repositories>
|
||||
<repository>
|
||||
<!-- for gwt-incubator -->
|
||||
<id>sonar</id>
|
||||
<name>Sonar</name>
|
||||
<url>http://repository.sonarsource.org/content/repositories/sonar</url>
|
||||
<releases>
|
||||
</releases>
|
||||
<snapshots>
|
||||
<enabled>false</enabled>
|
||||
</snapshots>
|
||||
</repository>
|
||||
</repositories>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.codehaus.sonar</groupId>
|
||||
<artifactId>sonar-plugin-api</artifactId>
|
||||
<version>${sonarTargetVersion}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.codehaus.sonar</groupId>
|
||||
<artifactId>sonar-gwt-api</artifactId>
|
||||
<version>${sonarTargetVersion}</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.google.gwt</groupId>
|
||||
<artifactId>gwt-user</artifactId>
|
||||
<version>2.0.3</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.google.gwt</groupId>
|
||||
<artifactId>gwt-incubator</artifactId>
|
||||
<version>2.0.1</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
<!-- unit tests -->
|
||||
<dependency>
|
||||
<groupId>org.codehaus.sonar</groupId>
|
||||
<artifactId>sonar-testing-harness</artifactId>
|
||||
<version>${sonarTargetVersion}</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<version>4.7</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>src/main/java</directory>
|
||||
</resource>
|
||||
</resources>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.codehaus.sonar</groupId>
|
||||
<artifactId>sonar-packaging-maven-plugin</artifactId>
|
||||
<version>1.0</version>
|
||||
<extensions>true</extensions>
|
||||
<configuration>
|
||||
<pluginClass>${package}.GwtSamplePlugin</pluginClass>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.codehaus.mojo</groupId>
|
||||
<artifactId>gwt-maven-plugin</artifactId>
|
||||
<version>1.2</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<configuration>
|
||||
<modules>
|
||||
<module>${package}.resourcetab.SampleResourceTab</module>
|
||||
<module>${package}.page.SamplePage</module>
|
||||
</modules>
|
||||
<webappDirectory>target/classes</webappDirectory>
|
||||
<!-- do not break the following property on two lines -->
|
||||
<extraJvmArgs>-Xmx512m -Dgwt.jjs.permutationWorkerFactory=com.google.gwt.dev.ThreadedPermutationWorkerFactory</extraJvmArgs>
|
||||
</configuration>
|
||||
<goals>
|
||||
<goal>compile</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>2.0.2</version>
|
||||
<configuration>
|
||||
<source>1.5</source>
|
||||
<target>1.5</target>
|
||||
<encoding>UTF-8</encoding>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
@ -1,43 +0,0 @@
|
||||
#set( $symbol_pound = '#' )
|
||||
#set( $symbol_dollar = '$' )
|
||||
#set( $symbol_escape = '\' )
|
||||
package ${package};
|
||||
|
||||
import org.sonar.api.Plugin;
|
||||
import ${package}.page.GwtSamplePage;
|
||||
import ${package}.resourcetab.GwtSampleResourceTab;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
public class GwtSamplePlugin implements Plugin {
|
||||
|
||||
/**
|
||||
* @deprecated this is not used anymore
|
||||
*/
|
||||
public String getKey() {
|
||||
return "gwt-sample";
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated this is not used anymore
|
||||
*/
|
||||
public String getName() {
|
||||
return "GWT Sample";
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated this is not used anymore
|
||||
*/
|
||||
public String getDescription() {
|
||||
return "GWT Sample description";
|
||||
}
|
||||
|
||||
public List getExtensions() {
|
||||
return Arrays.asList(GwtSampleResourceTab.class, GwtSamplePage.class);
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
return getKey();
|
||||
}
|
||||
}
|
@ -1,21 +0,0 @@
|
||||
#set( $symbol_pound = '#' )
|
||||
#set( $symbol_dollar = '$' )
|
||||
#set( $symbol_escape = '\' )
|
||||
package ${package}.page;
|
||||
|
||||
import org.sonar.api.web.GwtPage;
|
||||
import org.sonar.api.web.NavigationSection;
|
||||
import org.sonar.api.web.UserRole;
|
||||
|
||||
@NavigationSection(NavigationSection.RESOURCE)
|
||||
@UserRole(UserRole.USER)
|
||||
public class GwtSamplePage extends GwtPage {
|
||||
|
||||
public String getGwtId() {
|
||||
return "${package}.page.SamplePage";
|
||||
}
|
||||
|
||||
public String getTitle() {
|
||||
return "Sample";
|
||||
}
|
||||
}
|
@ -1,16 +0,0 @@
|
||||
#set( $symbol_pound = '#' )
|
||||
#set( $symbol_dollar = '$' )
|
||||
#set( $symbol_escape = '\' )
|
||||
<module>
|
||||
|
||||
<inherits name='com.google.gwt.user.User'/>
|
||||
<inherits name="com.google.gwt.json.JSON"/>
|
||||
<inherits name="com.google.gwt.http.HTTP"/>
|
||||
<inherits name="org.sonar.Sonar"/>
|
||||
|
||||
<entry-point class='${package}.page.client.SamplePage'/>
|
||||
|
||||
<extend-property name="locale" values="en"/>
|
||||
<extend-property name="locale" values="fr"/>
|
||||
|
||||
</module>
|
@ -1,14 +0,0 @@
|
||||
#set( $symbol_pound = '#' )
|
||||
#set( $symbol_dollar = '$' )
|
||||
#set( $symbol_escape = '\' )
|
||||
package ${package}.page.client;
|
||||
|
||||
import com.google.gwt.core.client.GWT;
|
||||
|
||||
public interface I18nConstants extends com.google.gwt.i18n.client.Constants {
|
||||
|
||||
static I18nConstants INSTANCE = GWT.create(I18nConstants.class);
|
||||
|
||||
@DefaultStringValue("This is a sample")
|
||||
String sample();
|
||||
}
|
@ -1,5 +0,0 @@
|
||||
#set( $symbol_pound = '#' )
|
||||
#set( $symbol_dollar = '$' )
|
||||
#set( $symbol_escape = '\' )
|
||||
${symbol_pound} This file must use UTF-8 encoding
|
||||
sample=Ceci est un exemple
|
@ -1,21 +0,0 @@
|
||||
#set( $symbol_pound = '#' )
|
||||
#set( $symbol_dollar = '$' )
|
||||
#set( $symbol_escape = '\' )
|
||||
package ${package}.page.client;
|
||||
|
||||
import com.google.gwt.user.client.ui.Label;
|
||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import org.sonar.gwt.ui.Page;
|
||||
import org.sonar.wsclient.services.Resource;
|
||||
|
||||
public class SamplePage extends Page {
|
||||
|
||||
@Override
|
||||
protected Widget doOnResourceLoad(Resource resource) {
|
||||
VerticalPanel panel = new VerticalPanel();
|
||||
panel.add(new Label(resource.getName(true)));
|
||||
panel.add(new Label(I18nConstants.INSTANCE.sample()));
|
||||
return panel;
|
||||
}
|
||||
}
|
@ -1,35 +0,0 @@
|
||||
#set( $symbol_pound = '#' )
|
||||
#set( $symbol_dollar = '$' )
|
||||
#set( $symbol_escape = '\' )
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
||||
"http://www.w3.org/TR/html4/loose.dtd">
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
|
||||
<title>GWT Smaple</title>
|
||||
<link href="http://localhost:9000/dev/stylesheets/yui-2.6.0.css" media="all" rel="Stylesheet" type="text/css" />
|
||||
<link href="http://localhost:9000/dev/stylesheets/style.css" media="all" rel="Stylesheet" type="text/css" />
|
||||
<script src="http://localhost:9000/dev/javascripts/application.js" type="text/javascript"></script>
|
||||
<script src="http://localhost:9000/dev/javascripts/prototype.js" type="text/javascript"></script>
|
||||
<script src="http://localhost:9000/dev/javascripts/scriptaculous.js" type="text/javascript"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<script type="text/javascript">
|
||||
var config = {
|
||||
"sonar_url": "http://localhost:9000/dev",
|
||||
"resource_key" : "org.codehaus.sonar:sonar",
|
||||
};
|
||||
</script>
|
||||
|
||||
<div class="error" id="error" style="display:none"><span id="errormsg"></span> [<a href="${symbol_pound}" onclick="javascript:${symbol_dollar}('error').hide();return false;">hide</a>]</div>
|
||||
<div class="warning" id="warning" style="display:none"><span id="warningmsg"></span> [<a href="${symbol_pound}" onclick="javascript:${symbol_dollar}('warning').hide();return false;">hide</a>]</div>
|
||||
<div class="notice" id="info" style="display:none"><span id="infomsg"></span> [<a href="${symbol_pound}" onclick="javascript:${symbol_dollar}('info').hide();return false;">hide</a>]</div>
|
||||
|
||||
<div id="gwtpage">
|
||||
</div>
|
||||
|
||||
<script type="text/javascript" language="javascript" src="${package}.page.GwtSamplePage.nocache.js"></script>
|
||||
</body>
|
||||
</html>
|
@ -1,20 +0,0 @@
|
||||
#set( $symbol_pound = '#' )
|
||||
#set( $symbol_dollar = '$' )
|
||||
#set( $symbol_escape = '\' )
|
||||
package ${package}.resourcetab;
|
||||
|
||||
import org.sonar.api.web.GwtPage;
|
||||
import org.sonar.api.web.NavigationSection;
|
||||
import org.sonar.api.web.UserRole;
|
||||
|
||||
@NavigationSection(NavigationSection.RESOURCE_TAB)
|
||||
@UserRole(UserRole.USER)
|
||||
public class GwtSampleResourceTab extends GwtPage {
|
||||
public String getTitle() {
|
||||
return "Sample";
|
||||
}
|
||||
|
||||
public String getGwtId() {
|
||||
return "${package}.resourcetab.SampleResourceTab";
|
||||
}
|
||||
}
|
@ -1,13 +0,0 @@
|
||||
#set( $symbol_pound = '#' )
|
||||
#set( $symbol_dollar = '$' )
|
||||
#set( $symbol_escape = '\' )
|
||||
<module>
|
||||
|
||||
<inherits name='com.google.gwt.user.User'/>
|
||||
<inherits name="com.google.gwt.json.JSON"/>
|
||||
<inherits name="com.google.gwt.http.HTTP"/>
|
||||
<inherits name="org.sonar.Sonar"/>
|
||||
|
||||
<entry-point class='${package}.resourcetab.client.SampleResourceTab'/>
|
||||
|
||||
</module>
|
@ -1,17 +0,0 @@
|
||||
#set( $symbol_pound = '#' )
|
||||
#set( $symbol_dollar = '$' )
|
||||
#set( $symbol_escape = '\' )
|
||||
package ${package}.resourcetab.client;
|
||||
|
||||
import com.google.gwt.user.client.ui.Label;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import org.sonar.gwt.ui.Page;
|
||||
import org.sonar.wsclient.services.Resource;
|
||||
|
||||
public class SampleResourceTab extends Page {
|
||||
|
||||
@Override
|
||||
protected Widget doOnResourceLoad(Resource resource) {
|
||||
return new Label("This is a sample");
|
||||
}
|
||||
}
|
19
pom.xml
19
pom.xml
@ -12,8 +12,6 @@
|
||||
|
||||
<modules>
|
||||
<!-- public artifacts to be deployed to central repository -->
|
||||
<module>archetypes/sonar-basic-plugin</module>
|
||||
<module>archetypes/sonar-gwt-plugin</module>
|
||||
<module>sonar-application</module>
|
||||
<module>sonar-batch</module>
|
||||
<module>sonar-batch-bootstrapper</module>
|
||||
@ -120,7 +118,7 @@
|
||||
</extensions>
|
||||
|
||||
<pluginManagement>
|
||||
<!-- Plugins ordered by shortname (archetype, assembly ...) -->
|
||||
<!-- Plugins ordered by shortname (assembly, antrun ...) -->
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.codehaus.mojo</groupId>
|
||||
@ -132,12 +130,6 @@
|
||||
<artifactId>maven-antrun-plugin</artifactId>
|
||||
<version>1.6</version>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<!-- not thread safe -->
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-archetype-plugin</artifactId>
|
||||
<version>2.0-alpha-4</version>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-assembly-plugin</artifactId>
|
||||
@ -1046,15 +1038,6 @@
|
||||
</developers>
|
||||
|
||||
<profiles>
|
||||
<profile>
|
||||
<id>all</id>
|
||||
<activation>
|
||||
<activeByDefault>true</activeByDefault>
|
||||
</activation>
|
||||
<modules>
|
||||
<module>samples</module>
|
||||
</modules>
|
||||
</profile>
|
||||
|
||||
<profile>
|
||||
<id>dev</id>
|
||||
|
@ -1,15 +0,0 @@
|
||||
=== How to install a plugin
|
||||
|
||||
1. Build plugin with Maven : mvn clean install
|
||||
2. Copy the JAR file generated into target/ to the directory extensions/plugins/ of the Sonar server
|
||||
3. Restart the Sonar server
|
||||
|
||||
|
||||
=== How to activate Checkstyle extensions
|
||||
|
||||
Install the plugin "checkstyle-extensions-plugin" then search for the rule "Methods count" in the administration console of Quality profiles.
|
||||
|
||||
|
||||
=== How to activate PMD extensions
|
||||
|
||||
Install the plugin "pmd-extensions-plugin" then search for the rules "MaximumMethodsCountCheck", "AvoidIfWithoutBrace" and "PreventUseOfEmptyClass" in the administration console of Quality profiles.
|
@ -1,50 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<assembly>
|
||||
<id>distribution</id>
|
||||
<formats>
|
||||
<format>zip</format>
|
||||
</formats>
|
||||
<includeBaseDirectory>true</includeBaseDirectory>
|
||||
|
||||
<fileSets>
|
||||
<fileSet>
|
||||
<directory>standard-plugin</directory>
|
||||
<outputDirectory>standard-plugin</outputDirectory>
|
||||
<includes>
|
||||
<include>src/**/*</include>
|
||||
<include>pom.xml</include>
|
||||
</includes>
|
||||
</fileSet>
|
||||
<fileSet>
|
||||
<directory>gwt-plugin</directory>
|
||||
<outputDirectory>gwt-plugin</outputDirectory>
|
||||
<includes>
|
||||
<include>src/**/*</include>
|
||||
<include>pom.xml</include>
|
||||
</includes>
|
||||
</fileSet>
|
||||
<fileSet>
|
||||
<directory>checkstyle-extensions-plugin</directory>
|
||||
<outputDirectory>checkstyle-extensions-plugin</outputDirectory>
|
||||
<includes>
|
||||
<include>src/**/*</include>
|
||||
<include>pom.xml</include>
|
||||
</includes>
|
||||
</fileSet>
|
||||
<fileSet>
|
||||
<directory>pmd-extensions-plugin</directory>
|
||||
<outputDirectory>pmd-extensions-plugin</outputDirectory>
|
||||
<includes>
|
||||
<include>src/**/*</include>
|
||||
<include>pom.xml</include>
|
||||
</includes>
|
||||
</fileSet>
|
||||
<fileSet>
|
||||
<directory>${project.basedir}</directory>
|
||||
<outputDirectory>/</outputDirectory>
|
||||
<includes>
|
||||
<include>*.txt</include>
|
||||
</includes>
|
||||
</fileSet>
|
||||
</fileSets>
|
||||
</assembly>
|
@ -1,71 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>com.mycompany.sonar</groupId>
|
||||
<artifactId>sonar-checkstyle-extensions-plugin</artifactId>
|
||||
<packaging>sonar-plugin</packaging>
|
||||
<version>0.1-SNAPSHOT</version>
|
||||
<name>Sonar :: Samples :: Checkstyle extensions</name>
|
||||
<description>Checkstyle extensions for Sonar</description>
|
||||
|
||||
<properties>
|
||||
<sonar.buildVersion>2.8</sonar.buildVersion>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.codehaus.sonar</groupId>
|
||||
<artifactId>sonar-plugin-api</artifactId>
|
||||
<version>${sonar.buildVersion}</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>checkstyle</groupId>
|
||||
<artifactId>checkstyle</artifactId>
|
||||
<version>5.1</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.codehaus.sonar</groupId>
|
||||
<artifactId>sonar-packaging-maven-plugin</artifactId>
|
||||
<version>1.1</version>
|
||||
<extensions>true</extensions>
|
||||
<configuration>
|
||||
<pluginClass>com.mycompany.sonar.checkstyle.CheckstyleExtensionsPlugin</pluginClass>
|
||||
<basePlugin>checkstyle</basePlugin>
|
||||
</configuration>
|
||||
</plugin>
|
||||
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>2.3.2</version>
|
||||
<configuration>
|
||||
<source>1.5</source>
|
||||
<target>1.5</target>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
<repositories>
|
||||
<repository>
|
||||
<!-- for checkstyle 5.1-->
|
||||
<id>sonarsource</id>
|
||||
<name>SonarSource</name>
|
||||
<url>http://repository.sonarsource.org/content/repositories/sonar</url>
|
||||
<releases>
|
||||
<enabled>true</enabled>
|
||||
</releases>
|
||||
<snapshots>
|
||||
<enabled>false</enabled>
|
||||
</snapshots>
|
||||
</repository>
|
||||
</repositories>
|
||||
</project>
|
@ -1,35 +0,0 @@
|
||||
package com.mycompany.sonar.checkstyle;
|
||||
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.sonar.api.resources.Java;
|
||||
import org.sonar.api.rules.Rule;
|
||||
import org.sonar.api.rules.RuleRepository;
|
||||
import org.sonar.api.rules.XMLRuleParser;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.util.List;
|
||||
|
||||
public class CheckstyleExtensionRepository extends RuleRepository {
|
||||
|
||||
// Must be the same than the Checkstyle plugin
|
||||
private static final String REPOSITORY_KEY = "checkstyle";
|
||||
private XMLRuleParser ruleParser;
|
||||
|
||||
public CheckstyleExtensionRepository(XMLRuleParser ruleParser) {
|
||||
super(REPOSITORY_KEY, Java.KEY);
|
||||
this.ruleParser = ruleParser;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Rule> createRules() {
|
||||
// In this example, new rules are declared in a XML file
|
||||
InputStream input = getClass().getResourceAsStream("/com/mycompany/sonar/checkstyle/extensions.xml");
|
||||
try {
|
||||
return ruleParser.parse(input);
|
||||
|
||||
} finally {
|
||||
IOUtils.closeQuietly(input);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -1,14 +0,0 @@
|
||||
package com.mycompany.sonar.checkstyle;
|
||||
|
||||
import org.sonar.api.SonarPlugin;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
public class CheckstyleExtensionsPlugin extends SonarPlugin {
|
||||
|
||||
public List getExtensions() {
|
||||
return Arrays.asList(CheckstyleExtensionRepository.class);
|
||||
}
|
||||
|
||||
}
|
@ -1,43 +0,0 @@
|
||||
package com.mycompany.sonar.checkstyle;
|
||||
|
||||
import com.puppycrawl.tools.checkstyle.api.Check;
|
||||
import com.puppycrawl.tools.checkstyle.api.DetailAST;
|
||||
import com.puppycrawl.tools.checkstyle.api.TokenTypes;
|
||||
|
||||
public class MethodsCountCheck extends Check {
|
||||
|
||||
private int minMethodsCount = 1;
|
||||
|
||||
private int methodsCount = 0;
|
||||
private DetailAST classAST = null;
|
||||
|
||||
public void setMinMethodsCount(int minMethodsCount) {
|
||||
this.minMethodsCount = minMethodsCount;
|
||||
}
|
||||
|
||||
public int[] getDefaultTokens() {
|
||||
return new int[]{TokenTypes.CLASS_DEF, TokenTypes.METHOD_DEF};
|
||||
}
|
||||
|
||||
public void beginTree(DetailAST rootAST) {
|
||||
methodsCount = 0;
|
||||
classAST = null;
|
||||
}
|
||||
|
||||
public void visitToken(DetailAST ast) {
|
||||
//ensure this is an unit test.
|
||||
if ( ast.getType() == TokenTypes.CLASS_DEF ) {
|
||||
classAST = ast;
|
||||
|
||||
} else if ( ast.getType() == TokenTypes.METHOD_DEF ) {
|
||||
methodsCount++;
|
||||
}
|
||||
}
|
||||
|
||||
public void finishTree(DetailAST rootAST) {
|
||||
super.finishTree(rootAST);
|
||||
if (classAST != null && methodsCount < minMethodsCount) {
|
||||
log(classAST.getLineNo(), classAST.getColumnNo(), "Too few methods (" + methodsCount + ") in class" );
|
||||
}
|
||||
}
|
||||
}
|
@ -1,13 +0,0 @@
|
||||
<rules>
|
||||
<rule>
|
||||
<key>com.mycompany.sonar.checkstyle.MethodsCountCheck</key>
|
||||
<name>Methods Count</name>
|
||||
<configKey>Checker/TreeWalker/com.mycompany.sonar.checkstyle.MethodsCountCheck</configKey>
|
||||
<description>Count methods</description>
|
||||
<param>
|
||||
<key>minMethodsCount</key>
|
||||
<description>Mimimun threshold</description>
|
||||
<defaultValue>10</defaultValue>
|
||||
</param>
|
||||
</rule>
|
||||
</rules>
|
@ -1,101 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>com.mycompany.sonar</groupId>
|
||||
<artifactId>sonar-gwt-plugin</artifactId>
|
||||
<packaging>sonar-plugin</packaging>
|
||||
<version>0.1-SNAPSHOT</version>
|
||||
<name>Sonar :: Samples :: GWT plugin</name>
|
||||
<description>Description of plugin with GWT extensions</description>
|
||||
|
||||
<properties>
|
||||
<sonar.buildVersion>2.8</sonar.buildVersion>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.codehaus.sonar</groupId>
|
||||
<artifactId>sonar-plugin-api</artifactId>
|
||||
<version>${sonar.buildVersion}</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.codehaus.sonar</groupId>
|
||||
<artifactId>sonar-gwt-api</artifactId>
|
||||
<version>${sonar.buildVersion}</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.google.gwt</groupId>
|
||||
<artifactId>gwt-user</artifactId>
|
||||
<version>2.0.3</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.google.gwt</groupId>
|
||||
<artifactId>gwt-incubator</artifactId>
|
||||
<version>2.0.1</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
<!-- unit tests -->
|
||||
<dependency>
|
||||
<groupId>org.codehaus.sonar</groupId>
|
||||
<artifactId>sonar-testing-harness</artifactId>
|
||||
<version>${sonar.buildVersion}</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<version>4.8.2</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.codehaus.sonar</groupId>
|
||||
<artifactId>sonar-packaging-maven-plugin</artifactId>
|
||||
<version>1.1</version>
|
||||
<extensions>true</extensions>
|
||||
<configuration>
|
||||
<pluginClass>com.mycompany.sonar.gwt.GwtPlugin</pluginClass>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.codehaus.mojo</groupId>
|
||||
<artifactId>gwt-maven-plugin</artifactId>
|
||||
<version>1.2</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<configuration>
|
||||
<modules>
|
||||
<module>com.mycompany.sonar.gwt.viewer.SampleViewer</module>
|
||||
<module>com.mycompany.sonar.gwt.page.SamplePage</module>
|
||||
</modules>
|
||||
<webappDirectory>${project.build.directory}/classes</webappDirectory>
|
||||
<extraJvmArgs>-Xmx512m</extraJvmArgs>
|
||||
</configuration>
|
||||
<goals>
|
||||
<goal>compile</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>2.0.2</version>
|
||||
<configuration>
|
||||
<source>1.5</source>
|
||||
<target>1.5</target>
|
||||
<encoding>UTF-8</encoding>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
@ -1,19 +0,0 @@
|
||||
package com.mycompany.sonar.gwt;
|
||||
|
||||
import com.mycompany.sonar.gwt.page.SamplePage;
|
||||
import com.mycompany.sonar.gwt.viewer.SampleViewer;
|
||||
import org.sonar.api.SonarPlugin;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
public final class GwtPlugin extends SonarPlugin {
|
||||
|
||||
public List getExtensions() {
|
||||
return Arrays.asList(SampleViewer.class, SamplePage.class);
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
return getKey();
|
||||
}
|
||||
}
|
@ -1,18 +0,0 @@
|
||||
package com.mycompany.sonar.gwt.page;
|
||||
|
||||
import org.sonar.api.web.GwtPage;
|
||||
import org.sonar.api.web.NavigationSection;
|
||||
import org.sonar.api.web.UserRole;
|
||||
|
||||
@NavigationSection(NavigationSection.RESOURCE)
|
||||
@UserRole(UserRole.USER)
|
||||
public class SamplePage extends GwtPage {
|
||||
|
||||
public String getGwtId() {
|
||||
return "com.mycompany.sonar.gwt.page.SamplePage";
|
||||
}
|
||||
|
||||
public String getTitle() {
|
||||
return "Sample";
|
||||
}
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
package com.mycompany.sonar.gwt.page.client;
|
||||
|
||||
import com.google.gwt.core.client.GWT;
|
||||
|
||||
public interface I18nConstants extends com.google.gwt.i18n.client.Constants {
|
||||
|
||||
static I18nConstants INSTANCE = GWT.create(I18nConstants.class);
|
||||
|
||||
@DefaultStringValue("This is a sample")
|
||||
String sample();
|
||||
}
|
@ -1,18 +0,0 @@
|
||||
package com.mycompany.sonar.gwt.page.client;
|
||||
|
||||
import com.google.gwt.user.client.ui.Label;
|
||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import org.sonar.gwt.ui.Page;
|
||||
import org.sonar.wsclient.services.Resource;
|
||||
|
||||
public class SamplePagePanel extends Page {
|
||||
|
||||
@Override
|
||||
protected Widget doOnResourceLoad(Resource resource) {
|
||||
VerticalPanel panel = new VerticalPanel();
|
||||
panel.add(new Label(resource.getName(true)));
|
||||
panel.add(new Label(I18nConstants.INSTANCE.sample()));
|
||||
return panel;
|
||||
}
|
||||
}
|
@ -1,17 +0,0 @@
|
||||
package com.mycompany.sonar.gwt.viewer;
|
||||
|
||||
import org.sonar.api.web.GwtPage;
|
||||
import org.sonar.api.web.NavigationSection;
|
||||
import org.sonar.api.web.UserRole;
|
||||
|
||||
@NavigationSection(NavigationSection.RESOURCE_TAB)
|
||||
@UserRole(UserRole.USER)
|
||||
public class SampleViewer extends GwtPage {
|
||||
public String getTitle() {
|
||||
return "Sample";
|
||||
}
|
||||
|
||||
public String getGwtId() {
|
||||
return "com.mycompany.sonar.gwt.viewer.SampleViewer";
|
||||
}
|
||||
}
|
@ -1,38 +0,0 @@
|
||||
package com.mycompany.sonar.gwt.viewer.client;
|
||||
|
||||
import com.google.gwt.user.client.ui.Label;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import org.sonar.gwt.ui.Page;
|
||||
import org.sonar.wsclient.gwt.AbstractCallback;
|
||||
import org.sonar.wsclient.gwt.Sonar;
|
||||
import org.sonar.wsclient.services.Measure;
|
||||
import org.sonar.wsclient.services.Resource;
|
||||
import org.sonar.wsclient.services.ResourceQuery;
|
||||
|
||||
public class SampleViewerPanel extends Page {
|
||||
|
||||
private Label label;
|
||||
|
||||
@Override
|
||||
protected Widget doOnResourceLoad(Resource resource) {
|
||||
label = new Label("Loading value");
|
||||
loadMeasureFromServer(resource);
|
||||
return label;
|
||||
}
|
||||
|
||||
// Ajax call to web service
|
||||
private void loadMeasureFromServer(Resource resource) {
|
||||
ResourceQuery query = ResourceQuery.createForResource(resource, "random");
|
||||
Sonar.getInstance().find(query, new AbstractCallback<Resource>() {
|
||||
@Override
|
||||
protected void doOnResponse(Resource result) {
|
||||
Measure measure = result.getMeasure("random");
|
||||
if (measure==null || measure.getValue()==null) {
|
||||
label.setText("No random value");
|
||||
} else {
|
||||
label.setText("Random value inserted during analysis: " + measure.getValue());
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
@ -1,13 +0,0 @@
|
||||
<module>
|
||||
|
||||
<inherits name='com.google.gwt.user.User'/>
|
||||
<inherits name="com.google.gwt.json.JSON"/>
|
||||
<inherits name="com.google.gwt.http.HTTP"/>
|
||||
<inherits name="org.sonar.Sonar"/>
|
||||
|
||||
<entry-point class='com.mycompany.sonar.gwt.page.client.SamplePagePanel'/>
|
||||
|
||||
<extend-property name="locale" values="en"/>
|
||||
<extend-property name="locale" values="fr"/>
|
||||
|
||||
</module>
|
@ -1,2 +0,0 @@
|
||||
# This file must use UTF-8 encoding
|
||||
sample=Ceci est un exemple
|
@ -1,32 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
||||
"http://www.w3.org/TR/html4/loose.dtd">
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
|
||||
<title>GWT Smaple</title>
|
||||
<link href="http://localhost:9000/dev/stylesheets/yui-2.6.0.css" media="all" rel="Stylesheet" type="text/css" />
|
||||
<link href="http://localhost:9000/dev/stylesheets/style.css" media="all" rel="Stylesheet" type="text/css" />
|
||||
<script src="http://localhost:9000/dev/javascripts/application.js" type="text/javascript"></script>
|
||||
<script src="http://localhost:9000/dev/javascripts/prototype.js" type="text/javascript"></script>
|
||||
<script src="http://localhost:9000/dev/javascripts/scriptaculous.js" type="text/javascript"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<script type="text/javascript">
|
||||
var config = {
|
||||
"sonar_url": "http://localhost:9000/dev",
|
||||
"resource_key" : "org.codehaus.sonar:sonar",
|
||||
};
|
||||
</script>
|
||||
|
||||
<div class="error" id="error" style="display:none"><span id="errormsg"></span> [<a href="#" onclick="javascript:$('error').hide();return false;">hide</a>]</div>
|
||||
<div class="warning" id="warning" style="display:none"><span id="warningmsg"></span> [<a href="#" onclick="javascript:$('warning').hide();return false;">hide</a>]</div>
|
||||
<div class="notice" id="info" style="display:none"><span id="infomsg"></span> [<a href="#" onclick="javascript:$('info').hide();return false;">hide</a>]</div>
|
||||
|
||||
<div id="gwtpage">
|
||||
</div>
|
||||
|
||||
<script type="text/javascript" language="javascript" src="org.sonar.plugins.gwtsample.page.GwtSamplePage.nocache.js"></script>
|
||||
</body>
|
||||
</html>
|
@ -1,10 +0,0 @@
|
||||
<module>
|
||||
|
||||
<inherits name='com.google.gwt.user.User'/>
|
||||
<inherits name="com.google.gwt.json.JSON"/>
|
||||
<inherits name="com.google.gwt.http.HTTP"/>
|
||||
<inherits name="org.sonar.Sonar"/>
|
||||
|
||||
<entry-point class='com.mycompany.sonar.gwt.viewer.client.SampleViewerPanel'/>
|
||||
|
||||
</module>
|
@ -1,58 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>com.mycompany.sonar</groupId>
|
||||
<artifactId>sonar-pmd-extensions-plugin</artifactId>
|
||||
<packaging>sonar-plugin</packaging>
|
||||
<version>0.1-SNAPSHOT</version>
|
||||
<name>Sonar :: Samples :: PMD extensions</name>
|
||||
<description>PMD extensions for Sonar</description>
|
||||
|
||||
<properties>
|
||||
<sonar.buildVersion>2.8</sonar.buildVersion>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.codehaus.sonar</groupId>
|
||||
<artifactId>sonar-plugin-api</artifactId>
|
||||
<version>${sonar.buildVersion}</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>pmd</groupId>
|
||||
<artifactId>pmd</artifactId>
|
||||
<version>4.2.5</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.codehaus.sonar</groupId>
|
||||
<artifactId>sonar-packaging-maven-plugin</artifactId>
|
||||
<version>1.1</version>
|
||||
<extensions>true</extensions>
|
||||
<configuration>
|
||||
<pluginClass>com.mycompany.sonar.pmd.PmdExtensionsPlugin</pluginClass>
|
||||
|
||||
<!-- This is important. It means that this plugin extends the PMD plugin -->
|
||||
<basePlugin>pmd</basePlugin>
|
||||
</configuration>
|
||||
</plugin>
|
||||
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>2.3.2</version>
|
||||
<configuration>
|
||||
<source>1.5</source>
|
||||
<target>1.5</target>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
@ -1,25 +0,0 @@
|
||||
package com.mycompany.sonar.pmd;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import net.sourceforge.pmd.AbstractRule;
|
||||
import net.sourceforge.pmd.ast.ASTClassOrInterfaceBody;
|
||||
import net.sourceforge.pmd.ast.ASTMethodDeclaration;
|
||||
import net.sourceforge.pmd.properties.IntegerProperty;
|
||||
|
||||
public class MaximumMethodsCountCheck extends AbstractRule {
|
||||
|
||||
private static final IntegerProperty propertyDescriptor = new IntegerProperty(
|
||||
"maxAuthorisedMethodsCount", "Maximum number of methods authorised", 2, 1.0f);
|
||||
|
||||
public Object visit(ASTClassOrInterfaceBody node, Object data) {
|
||||
List<ASTMethodDeclaration> methods = new ArrayList<ASTMethodDeclaration>();
|
||||
methods = (List<ASTMethodDeclaration>)node.findChildrenOfType(ASTMethodDeclaration.class);
|
||||
|
||||
if (methods.size() > getIntProperty(propertyDescriptor)) {
|
||||
addViolation(data, node);
|
||||
}
|
||||
return super.visit(node,data);
|
||||
}
|
||||
|
||||
}
|
@ -1,35 +0,0 @@
|
||||
package com.mycompany.sonar.pmd;
|
||||
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.sonar.api.resources.Java;
|
||||
import org.sonar.api.rules.Rule;
|
||||
import org.sonar.api.rules.RuleRepository;
|
||||
import org.sonar.api.rules.XMLRuleParser;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.util.List;
|
||||
|
||||
public class PmdExtensionRepository extends RuleRepository {
|
||||
|
||||
// Must be the same than the PMD plugin
|
||||
private static final String REPOSITORY_KEY = "pmd";
|
||||
private XMLRuleParser ruleParser;
|
||||
|
||||
public PmdExtensionRepository(XMLRuleParser ruleParser) {
|
||||
super(REPOSITORY_KEY, Java.KEY);
|
||||
this.ruleParser = ruleParser;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Rule> createRules() {
|
||||
// In this example, new rules are declared in a XML file
|
||||
InputStream input = getClass().getResourceAsStream("/com/mycompany/sonar/pmd/extensions.xml");
|
||||
try {
|
||||
return ruleParser.parse(input);
|
||||
|
||||
} finally {
|
||||
IOUtils.closeQuietly(input);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -1,14 +0,0 @@
|
||||
package com.mycompany.sonar.pmd;
|
||||
|
||||
import org.sonar.api.SonarPlugin;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
public class PmdExtensionsPlugin extends SonarPlugin {
|
||||
|
||||
public List getExtensions() {
|
||||
return Arrays.asList(PmdExtensionRepository.class);
|
||||
}
|
||||
|
||||
}
|
@ -1,56 +0,0 @@
|
||||
<rules>
|
||||
<!-- Extension written in Java -->
|
||||
<rule>
|
||||
<key>MaximumMethodsCountCheck</key>
|
||||
<name>Maximum Methods Count Check</name>
|
||||
<description>Maximum number of methods authorised</description>
|
||||
|
||||
<!-- path to definition -->
|
||||
<configKey>com/mycompany/sonar/pmd/rulesets.xml/MaximumMethodsCountCheck</configKey>
|
||||
|
||||
<!-- Default priority ("severity"). It can be changed while activating the rule in Quality profile -->
|
||||
<!-- Possible values are: INFO, MINOR, MAJOR, CRITICAL, BLOCKER. Default value is MAJOR -->
|
||||
<!--<priority>MAJOR</priority>-->
|
||||
|
||||
<!-- parameters available in administration console of Quality profiles -->
|
||||
<param>
|
||||
<key>maxAuthorisedMethodsCount</key>
|
||||
<description>Maximum number of methods authorised</description>
|
||||
|
||||
<!-- default value is optional -->
|
||||
<defaultValue>2</defaultValue>
|
||||
</param>
|
||||
</rule>
|
||||
|
||||
|
||||
<!-- Extension written in XPath, first solution -->
|
||||
<rule>
|
||||
<key>AvoidIfWithoutBrace</key>
|
||||
<name>Avoid if without using brace</name>
|
||||
<configKey>com/mycompany/sonar/pmd/rulesets.xml/AvoidIfWithoutBrace</configKey>
|
||||
<priority>CRITICAL</priority>
|
||||
</rule>
|
||||
|
||||
|
||||
<!--
|
||||
Extension written in XPath, second solution.
|
||||
Difference is that the XPath expression can be configured by users from administration console of Quality profiles
|
||||
-->
|
||||
<rule>
|
||||
<key>PreventUseOfEmptyClass</key>
|
||||
<priority>MAJOR</priority>
|
||||
<name><![CDATA[Prevent use of EmptyClass]]></name>
|
||||
<configKey><![CDATA[net.sourceforge.pmd.rules.XPathRule]]></configKey>
|
||||
<priority>MINOR</priority>
|
||||
<param>
|
||||
<key>xpath</key>
|
||||
<description><![CDATA[XPath expressions.]]></description>
|
||||
<defaultValue>//VariableDeclarator[../Type/ReferenceType/ClassOrInterfaceType[@Image='EmptyClass']]</defaultValue>
|
||||
</param>
|
||||
<param>
|
||||
<key>message</key>
|
||||
<description><![CDATA[Message to display when a violation occurs.]]></description>
|
||||
<defaultValue>Prevent use of EmptyClass class</defaultValue>
|
||||
</param>
|
||||
</rule>
|
||||
</rules>
|
@ -1,53 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<ruleset name="PMD extensions"
|
||||
xmlns="http://pmd.sf.net/ruleset/1.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd"
|
||||
xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd">
|
||||
|
||||
<rule name="MaximumMethodsCountCheck"
|
||||
message="Avoid too many methods"
|
||||
class="com.mycompany.sonar.pmd.MaximumMethodsCountCheck">
|
||||
<description>
|
||||
Avoid too many methods
|
||||
</description>
|
||||
<priority>3</priority>
|
||||
<properties>
|
||||
<property name="maxAuthorisedMethodsCount" description="Maximum number of methods authorised" value="3"/>
|
||||
</properties>
|
||||
<example>
|
||||
<![CDATA[
|
||||
// too many methods!
|
||||
public void doSomething() {}
|
||||
public void doSomething2() {}
|
||||
public void doSomething3() {}
|
||||
public void doSomething4() {}
|
||||
|
||||
]]>
|
||||
</example>
|
||||
</rule>
|
||||
|
||||
<rule name="AvoidIfWithoutBrace"
|
||||
message="Avoid if without using brace"
|
||||
class="net.sourceforge.pmd.rules.XPathRule">
|
||||
<description>
|
||||
Avoid if without using brace
|
||||
</description>
|
||||
<properties>
|
||||
<property name="xpath">
|
||||
<value>
|
||||
<![CDATA[
|
||||
//IfStatement[not(Statement/Block)]
|
||||
]]>
|
||||
</value>
|
||||
</property>
|
||||
</properties>
|
||||
<example>
|
||||
<![CDATA[
|
||||
// don't do this!
|
||||
if (true)
|
||||
test = "test";
|
||||
]]>
|
||||
</example>
|
||||
</rule>
|
||||
</ruleset>
|
@ -1,52 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>org.codehaus.sonar</groupId>
|
||||
<artifactId>sonar</artifactId>
|
||||
<version>2.12-SNAPSHOT</version>
|
||||
<relativePath>..</relativePath>
|
||||
</parent>
|
||||
<groupId>org.codehaus.sonar.samples</groupId>
|
||||
<artifactId>sonar-samples</artifactId>
|
||||
<packaging>pom</packaging>
|
||||
<name>Sonar :: Samples</name>
|
||||
|
||||
<modules>
|
||||
<module>standard-plugin</module>
|
||||
<module>gwt-plugin</module>
|
||||
<module>checkstyle-extensions-plugin</module>
|
||||
<module>pmd-extensions-plugin</module>
|
||||
</modules>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-deploy-plugin</artifactId>
|
||||
<configuration>
|
||||
<skip>true</skip>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<artifactId>maven-assembly-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>single</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<appendAssemblyId>false</appendAssemblyId>
|
||||
<finalName>sonar-samples-${project.version}</finalName>
|
||||
<descriptors>
|
||||
<descriptor>assembly.xml</descriptor>
|
||||
</descriptors>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
@ -1,57 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>com.mycompany.sonar</groupId>
|
||||
<artifactId>sonar-standard-plugin</artifactId>
|
||||
<packaging>sonar-plugin</packaging>
|
||||
<version>0.1-SNAPSHOT</version>
|
||||
<name>Sonar :: Samples :: Standard plugin</name>
|
||||
<description>Description of standard plugin</description>
|
||||
|
||||
<properties>
|
||||
<sonar.buildVersion>2.8</sonar.buildVersion>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.codehaus.sonar</groupId>
|
||||
<artifactId>sonar-plugin-api</artifactId>
|
||||
<version>${sonar.buildVersion}</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
<!-- unit tests -->
|
||||
<dependency>
|
||||
<groupId>org.codehaus.sonar</groupId>
|
||||
<artifactId>sonar-testing-harness</artifactId>
|
||||
<version>${sonar.buildVersion}</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.codehaus.sonar</groupId>
|
||||
<artifactId>sonar-packaging-maven-plugin</artifactId>
|
||||
<version>1.1</version>
|
||||
<extensions>true</extensions>
|
||||
<configuration>
|
||||
<pluginClass>com.mycompany.sonar.standard.SamplePlugin</pluginClass>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>2.0.2</version>
|
||||
<configuration>
|
||||
<source>1.5</source>
|
||||
<target>1.5</target>
|
||||
<encoding>UTF-8</encoding>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
@ -1,31 +0,0 @@
|
||||
package com.mycompany.sonar.standard;
|
||||
|
||||
import org.sonar.api.measures.CoreMetrics;
|
||||
import org.sonar.api.measures.Metric;
|
||||
import org.sonar.api.measures.Metrics;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
public final class SampleMetrics implements Metrics {
|
||||
|
||||
public static final Metric MESSAGE = new Metric.Builder("message_key", "Message", Metric.ValueType.STRING)
|
||||
.setDescription("This is a metric to store a well known message")
|
||||
.setDirection(Metric.DIRECTION_WORST)
|
||||
.setQualitative(false)
|
||||
.setDomain(CoreMetrics.DOMAIN_GENERAL)
|
||||
.create();
|
||||
|
||||
public static final Metric RANDOM = new Metric.Builder("random", "Random", Metric.ValueType.FLOAT)
|
||||
.setDescription("Random value")
|
||||
.setDirection(Metric.DIRECTION_BETTER)
|
||||
.setQualitative(false)
|
||||
.setDomain(CoreMetrics.DOMAIN_GENERAL)
|
||||
.create();
|
||||
|
||||
// getMetrics() method is defined in the Metrics interface and is used by
|
||||
// Sonar to retrieve the list of new Metric
|
||||
public List<Metric> getMetrics() {
|
||||
return Arrays.asList(MESSAGE, RANDOM);
|
||||
}
|
||||
}
|
@ -1,29 +0,0 @@
|
||||
package com.mycompany.sonar.standard;
|
||||
|
||||
import com.mycompany.sonar.standard.batch.RandomDecorator;
|
||||
import com.mycompany.sonar.standard.batch.SampleSensor;
|
||||
import com.mycompany.sonar.standard.ui.SampleFooter;
|
||||
import com.mycompany.sonar.standard.ui.SampleRubyWidget;
|
||||
import org.sonar.api.SonarPlugin;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* This class is the entry point for all extensions
|
||||
*/
|
||||
public final class SamplePlugin extends SonarPlugin {
|
||||
|
||||
// This is where you're going to declare all your Sonar extensions
|
||||
public List getExtensions() {
|
||||
return Arrays.asList(
|
||||
// Definitions
|
||||
SampleMetrics.class,
|
||||
|
||||
// Batch
|
||||
SampleSensor.class, RandomDecorator.class,
|
||||
|
||||
// UI
|
||||
SampleFooter.class, SampleRubyWidget.class);
|
||||
}
|
||||
}
|
@ -1,36 +0,0 @@
|
||||
package com.mycompany.sonar.standard.batch;
|
||||
|
||||
import com.mycompany.sonar.standard.SampleMetrics;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.apache.commons.lang.math.RandomUtils;
|
||||
import org.sonar.api.batch.Decorator;
|
||||
import org.sonar.api.batch.DecoratorContext;
|
||||
import org.sonar.api.measures.MeasureUtils;
|
||||
import org.sonar.api.resources.Java;
|
||||
import org.sonar.api.resources.Project;
|
||||
import org.sonar.api.resources.Resource;
|
||||
import org.sonar.api.resources.Scopes;
|
||||
|
||||
public class RandomDecorator implements Decorator {
|
||||
|
||||
public boolean shouldExecuteOnProject(Project project) {
|
||||
// Execute only on Java projects
|
||||
return StringUtils.equals(project.getLanguageKey(), Java.KEY);
|
||||
}
|
||||
|
||||
public void decorate(Resource resource, DecoratorContext context) {
|
||||
// This method is executed on the whole tree of resources.
|
||||
// Bottom-up navigation : Java methods -> Java classes -> files -> packages -> modules -> project
|
||||
if (Scopes.isBlockUnit(resource)) {
|
||||
// Sonar API includes many libraries like commons-lang and google-collections
|
||||
double value = RandomUtils.nextDouble();
|
||||
|
||||
// Add a measure to the current Java method
|
||||
context.saveMeasure(SampleMetrics.RANDOM, value);
|
||||
|
||||
} else {
|
||||
// we sum random values on resources different than method
|
||||
context.saveMeasure(SampleMetrics.RANDOM, MeasureUtils.sum(true, context.getChildrenMeasures(SampleMetrics.RANDOM)));
|
||||
}
|
||||
}
|
||||
}
|
@ -1,20 +0,0 @@
|
||||
package com.mycompany.sonar.standard.batch;
|
||||
|
||||
import com.mycompany.sonar.standard.SampleMetrics;
|
||||
import org.sonar.api.batch.Sensor;
|
||||
import org.sonar.api.batch.SensorContext;
|
||||
import org.sonar.api.measures.Measure;
|
||||
import org.sonar.api.resources.Project;
|
||||
|
||||
public class SampleSensor implements Sensor {
|
||||
|
||||
public boolean shouldExecuteOnProject(Project project) {
|
||||
// This sensor is executed on any type of projects
|
||||
return true;
|
||||
}
|
||||
|
||||
public void analyse(Project project, SensorContext sensorContext) {
|
||||
Measure measure = new Measure(SampleMetrics.MESSAGE, "Hello World!");
|
||||
sensorContext.saveMeasure(measure);
|
||||
}
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
package com.mycompany.sonar.standard.ui;
|
||||
|
||||
import org.sonar.api.web.Footer;
|
||||
|
||||
public final class SampleFooter implements Footer {
|
||||
public String getHtml() {
|
||||
return "<p>Sample footer - <em>This is static HTML</em></p>";
|
||||
}
|
||||
}
|
@ -1,39 +0,0 @@
|
||||
package com.mycompany.sonar.standard.ui;
|
||||
|
||||
import org.sonar.api.web.*;
|
||||
|
||||
@UserRole(UserRole.USER)
|
||||
@Description("Show how to use Ruby Widget API")
|
||||
@WidgetCategory("Sample")
|
||||
@WidgetProperties({
|
||||
@WidgetProperty(key="param1",
|
||||
description="This is a mandatory parameter",
|
||||
optional=false
|
||||
),
|
||||
@WidgetProperty(key="max",
|
||||
description="max threshold",
|
||||
type=WidgetPropertyType.INTEGER,
|
||||
defaultValue="80"
|
||||
),
|
||||
@WidgetProperty(key="param2",
|
||||
description="This is an optional parameter"
|
||||
),
|
||||
@WidgetProperty(key="floatprop",
|
||||
description="test description"
|
||||
)
|
||||
})
|
||||
public class SampleRubyWidget extends AbstractRubyTemplate implements RubyRailsWidget {
|
||||
|
||||
public String getId() {
|
||||
return "sample";
|
||||
}
|
||||
|
||||
public String getTitle() {
|
||||
return "Sample";
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getTemplatePath() {
|
||||
return "/sample_ruby_widget.html.erb";
|
||||
}
|
||||
}
|
@ -1,40 +0,0 @@
|
||||
<div class="dashbox">
|
||||
<h3><span title="<%= metric('random').description -%>"></span></h3>
|
||||
<p>
|
||||
<span class="big">
|
||||
<%= format_measure('random') -%> <%= trend_icon(measure('random')) %>
|
||||
</span>
|
||||
</p>
|
||||
<p><%= format_measure('message') -%></p>
|
||||
<p>
|
||||
<%= format_measure('ncloc', :suffix => ' lines', :url => url_for_drilldown('ncloc')) -%>
|
||||
</p>
|
||||
</div>
|
||||
<div class="dashbox">
|
||||
<h3>Help</h3>
|
||||
<p>
|
||||
Read configuration : <%= configuration('sonar.jdbc.username') -%>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Sample of Jfree Eastwood chart : <br/>
|
||||
<%= gchart('cht=bhs&chco=FF0000,00FF00,0000FF&chs=200x125&chd=s:FOE,THE,Bar&chxt=x,y&chxl=1:|Dec|Nov|Oct|0:||20K||60K||100K|') -%>
|
||||
</p>
|
||||
<p>
|
||||
Widget properties:
|
||||
<table>
|
||||
<tr>
|
||||
<td>max:</td>
|
||||
<td><%= widget_properties['max'] -%></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>param1:</td>
|
||||
<td><%= widget_properties['param1'] -%></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>param2:</td>
|
||||
<td><%= widget_properties['param2'] -%></td>
|
||||
</tr>
|
||||
</table>
|
||||
</p>
|
||||
</div>
|
Loading…
Reference in New Issue
Block a user