install: true | install: true | ||||
script: ./travis.sh | script: ./travis.sh | ||||
env: | |||||
- TESTS=CI | |||||
- TESTS=IT-DEV | |||||
matrix: | |||||
fast_finish: true | |||||
cache: | cache: | ||||
directories: | directories: | ||||
- '$HOME/.m2/repository' | - '$HOME/.m2/repository' | ||||
notifications: | |||||
email: false |
<?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.sonarsource.parent</groupId> | |||||
<artifactId>parent</artifactId> | |||||
<version>23</version> | |||||
<relativePath /> | |||||
</parent> | |||||
<groupId>com.sonarsource.it</groupId> | |||||
<artifactId>it-sonar-runner</artifactId> | |||||
<version>1.0-SNAPSHOT</version> | |||||
<name>SonarSource :: IT :: SonarQube Runner</name> | |||||
<inceptionYear>2009</inceptionYear> | |||||
<organization> | |||||
<name>SonarSource</name> | |||||
<url>http://www.sonarsource.com</url> | |||||
</organization> | |||||
<properties> | |||||
<sonar.buildVersion>3.7</sonar.buildVersion> | |||||
<surefire.argLine>-server</surefire.argLine> | |||||
<!-- following properties must be set in command-line : sonar.runtimeVersion and sonarRunner.version --> | |||||
</properties> | |||||
<dependencies> | |||||
<dependency> | |||||
<groupId>com.sonarsource.orchestrator</groupId> | |||||
<artifactId>sonar-orchestrator</artifactId> | |||||
<version>3.3-SNAPSHOT</version> | |||||
</dependency> | |||||
<dependency> | |||||
<groupId>junit</groupId> | |||||
<artifactId>junit</artifactId> | |||||
<version>4.11</version> | |||||
<scope>test</scope> | |||||
</dependency> | |||||
<dependency> | |||||
<groupId>org.codehaus.sonar</groupId> | |||||
<artifactId>sonar-ws-client</artifactId> | |||||
<version>${sonar.buildVersion}</version> | |||||
<scope>test</scope> | |||||
</dependency> | |||||
<dependency> | |||||
<groupId>org.easytesting</groupId> | |||||
<artifactId>fest-assert</artifactId> | |||||
<version>1.4</version> | |||||
<scope>test</scope> | |||||
</dependency> | |||||
</dependencies> | |||||
<build> | |||||
<pluginManagement> | |||||
<plugins> | |||||
<plugin> | |||||
<groupId>org.apache.maven.plugins</groupId> | |||||
<artifactId>maven-surefire-plugin</artifactId> | |||||
<configuration> | |||||
<includes> | |||||
<include>**/SonarRunnerTestSuite.java</include> | |||||
</includes> | |||||
</configuration> | |||||
</plugin> | |||||
</plugins> | |||||
</pluginManagement> | |||||
</build> | |||||
</project> |
sonar.projectKey=bad-source-dirs | |||||
sonar.projectName=Bad Source Dirs | |||||
sonar.projectDescription=Bad Source Dirs | |||||
sonar.projectVersion=1.0 | |||||
sonar.sources=src,bad |
public class Hello { | |||||
public void hello() { | |||||
int i=356; | |||||
if (true) i=5658; | |||||
} | |||||
} |
public class Hello { | |||||
public void hello() { | |||||
int i=356; | |||||
if (true) i=5658; | |||||
} | |||||
} |
# Note that the format of project key is still groupId:artifactId in order to support test with sonar 2.6. | |||||
sonar.projectKey=java:basedir-with-source | |||||
sonar.projectName=Basedir with source | |||||
sonar.projectDescription=The base directory contains sources (see the parameter 'sources') | |||||
sonar.projectVersion=1.0 | |||||
sonar.sources=. |
<?xml version="1.0" encoding="UTF-8"?> | |||||
<!-- Generated by SonarQube --> | |||||
<FindBugsFilter> | |||||
<Match> | |||||
<Bug pattern="DM_EXIT"/> | |||||
</Match> | |||||
</FindBugsFilter> |
<?xml version="1.0" encoding="UTF-8"?> | |||||
<BugCollection version="3.0.1" sequence="0" timestamp="1432107278000" analysisTimestamp="1437046750473" release=""> | |||||
<Project> | |||||
<Jar>/home/duartem/git/sonar-tests-core/it-sonar-runner/projects/java-bytecode/src/HasFindbugsViolation.java</Jar> | |||||
<Jar>/home/duartem/git/sonar-tests-core/it-sonar-runner/projects/java-bytecode/build/classes/HasFindbugsViolation.class</Jar> | |||||
<AuxClasspathEntry>/home/duartem/git/sonar-tests-core/it-sonar-runner/projects/java-bytecode/build/classes</AuxClasspathEntry> | |||||
<AuxClasspathEntry>/home/duartem/git/sonar-tests-core/it-sonar-runner/projects/java-bytecode/lib/deprecated.jar</AuxClasspathEntry> | |||||
<AuxClasspathEntry>/home/duartem/git/sonar-tests-core/it-sonar-runner/projects/java-bytecode/.sonar/findbugs/annotations.jar</AuxClasspathEntry> | |||||
<AuxClasspathEntry>/home/duartem/git/sonar-tests-core/it-sonar-runner/projects/java-bytecode/.sonar/findbugs/jsr305.jar</AuxClasspathEntry> | |||||
<WrkDir>/home/duartem/git/sonar-tests-core/it-sonar-runner/projects/java-bytecode/.sonar</WrkDir> | |||||
</Project> | |||||
<BugInstance type="DM_EXIT" priority="2" rank="16" abbrev="Dm" category="BAD_PRACTICE" instanceHash="fc6ac81278eca1b0ea92d10f13e0a9e9" instanceOccurrenceNum="0" instanceOccurrenceMax="0" cweid="382"> | |||||
<ShortMessage>Method invokes System.exit(...)</ShortMessage> | |||||
<LongMessage>HasFindbugsViolation.use() invokes System.exit(...), which shuts down the entire virtual machine</LongMessage> | |||||
<Class classname="HasFindbugsViolation" primary="true"> | |||||
<SourceLine classname="HasFindbugsViolation" start="1" end="12" sourcefile="HasFindbugsViolation.java" sourcepath="HasFindbugsViolation.java"> | |||||
<Message>At HasFindbugsViolation.java:[lines 1-12]</Message> | |||||
</SourceLine> | |||||
<Message>In class HasFindbugsViolation</Message> | |||||
</Class> | |||||
<Method classname="HasFindbugsViolation" name="use" signature="()V" isStatic="false" primary="true"> | |||||
<SourceLine classname="HasFindbugsViolation" start="6" end="8" startBytecode="0" endBytecode="65" sourcefile="HasFindbugsViolation.java" sourcepath="HasFindbugsViolation.java"/> | |||||
<Message>In method HasFindbugsViolation.use()</Message> | |||||
</Method> | |||||
<SourceLine classname="HasFindbugsViolation" primary="true" start="7" end="7" startBytecode="12" endBytecode="12" sourcefile="HasFindbugsViolation.java" sourcepath="HasFindbugsViolation.java"> | |||||
<Message>At HasFindbugsViolation.java:[line 7]</Message> | |||||
</SourceLine> | |||||
</BugInstance> | |||||
<BugCategory category="BAD_PRACTICE"> | |||||
<Description>Bad practice</Description> | |||||
</BugCategory> | |||||
<BugPattern type="DM_EXIT" abbrev="Dm" category="BAD_PRACTICE" cweid="382"> | |||||
<ShortDescription>Method invokes System.exit(...)</ShortDescription> | |||||
<Details><![CDATA[ | |||||
<p> Invoking System.exit shuts down the entire Java virtual machine. This | |||||
should only been done when it is appropriate. Such calls make it | |||||
hard or impossible for your code to be invoked by other code. | |||||
Consider throwing a RuntimeException instead.</p> | |||||
]]></Details> | |||||
</BugPattern> | |||||
<BugCode abbrev="Dm"> | |||||
<Description>Dubious method used</Description> | |||||
</BugCode> | |||||
<Errors errors="0" missingClasses="0"></Errors> | |||||
<FindBugsSummary timestamp="Wed, 20 May 2015 09:34:38 +0200" total_classes="1" referenced_classes="13" total_bugs="1" total_size="11" num_packages="1" java_version="1.7.0_79" vm_version="24.79-b02" cpu_seconds="3.30" clock_seconds="1.10" peak_mbytes="227.75" alloc_mbytes="3538.00" gc_seconds="0.02" priority_2="1"> | |||||
<FileStats path="HasFindbugsViolation.java" bugCount="1" size="11" bugHash="74a612ed42a469c4b358a80c33515967"/> | |||||
<PackageStats package="" total_bugs="1" total_types="1" total_size="11" priority_2="1"> | |||||
<ClassStats class="HasFindbugsViolation" sourceFile="HasFindbugsViolation.java" interface="false" size="11" bugs="1" priority_2="1"/> | |||||
</PackageStats> | |||||
<FindBugsProfile> | |||||
<ClassProfile name="edu.umd.cs.findbugs.classfile.engine.ClassInfoAnalysisEngine" totalMilliseconds="224" invocations="320" avgMicrosecondsPerInvocation="700" maxMicrosecondsPerInvocation="17955" standardDeviationMircosecondsPerInvocation="1606"/> | |||||
<ClassProfile name="edu.umd.cs.findbugs.detect.FieldItemSummary" totalMilliseconds="67" invocations="13" avgMicrosecondsPerInvocation="5161" maxMicrosecondsPerInvocation="13026" standardDeviationMircosecondsPerInvocation="5212"/> | |||||
<ClassProfile name="edu.umd.cs.findbugs.OpcodeStack$JumpInfoFactory" totalMilliseconds="57" invocations="56" avgMicrosecondsPerInvocation="1018" maxMicrosecondsPerInvocation="4755" standardDeviationMircosecondsPerInvocation="939"/> | |||||
<ClassProfile name="edu.umd.cs.findbugs.detect.FindNoSideEffectMethods" totalMilliseconds="41" invocations="13" avgMicrosecondsPerInvocation="3202" maxMicrosecondsPerInvocation="12613" standardDeviationMircosecondsPerInvocation="3864"/> | |||||
<ClassProfile name="edu.umd.cs.findbugs.util.TopologicalSort" totalMilliseconds="36" invocations="288" avgMicrosecondsPerInvocation="127" maxMicrosecondsPerInvocation="1297" standardDeviationMircosecondsPerInvocation="215"/> | |||||
<ClassProfile name="edu.umd.cs.findbugs.classfile.engine.ClassDataAnalysisEngine" totalMilliseconds="34" invocations="321" avgMicrosecondsPerInvocation="105" maxMicrosecondsPerInvocation="458" standardDeviationMircosecondsPerInvocation="52"/> | |||||
<ClassProfile name="edu.umd.cs.findbugs.classfile.engine.bcel.MethodGenFactory" totalMilliseconds="28" invocations="3" avgMicrosecondsPerInvocation="9462" maxMicrosecondsPerInvocation="27862" standardDeviationMircosecondsPerInvocation="13010"/> | |||||
<ClassProfile name="edu.umd.cs.findbugs.classfile.engine.bcel.JavaClassAnalysisEngine" totalMilliseconds="25" invocations="28" avgMicrosecondsPerInvocation="925" maxMicrosecondsPerInvocation="11951" standardDeviationMircosecondsPerInvocation="2278"/> | |||||
<ClassProfile name="edu.umd.cs.findbugs.detect.NoteDirectlyRelevantTypeQualifiers" totalMilliseconds="23" invocations="13" avgMicrosecondsPerInvocation="1779" maxMicrosecondsPerInvocation="5478" standardDeviationMircosecondsPerInvocation="1779"/> | |||||
<ClassProfile name="edu.umd.cs.findbugs.detect.FunctionsThatMightBeMistakenForProcedures" totalMilliseconds="22" invocations="13" avgMicrosecondsPerInvocation="1761" maxMicrosecondsPerInvocation="5446" standardDeviationMircosecondsPerInvocation="1973"/> | |||||
<ClassProfile name="edu.umd.cs.findbugs.detect.BuildStringPassthruGraph" totalMilliseconds="17" invocations="13" avgMicrosecondsPerInvocation="1358" maxMicrosecondsPerInvocation="3601" standardDeviationMircosecondsPerInvocation="1349"/> | |||||
</FindBugsProfile> | |||||
</FindBugsSummary> | |||||
<ClassFeatures></ClassFeatures> | |||||
<History></History> | |||||
</BugCollection> |
<?xml version="1.0" encoding="UTF-8"?> | |||||
<project name="Java Bytecode" default="all" basedir="." xmlns:sonar="antlib:org.sonar.ant"> | |||||
<property name="lib.dir" value="../ant-libs"/> | |||||
<property name="build.dir" value="build"/> | |||||
<property name="classes.dir" value="${build.dir}/classes"/> | |||||
<path id="classpath"> | |||||
<fileset dir="./lib" includes="*.jar" /> | |||||
</path> | |||||
<target name="clean" description="Remove all files created by the build process."> | |||||
<delete dir="${build.dir}" /> | |||||
</target> | |||||
<target name="init"> | |||||
<mkdir dir="${build.dir}" /> | |||||
<mkdir dir="${classes.dir}" /> | |||||
</target> | |||||
<target name="compile" depends="init"> | |||||
<javac destdir="${classes.dir}" classpathref="classpath" fork="true" debug="true" includeAntRuntime="false"> | |||||
<src path="src"/> | |||||
</javac> | |||||
</target> | |||||
<target name="all" | |||||
depends="clean,compile" /> | |||||
</project> |
# Note that the format of project key is still groupId:artifactId in order to support test with sonar 2.6. | |||||
sonar.projectKey=java:bytecode | |||||
sonar.projectName=Java Bytecode Sample | |||||
sonar.projectVersion=1.0 | |||||
sonar.profile=With Findbugs | |||||
sonar.sources=src | |||||
sonar.binaries=build/classes | |||||
sonar.libraries=lib/*.jar |
public class HasFindbugsViolation { | |||||
private String field; | |||||
public void use() { | |||||
new DeprecatedExample().deprecatedMethod(); // violation of squid rule: CallToDeprecatedMethod | |||||
System.exit(33); // violation on findbugs rule: DM_EXIT | |||||
} | |||||
public void useFieldForLcom4() { | |||||
System.out.println(field); | |||||
} | |||||
} |
# Note that the format of project key is still groupId:artifactId in order to support test with sonar 2.6. | |||||
sonar.projectKey=java:sample | |||||
sonar.projectName=Java Sample, with comma | |||||
sonar.projectDescription=This is a Java sample | |||||
sonar.projectVersion=1.2.3 | |||||
sonar.sources=src |
package basic; | |||||
public class Hello { | |||||
public void hello() { | |||||
int i=356; | |||||
if (true) i=5658; | |||||
} | |||||
} |
package basic; | |||||
public final class World { | |||||
public void world() { | |||||
System.out.println("hello world"); | |||||
} | |||||
} |
public class Hello { | |||||
} |
sonar.projectName=Module 1 | |||||
sonar.projectBaseDir=.. |
public class Hello { | |||||
} |
sonar.projectName=Module 2 | |||||
sonar.projectBaseDir=.. |
sonar.projectKey=using-config-file-prop | |||||
sonar.projectName=Advanced use case - mostly used by the Ant task | |||||
sonar.projectVersion=1.2.3 | |||||
sonar.sources=src | |||||
sonar.modules=module1,module2 | |||||
module1.sonar.projectConfigFile=module1/temp/generated-sonar-project.properties | |||||
module2.sonar.projectConfigFile=module2/temp/generated-sonar-project.properties |
public class Hello { | |||||
} |
public class Hello { | |||||
} |
sonar.projectKey=deep-path-for-modules | |||||
sonar.projectName=Project with deep path for modules | |||||
sonar.projectVersion=1.2.3 | |||||
sonar.sources=src | |||||
sonar.modules=mod1,mod2 | |||||
mod1.sonar.projectBaseDir=modules/module1 | |||||
mod1.sonar.projectName=Module 1 | |||||
mod2.sonar.projectBaseDir=modules/module2 | |||||
mod2.sonar.projectName=Module 2 |
public class Hello { | |||||
} |
public class Hello { | |||||
} |
sonar.projectKey=module-path-with-space | |||||
sonar.projectName=Project with module path that contain spaces | |||||
sonar.projectVersion=1.2.3 | |||||
sonar.sources=src | |||||
sonar.modules=module1,module2 | |||||
# module1 and module2 are located in a path that differs from their id AND that contains a space | |||||
module1.sonar.projectName=Module 1 | |||||
module1.sonar.projectBaseDir=my module 1 | |||||
module2.sonar.projectName=Module 2 | |||||
module2.sonar.projectBaseDir=my module 2 |
public class Hello { | |||||
} |
sonar.projectKey=module2-new-key | |||||
sonar.projectName=Module 2 | |||||
sonar.projectDescription=Description of module 2 | |||||
sonar.sources=src2 |
public class Hello { | |||||
} |
sonar.projectKey=overwriting-parent-properties | |||||
sonar.projectName=Project with modules that overwrite properties | |||||
sonar.projectVersion=1.2.3 | |||||
sonar.projectDescription=Description of root project | |||||
sonar.sources=src | |||||
sonar.modules=module1,module2 | |||||
# For module 1, we overwrite properties here | |||||
module1.sonar.projectKey=module1-new-key | |||||
module1.sonar.projectName=Module 1 | |||||
module1.sonar.projectDescription=Description of module 1 | |||||
module1.sonar.sources=src1 | |||||
# For module 2, we do it in the "sonar-project.properties" defined in the module |
public class Hello { | |||||
} |
public class Hello { | |||||
} |
sonar.projectKey=unexisting-base-dir | |||||
sonar.projectName=Project with unexisting base directory for module | |||||
sonar.projectVersion=1.2.3 | |||||
sonar.sources=src | |||||
sonar.modules=module1,module3 | |||||
module1.sonar.projectName=Module 1 | |||||
module3.sonar.projectName=Module 3 |
public class Hello { | |||||
} |
File to be sure that SVN keeps this "empty" directory |
public class Hello { | |||||
} |
sonar.projectName=Module 2 | |||||
sonar.projectBaseDir=.. |
sonar.projectKey=unexisting-config-file | |||||
sonar.projectName=Project using an unexisting config file | |||||
sonar.projectVersion=1.2.3 | |||||
sonar.sources=src | |||||
sonar.modules=module1,module2 | |||||
module1.sonar.projectConfigFile=module1/temp/generated-sonar-project.properties | |||||
module2.sonar.projectConfigFile=module2/temp/generated-sonar-project.properties |
sonar.projectKey=multi-language | |||||
sonar.projectName=Simplest multi-language project | |||||
sonar.projectVersion=1.2.3 | |||||
sonar.modules=java-module,js-module | |||||
java-module.sonar.language=java | |||||
java-module.sonar.projectBaseDir=. | |||||
java-module.sonar.sources=src/main/java | |||||
js-module.sonar.language=js | |||||
js-module.sonar.projectBaseDir=. | |||||
js-module.sonar.sources=src/main/js |
public class Hello { | |||||
} |
function hello() { | |||||
alert("Hello World"); | |||||
} |
# no need to set the "sonar.projectKey": it defaults to the module ID ('module1') | |||||
# no need to set the "sonar.projectName": it defaults to the module ID ('module1') |
public class Hello { | |||||
} |
# here, we overwrite "sonar.projectKey" and "sonar.projectName" for 'module2' | |||||
sonar.projectKey=overridden-key-for-module2 | |||||
sonar.projectName=Module 2 |
public class Hello { | |||||
} |
sonar.projectKey=simplest-with-props-each-module | |||||
sonar.projectName=Simplest multi-module project with properties set on each module | |||||
sonar.projectVersion=1.2.3 | |||||
sonar.sources=src | |||||
sonar.modules=module1,module2 |
The root module contains a src folder but it will not be analysed (SONARPLUGINS-2295) and a warning will be displayed. |
public class Hello { | |||||
} |
public class Hello { | |||||
} |
sonar.projectKey=simplest-with-props-on-root | |||||
sonar.projectName=Simplest multi-module project with all properties set on the root project | |||||
sonar.projectVersion=1.2.3 | |||||
sonar.sources=src | |||||
sonar.modules=module1,module2 | |||||
# no need to set the "sonar.projectBaseDir": it also defaults to <current_dir>/<module_ID> | |||||
# no need to set the "sonar.projectKey": it defaults to the module ID ('module1') | |||||
# no need to set the "sonar.projectName": it defaults to the module ID ('module1') |
sonar.projectKey=override-working-dir | |||||
sonar.projectName=Override working dir | |||||
sonar.projectVersion=1.0-SNAPSHOT | |||||
sonar.sources=src |
public class Hello { | |||||
public void hello() { | |||||
int i=356; | |||||
if (true) i=5658; | |||||
} | |||||
} |
sonar.projectKey=using-deprecated-props | |||||
sonar.projectName=Deprecated Props | |||||
sonar.projectVersion=1.2.3 | |||||
sources=src | |||||
tests=tests | |||||
binaries=build | |||||
libraries=lib/*.jar |
public class Hello { | |||||
} |
public class HelloTest { | |||||
} |
/* | |||||
* SonarSource :: IT :: SonarQube Runner | |||||
* Copyright (C) 2009 SonarSource | |||||
* sonarqube@googlegroups.com | |||||
* | |||||
* This program is free software; you can redistribute it and/or | |||||
* modify it under the terms of the GNU Lesser General Public | |||||
* License as published by the Free Software Foundation; either | |||||
* version 3 of the License, or (at your option) any later version. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||||
* Lesser General Public License for more details. | |||||
* | |||||
* You should have received a copy of the GNU Lesser General Public | |||||
* License along with this program; if not, write to the Free Software | |||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 | |||||
*/ | |||||
package com.sonar.runner.it; | |||||
import com.sonar.orchestrator.build.BuildFailureException; | |||||
import com.sonar.orchestrator.locator.ResourceLocation; | |||||
import com.sonar.orchestrator.build.BuildResult; | |||||
import com.sonar.orchestrator.build.SonarRunner; | |||||
import org.junit.Test; | |||||
import java.io.File; | |||||
import static org.junit.Assert.*; | |||||
import static org.junit.Assume.assumeTrue; | |||||
public class CacheTest extends RunnerTestCase { | |||||
@Test | |||||
public void testOffline() { | |||||
assumeTrue(orchestrator.getServer().version().isGreaterThanOrEquals("5.2")); | |||||
orchestrator.getServer().restoreProfile(ResourceLocation.create("/sonar-way-profile.xml")); | |||||
SonarRunner build = createRunner(true); | |||||
BuildResult result = orchestrator.executeBuild(build); | |||||
stopServer(); | |||||
build = createRunner(false); | |||||
try { | |||||
result = orchestrator.executeBuild(build, false); | |||||
} catch (BuildFailureException e) { | |||||
// expected | |||||
} | |||||
build = createRunner(true); | |||||
result = orchestrator.executeBuild(build, false); | |||||
assertTrue(result.isSuccess()); | |||||
} | |||||
private SonarRunner createRunner(boolean enableOffline) { | |||||
SonarRunner runner = newRunner(new File("projects/java-sample")) | |||||
.setProperty("sonar.analysis.mode", "preview") | |||||
.setProfile("sonar-way"); | |||||
if (enableOffline) { | |||||
runner.setProperty("sonar.enableOffline", "true"); | |||||
} | |||||
return runner; | |||||
} | |||||
} |
/* | |||||
* SonarSource :: IT :: SonarQube Runner | |||||
* Copyright (C) 2009 SonarSource | |||||
* sonarqube@googlegroups.com | |||||
* | |||||
* This program is free software; you can redistribute it and/or | |||||
* modify it under the terms of the GNU Lesser General Public | |||||
* License as published by the Free Software Foundation; either | |||||
* version 3 of the License, or (at your option) any later version. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||||
* Lesser General Public License for more details. | |||||
* | |||||
* You should have received a copy of the GNU Lesser General Public | |||||
* License along with this program; if not, write to the Free Software | |||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 | |||||
*/ | |||||
package com.sonar.runner.it; | |||||
import com.sonar.orchestrator.build.BuildResult; | |||||
import com.sonar.orchestrator.build.SonarRunner; | |||||
import com.sonar.orchestrator.locator.ResourceLocation; | |||||
import org.junit.Rule; | |||||
import org.junit.Test; | |||||
import org.junit.rules.TemporaryFolder; | |||||
import org.sonar.wsclient.issue.Issue; | |||||
import org.sonar.wsclient.issue.IssueQuery; | |||||
import org.sonar.wsclient.services.Resource; | |||||
import org.sonar.wsclient.services.ResourceQuery; | |||||
import java.io.File; | |||||
import java.io.IOException; | |||||
import java.util.List; | |||||
import static org.fest.assertions.Assertions.assertThat; | |||||
import static org.junit.Assume.assumeTrue; | |||||
public class JavaTest extends RunnerTestCase { | |||||
@Rule | |||||
public TemporaryFolder temp = new TemporaryFolder(); | |||||
/** | |||||
* No bytecode, only sources | |||||
*/ | |||||
@Test | |||||
public void scan_java_sources() { | |||||
orchestrator.getServer().restoreProfile(ResourceLocation.create("/sonar-way-profile.xml")); | |||||
SonarRunner build = newRunner(new File("projects/java-sample")) | |||||
.setProperty("sonar.verbose", "true") | |||||
.addArguments("-e", "-X") | |||||
.setProfile("sonar-way"); | |||||
// SONARPLUGINS-3061 | |||||
// Add a trailing slash | |||||
build.setProperty("sonar.host.url", orchestrator.getServer().getUrl() + "/"); | |||||
orchestrator.executeBuild(build); | |||||
Resource project = orchestrator.getServer().getWsClient().find(new ResourceQuery("java:sample").setMetrics("files", "ncloc", "classes", "lcom4", "violations")); | |||||
// SONARPLUGINS-2399 | |||||
assertThat(project.getName()).isEqualTo("Java Sample, with comma"); | |||||
assertThat(project.getDescription()).isEqualTo("This is a Java sample"); | |||||
assertThat(project.getVersion()).isEqualTo("1.2.3"); | |||||
if (!orchestrator.getServer().version().isGreaterThanOrEquals("4.2")) { | |||||
assertThat(project.getLanguage()).isEqualTo("java"); | |||||
} | |||||
assertThat(project.getMeasureIntValue("files")).isEqualTo(2); | |||||
assertThat(project.getMeasureIntValue("classes")).isEqualTo(2); | |||||
assertThat(project.getMeasureIntValue("ncloc")).isGreaterThan(10); | |||||
assertThat(project.getMeasureIntValue("lcom4")).isNull(); // no bytecode | |||||
if (orchestrator.getServer().version().isGreaterThanOrEquals("3.7")) { | |||||
// the squid rules enabled in sonar-way-profile do not exist in SQ 3.0 | |||||
assertThat(project.getMeasureIntValue("violations")).isGreaterThan(0); | |||||
} | |||||
Resource file = orchestrator.getServer().getWsClient() | |||||
.find(new ResourceQuery(helloFileKey()).setMetrics("files", "ncloc", "classes", "lcom4", "violations")); | |||||
if (orchestrator.getServer().version().isGreaterThanOrEquals("4.2")) { | |||||
assertThat(file.getName()).isEqualTo("Hello.java"); | |||||
} else { | |||||
assertThat(file.getName()).isEqualTo("Hello"); | |||||
assertThat(file.getMeasureIntValue("lcom4")).isNull(); // no bytecode | |||||
} | |||||
assertThat(file.getMeasureIntValue("ncloc")).isEqualTo(7); | |||||
if (orchestrator.getServer().version().isGreaterThanOrEquals("3.7")) { | |||||
// the squid rules enabled in sonar-way-profile do not exist in SQ 3.0 | |||||
assertThat(file.getMeasureIntValue("violations")).isGreaterThan(0); | |||||
} | |||||
} | |||||
@Test | |||||
public void scan_java_sources_and_bytecode() { | |||||
orchestrator.getServer().restoreProfile(ResourceLocation.create("/requires-bytecode-profile.xml")); | |||||
SonarRunner build = newRunner(new File("projects/java-bytecode")).setProfile("requires-bytecode"); | |||||
orchestrator.executeBuild(build); | |||||
Resource project = orchestrator.getServer().getWsClient().find(new ResourceQuery("java:bytecode").setMetrics("lcom4", "violations")); | |||||
assertThat(project.getName()).isEqualTo("Java Bytecode Sample"); | |||||
if (!orchestrator.getServer().version().isGreaterThanOrEquals("4.1")) { | |||||
// SONAR-4853 LCOM4 is no more computed on SQ 4.1 | |||||
assertThat(project.getMeasureIntValue("lcom4")).isGreaterThanOrEqualTo(1); | |||||
} | |||||
// the squid rules enabled in sonar-way-profile do not exist in SQ 3.0 | |||||
assertThat(project.getMeasureIntValue("violations")).isGreaterThan(0); | |||||
Resource file = orchestrator.getServer().getWsClient().find(new ResourceQuery(findbugsFileKey()).setMetrics("lcom4", "violations")); | |||||
assertThat(file.getMeasureIntValue("violations")).isGreaterThan(0); | |||||
// findbugs is executed on bytecode | |||||
List<Issue> issues = orchestrator.getServer().wsClient().issueClient().find(IssueQuery.create().componentRoots("java:bytecode").rules("findbugs:DM_EXIT")).list(); | |||||
assertThat(issues).hasSize(1); | |||||
assertThat(issues.get(0).ruleKey()).isEqualTo("findbugs:DM_EXIT"); | |||||
// Squid performs analysis of dependencies | |||||
issues = orchestrator.getServer().wsClient().issueClient().find(IssueQuery.create().componentRoots("java:bytecode").rules("squid:CallToDeprecatedMethod")).list(); | |||||
assertThat(issues).hasSize(1); | |||||
assertThat(issues.get(0).ruleKey()).isEqualTo("squid:CallToDeprecatedMethod"); | |||||
} | |||||
@Test | |||||
public void basedir_contains_java_sources() { | |||||
orchestrator.getServer().restoreProfile(ResourceLocation.create("/sonar-way-profile.xml")); | |||||
SonarRunner build = newRunner(new File("projects/basedir-with-source")).setProfile("sonar-way"); | |||||
orchestrator.executeBuild(build); | |||||
Resource project = orchestrator.getServer().getWsClient().find(new ResourceQuery("java:basedir-with-source").setMetrics("files", "ncloc")); | |||||
assertThat(project.getMeasureIntValue("files")).isEqualTo(1); | |||||
assertThat(project.getMeasureIntValue("ncloc")).isGreaterThan(1); | |||||
} | |||||
/** | |||||
* Replace the maven format groupId:artifactId by a single key | |||||
*/ | |||||
@Test | |||||
public void should_support_simple_project_keys() { | |||||
orchestrator.getServer().restoreProfile(ResourceLocation.create("/sonar-way-profile.xml")); | |||||
SonarRunner build = newRunner(new File("projects/java-sample")) | |||||
.setProjectKey("SAMPLE") | |||||
.setProfile("sonar-way"); | |||||
orchestrator.executeBuild(build); | |||||
Resource project = orchestrator.getServer().getWsClient().find(new ResourceQuery("SAMPLE").setMetrics("files", "ncloc")); | |||||
assertThat(project.getMeasureIntValue("files")).isEqualTo(2); | |||||
assertThat(project.getMeasureIntValue("ncloc")).isGreaterThan(1); | |||||
} | |||||
/** | |||||
* SONARPLUGINS-1230 | |||||
*/ | |||||
@Test | |||||
public void should_override_working_dir_with_relative_path() { | |||||
SonarRunner build = newRunner(new File("projects/override-working-dir")) | |||||
.setProperty("sonar.working.directory", ".overridden-relative-sonar"); | |||||
orchestrator.executeBuild(build); | |||||
assertThat(new File("projects/override-working-dir/.sonar")).doesNotExist(); | |||||
assertThat(new File("projects/override-working-dir/.overridden-relative-sonar")).exists().isDirectory(); | |||||
} | |||||
/** | |||||
* SONARPLUGINS-1230 | |||||
*/ | |||||
@Test | |||||
public void should_override_working_dir_with_absolute_path() { | |||||
File projectHome = new File("projects/override-working-dir"); | |||||
SonarRunner build = newRunner(projectHome) | |||||
.setProperty("sonar.working.directory", new File(projectHome, ".overridden-absolute-sonar").getAbsolutePath()); | |||||
orchestrator.executeBuild(build); | |||||
assertThat(new File("projects/override-working-dir/.sonar")).doesNotExist(); | |||||
assertThat(new File("projects/override-working-dir/.overridden-absolute-sonar")).exists().isDirectory(); | |||||
} | |||||
/** | |||||
* SONARPLUGINS-1856 | |||||
*/ | |||||
@Test | |||||
public void should_fail_if_source_dir_does_not_exist() { | |||||
SonarRunner build = newRunner(new File("projects/bad-source-dirs")); | |||||
BuildResult result = orchestrator.executeBuildQuietly(build); | |||||
assertThat(result.getStatus()).isNotEqualTo(0); | |||||
// with the following message | |||||
assertThat(result.getLogs()).contains("The folder 'bad' does not exist for 'bad-source-dirs'"); | |||||
} | |||||
/** | |||||
* SONARPLUGINS-2203 | |||||
*/ | |||||
@Test | |||||
public void should_log_message_when_deprecated_properties_are_used() { | |||||
assumeTrue(!orchestrator.getServer().version().isGreaterThanOrEquals("4.3")); | |||||
SonarRunner build = newRunner(new File("projects/using-deprecated-props")); | |||||
BuildResult result = orchestrator.executeBuild(build); | |||||
String logs = result.getLogs(); | |||||
assertThat(logs).contains("/!\\ The 'sources' property is deprecated and is replaced by 'sonar.sources'. Don't forget to update your files."); | |||||
assertThat(logs).contains("/!\\ The 'tests' property is deprecated and is replaced by 'sonar.tests'. Don't forget to update your files."); | |||||
assertThat(logs).contains("/!\\ The 'binaries' property is deprecated and is replaced by 'sonar.binaries'. Don't forget to update your files."); | |||||
assertThat(logs).contains("/!\\ The 'libraries' property is deprecated and is replaced by 'sonar.libraries'. Don't forget to update your files."); | |||||
} | |||||
/** | |||||
* SONARPLUGINS-2256 | |||||
*/ | |||||
@Test | |||||
public void should_warn_when_analysis_is_platform_dependent() { | |||||
SonarRunner build = newRunner(new File("projects/java-sample")) | |||||
// ORCH-243 | |||||
.setSourceEncoding(""); | |||||
String log = orchestrator.executeBuild(build).getLogs(); | |||||
// Note: we can't really check the locale value and the charset because the ones used during the Sonar analysis may not be the ones | |||||
// used to launch the tests. But we can check that the analysis is platform dependent (i.e. "sonar.sourceEncoding" hasn't been set). | |||||
assertThat(log).contains("Default locale:"); | |||||
assertThat(log).contains(", source code encoding:"); | |||||
assertThat(log).contains("(analysis is platform dependent)"); | |||||
} | |||||
@Test | |||||
public void should_fail_if_unable_to_connect() { | |||||
SonarRunner build = newRunner(new File("projects/java-sample")) | |||||
.setProperty("sonar.host.url", "http://foo"); | |||||
BuildResult result = orchestrator.executeBuildQuietly(build); | |||||
// expect build failure | |||||
assertThat(result.getStatus()).isNotEqualTo(0); | |||||
// with the following message | |||||
assertThat(result.getLogs()).contains("ERROR: Sonar server 'http://foo' can not be reached"); | |||||
} | |||||
// SONARPLUGINS-3574 | |||||
@Test | |||||
public void run_from_external_location() throws IOException { | |||||
File tempDir = temp.newFolder(); | |||||
SonarRunner build = newRunner(tempDir) | |||||
.setProperty("sonar.projectBaseDir", new File("projects/java-sample").getAbsolutePath()) | |||||
.addArguments("-e"); | |||||
orchestrator.executeBuild(build); | |||||
Resource project = orchestrator.getServer().getWsClient().find(new ResourceQuery("java:sample").setMetrics("files", "ncloc", "classes", "lcom4", "violations")); | |||||
assertThat(project.getDescription()).isEqualTo("This is a Java sample"); | |||||
assertThat(project.getVersion()).isEqualTo("1.2.3"); | |||||
} | |||||
private String findbugsFileKey() { | |||||
if (orchestrator.getServer().version().isGreaterThanOrEquals("4.2")) { | |||||
return "java:bytecode:src/HasFindbugsViolation.java"; | |||||
} else { | |||||
return "java:bytecode:[default].HasFindbugsViolation"; | |||||
} | |||||
} | |||||
private String helloFileKey() { | |||||
if (orchestrator.getServer().version().isGreaterThanOrEquals("4.2")) { | |||||
return "java:sample:src/basic/Hello.java"; | |||||
} else { | |||||
return "java:sample:basic.Hello"; | |||||
} | |||||
} | |||||
} |
/* | |||||
* SonarSource :: IT :: SonarQube Runner | |||||
* Copyright (C) 2009 SonarSource | |||||
* sonarqube@googlegroups.com | |||||
* | |||||
* This program is free software; you can redistribute it and/or | |||||
* modify it under the terms of the GNU Lesser General Public | |||||
* License as published by the Free Software Foundation; either | |||||
* version 3 of the License, or (at your option) any later version. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||||
* Lesser General Public License for more details. | |||||
* | |||||
* You should have received a copy of the GNU Lesser General Public | |||||
* License along with this program; if not, write to the Free Software | |||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 | |||||
*/ | |||||
package com.sonar.runner.it; | |||||
import com.sonar.orchestrator.build.BuildResult; | |||||
import com.sonar.orchestrator.build.SonarRunner; | |||||
import org.junit.Test; | |||||
import org.sonar.wsclient.services.Resource; | |||||
import org.sonar.wsclient.services.ResourceQuery; | |||||
import java.io.File; | |||||
import static org.fest.assertions.Assertions.assertThat; | |||||
import static org.junit.Assume.assumeTrue; | |||||
public class MultimoduleTest extends RunnerTestCase { | |||||
/** | |||||
* SONARPLUGINS-2202 | |||||
*/ | |||||
@Test | |||||
public void test_simplest_with_props_on_root() { | |||||
SonarRunner build = newRunner(new File("projects/multi-module/simplest/simplest-with-props-on-root")); | |||||
orchestrator.executeBuild(build); | |||||
Resource rootProject = findResource("simplest-with-props-on-root"); | |||||
assertThat(rootProject.getName()).isEqualTo("Simplest multi-module project with all properties set on the root project"); | |||||
assertThat(rootProject.getVersion()).isEqualTo("1.2.3"); | |||||
// Verify that we have the modules | |||||
Resource module1 = findResource("simplest-with-props-on-root:module1"); | |||||
assertThat(module1.getName()).isEqualTo("module1"); | |||||
assertThat(module1.getVersion()).isEqualTo("1.2.3"); | |||||
Resource module2 = findResource("simplest-with-props-on-root:module2"); | |||||
assertThat(module2.getName()).isEqualTo("module2"); | |||||
assertThat(module2.getVersion()).isEqualTo("1.2.3"); | |||||
// And verify that the working directories are all located in the root folder | |||||
File workDir = new File("projects/multi-module/simplest/simplest-with-props-on-root/.sonar"); | |||||
assertThat(workDir).exists(); | |||||
assertThat(new File(workDir, "simplest-with-props-on-root_module1")).exists(); | |||||
assertThat(new File(workDir, "simplest-with-props-on-root_module2")).exists(); | |||||
assertThat(new File("projects/multi-module/simplest/simplest-with-props-on-root/module1/.sonar")).doesNotExist(); | |||||
assertThat(new File("projects/multi-module/simplest/simplest-with-props-on-root/module2/.sonar")).doesNotExist(); | |||||
} | |||||
/** | |||||
* SONARPLUGINS-2421 | |||||
*/ | |||||
@Test | |||||
public void test_multi_language_with_same_projectdir() { | |||||
SonarRunner build = newRunner(new File("projects/multi-module/multi-language")); | |||||
orchestrator.executeBuild(build); | |||||
Resource rootProject = findResource("multi-language"); | |||||
assertThat(rootProject.getName()).isEqualTo("Simplest multi-language project"); | |||||
assertThat(rootProject.getVersion()).isEqualTo("1.2.3"); | |||||
// Verify that we have the modules | |||||
Resource module1 = findResource("multi-language:java-module"); | |||||
assertThat(module1.getName()).isEqualTo("java-module"); | |||||
assertThat(module1.getVersion()).isEqualTo("1.2.3"); | |||||
Resource module2 = findResource("multi-language:js-module"); | |||||
assertThat(module2.getName()).isEqualTo("js-module"); | |||||
assertThat(module2.getVersion()).isEqualTo("1.2.3"); | |||||
} | |||||
/** | |||||
* SONARPLUGINS-2202 | |||||
*/ | |||||
@Test | |||||
public void test_simplest_with_props_on_each_module() { | |||||
SonarRunner build = newRunner(new File("projects/multi-module/simplest/simplest-with-props-on-each-module")); | |||||
orchestrator.executeBuild(build); | |||||
Resource rootProject = findResource("simplest-with-props-each-module"); | |||||
assertThat(rootProject.getName()).isEqualTo("Simplest multi-module project with properties set on each module"); | |||||
assertThat(rootProject.getVersion()).isEqualTo("1.2.3"); | |||||
// Verify that we have the modules | |||||
Resource module1 = findResource("simplest-with-props-each-module:module1"); | |||||
assertThat(module1.getName()).isEqualTo("module1"); | |||||
assertThat(module1.getVersion()).isEqualTo("1.2.3"); | |||||
Resource module2 = findResource("simplest-with-props-each-module:overridden-key-for-module2"); | |||||
assertThat(module2.getName()).isEqualTo("Module 2"); | |||||
assertThat(module2.getVersion()).isEqualTo("1.2.3"); | |||||
} | |||||
/** | |||||
* SONARPLUGINS-2295 | |||||
*/ | |||||
@Test | |||||
public void test_warning_when_source_folder_on_root_module() { | |||||
SonarRunner build = newRunner(new File("projects/multi-module/simplest/simplest-with-props-on-each-module")); | |||||
assertThat(orchestrator.executeBuild(build).getLogs()).contains("/!\\ A multi-module project can't have source folders"); | |||||
} | |||||
/** | |||||
* SONARPLUGINS-2202 | |||||
*/ | |||||
@Test | |||||
public void test_deep_path_for_modules() { | |||||
SonarRunner build = newRunner(new File("projects/multi-module/customization/deep-path-for-modules")); | |||||
orchestrator.executeBuild(build); | |||||
Resource rootProject = findResource("deep-path-for-modules"); | |||||
assertThat(rootProject.getName()).isEqualTo("Project with deep path for modules"); | |||||
assertThat(rootProject.getVersion()).isEqualTo("1.2.3"); | |||||
// Verify that we have the modules | |||||
Resource module1 = findResource("deep-path-for-modules:mod1"); | |||||
assertThat(module1.getName()).isEqualTo("Module 1"); | |||||
assertThat(module1.getVersion()).isEqualTo("1.2.3"); | |||||
Resource module2 = findResource("deep-path-for-modules:mod2"); | |||||
assertThat(module2.getName()).isEqualTo("Module 2"); | |||||
assertThat(module2.getVersion()).isEqualTo("1.2.3"); | |||||
} | |||||
/** | |||||
* SONARPLUGINS-2202 | |||||
*/ | |||||
@Test | |||||
public void test_module_path_with_space() { | |||||
SonarRunner build = newRunner(new File("projects/multi-module/customization/module-path-with-space")); | |||||
orchestrator.executeBuild(build); | |||||
Resource rootProject = findResource("module-path-with-space"); | |||||
assertThat(rootProject.getName()).isEqualTo("Project with module path that contain spaces"); | |||||
assertThat(rootProject.getVersion()).isEqualTo("1.2.3"); | |||||
// Verify that we have the modules | |||||
Resource module1 = findResource("module-path-with-space:module1"); | |||||
assertThat(module1.getName()).isEqualTo("Module 1"); | |||||
assertThat(module1.getVersion()).isEqualTo("1.2.3"); | |||||
Resource module2 = findResource("module-path-with-space:module2"); | |||||
assertThat(module2.getName()).isEqualTo("Module 2"); | |||||
assertThat(module2.getVersion()).isEqualTo("1.2.3"); | |||||
} | |||||
/** | |||||
* SONARPLUGINS-2202 | |||||
*/ | |||||
@Test | |||||
public void test_overwriting_parent_properties() { | |||||
SonarRunner build = newRunner(new File("projects/multi-module/customization/overwriting-parent-properties")); | |||||
orchestrator.executeBuild(build); | |||||
Resource rootProject = findResource("overwriting-parent-properties"); | |||||
assertThat(rootProject.getName()).isEqualTo("Project with modules that overwrite properties"); | |||||
assertThat(rootProject.getVersion()).isEqualTo("1.2.3"); | |||||
assertThat(rootProject.getDescription()).isEqualTo("Description of root project"); | |||||
// Verify that we have the modules | |||||
Resource module1 = findResource("overwriting-parent-properties:module1-new-key"); | |||||
assertThat(module1.getName()).isEqualTo("Module 1"); | |||||
assertThat(module1.getVersion()).isEqualTo("1.2.3"); | |||||
assertThat(module1.getDescription()).isEqualTo("Description of module 1"); | |||||
Resource module2 = findResource("overwriting-parent-properties:module2-new-key"); | |||||
assertThat(module2.getName()).isEqualTo("Module 2"); | |||||
assertThat(module2.getVersion()).isEqualTo("1.2.3"); | |||||
assertThat(module2.getDescription()).isEqualTo("Description of module 2"); | |||||
} | |||||
/** | |||||
* SONARPLUGINS-2202 | |||||
*/ | |||||
@Test | |||||
public void test_using_config_file_property() { | |||||
SonarRunner build = newRunner(new File("projects/multi-module/advanced/using-config-file-prop")); | |||||
orchestrator.executeBuild(build); | |||||
Resource rootProject = findResource("using-config-file-prop"); | |||||
assertThat(rootProject.getName()).isEqualTo("Advanced use case - mostly used by the Ant task"); | |||||
assertThat(rootProject.getVersion()).isEqualTo("1.2.3"); | |||||
// Verify that we have the modules | |||||
Resource module1 = findResource("using-config-file-prop:module1"); | |||||
assertThat(module1.getName()).isEqualTo("Module 1"); | |||||
assertThat(module1.getVersion()).isEqualTo("1.2.3"); | |||||
Resource module2 = findResource("using-config-file-prop:module2"); | |||||
assertThat(module2.getName()).isEqualTo("Module 2"); | |||||
assertThat(module2.getVersion()).isEqualTo("1.2.3"); | |||||
} | |||||
/** | |||||
* SONARPLUGINS-2202 | |||||
*/ | |||||
@Test | |||||
public void should_fail_if_unexisting_base_dir() { | |||||
SonarRunner build = newRunner(new File("projects/multi-module/failures/unexisting-base-dir")); | |||||
BuildResult result = orchestrator.executeBuildQuietly(build); | |||||
// expect build failure | |||||
assertThat(result.getStatus()).isNotEqualTo(0); | |||||
// with the following message | |||||
assertThat(result.getLogs()).contains("The base directory of the module 'module3' does not exist"); | |||||
} | |||||
/** | |||||
* SONARPLUGINS-2202 | |||||
*/ | |||||
@Test | |||||
public void should_fail_if_unexisting_config_file() { | |||||
SonarRunner build = newRunner(new File("projects/multi-module/failures/unexisting-config-file")); | |||||
BuildResult result = orchestrator.executeBuildQuietly(build); | |||||
// expect build failure | |||||
assertThat(result.getStatus()).isNotEqualTo(0); | |||||
// with the following message | |||||
assertThat(result.getLogs()).contains("The properties file of the module 'module1' does not exist"); | |||||
} | |||||
private Resource findResource(String resourceKey) { | |||||
return orchestrator.getServer().getWsClient().find(new ResourceQuery(resourceKey)); | |||||
} | |||||
} |
/* | |||||
* SonarSource :: IT :: SonarQube Runner | |||||
* Copyright (C) 2009 SonarSource | |||||
* sonarqube@googlegroups.com | |||||
* | |||||
* This program is free software; you can redistribute it and/or | |||||
* modify it under the terms of the GNU Lesser General Public | |||||
* License as published by the Free Software Foundation; either | |||||
* version 3 of the License, or (at your option) any later version. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||||
* Lesser General Public License for more details. | |||||
* | |||||
* You should have received a copy of the GNU Lesser General Public | |||||
* License along with this program; if not, write to the Free Software | |||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 | |||||
*/ | |||||
package com.sonar.runner.it; | |||||
import com.sonar.orchestrator.version.Version; | |||||
import com.sonar.orchestrator.Orchestrator; | |||||
import com.sonar.orchestrator.OrchestratorBuilder; | |||||
import com.sonar.orchestrator.build.SonarRunner; | |||||
import org.junit.AfterClass; | |||||
import org.junit.BeforeClass; | |||||
import org.junit.Rule; | |||||
import org.junit.rules.ExpectedException; | |||||
import java.io.File; | |||||
public abstract class RunnerTestCase { | |||||
@Rule | |||||
public ExpectedException thrown = ExpectedException.none(); | |||||
public static Orchestrator orchestrator = null; | |||||
@BeforeClass | |||||
public static void startServer() { | |||||
OrchestratorBuilder builder = Orchestrator.builderEnv() | |||||
// TODO Java projects should be replaced by Xoo projects | |||||
.setOrchestratorProperty("javaVersion", "LATEST_RELEASE") | |||||
.addPlugin("java") | |||||
.setOrchestratorProperty("findbugsVersion", "LATEST_RELEASE") | |||||
.addPlugin("findbugs") | |||||
.setOrchestratorProperty("javascriptVersion", "LATEST_RELEASE") | |||||
.addPlugin("javascript"); | |||||
orchestrator = builder.build(); | |||||
orchestrator.start(); | |||||
} | |||||
@AfterClass | |||||
public static void stopServer() { | |||||
if (orchestrator != null) { | |||||
orchestrator.stop(); | |||||
} | |||||
} | |||||
SonarRunner newRunner(File baseDir, String... keyValueProperties) { | |||||
SonarRunner runner = SonarRunner.create(baseDir, keyValueProperties); | |||||
String runnerVersion = Version.create(orchestrator.getConfiguration().getString("sonarRunner.version")).toString(); | |||||
runner.setRunnerVersion(runnerVersion); | |||||
return runner; | |||||
} | |||||
} |
/* | |||||
* SonarSource :: IT :: SonarQube Runner | |||||
* Copyright (C) 2009 SonarSource | |||||
* sonarqube@googlegroups.com | |||||
* | |||||
* This program is free software; you can redistribute it and/or | |||||
* modify it under the terms of the GNU Lesser General Public | |||||
* License as published by the Free Software Foundation; either | |||||
* version 3 of the License, or (at your option) any later version. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||||
* Lesser General Public License for more details. | |||||
* | |||||
* You should have received a copy of the GNU Lesser General Public | |||||
* License along with this program; if not, write to the Free Software | |||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 | |||||
*/ | |||||
package com.sonar.runner.it; | |||||
import org.junit.runner.RunWith; | |||||
import org.junit.runners.Suite; | |||||
import org.junit.runners.Suite.SuiteClasses; | |||||
@RunWith(Suite.class) | |||||
@SuiteClasses({JavaTest.class, MultimoduleTest.class}) | |||||
public class SonarRunnerTestSuite { | |||||
} |
<?xml version="1.0" encoding="UTF-8"?><!-- Generated by Sonar --> | |||||
<profile> | |||||
<name>requires-bytecode</name> | |||||
<language>java</language> | |||||
<rules> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>CallToDeprecatedMethod</key> | |||||
<priority>MINOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>findbugs</repositoryKey> | |||||
<key>DM_EXIT</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
</rules> | |||||
</profile> |
<?xml version="1.0" encoding="UTF-8"?><!-- Generated by SonarQube --> | |||||
<profile> | |||||
<name>sonar-way</name> | |||||
<language>java</language> | |||||
<rules> | |||||
<rule> | |||||
<repositoryKey>common-java</repositoryKey> | |||||
<key>DuplicatedBlocks</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>common-java</repositoryKey> | |||||
<key>InsufficientBranchCoverage</key> | |||||
<priority>MAJOR</priority> | |||||
<parameters> | |||||
<parameter> | |||||
<key>minimumBranchCoverageRatio</key> | |||||
<value>65.0</value> | |||||
</parameter> | |||||
</parameters> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S00105</key> | |||||
<priority>MINOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>MethodCyclomaticComplexity</key> | |||||
<priority>MAJOR</priority> | |||||
<parameters> | |||||
<parameter> | |||||
<key>max</key> | |||||
<value>10</value> | |||||
</parameter> | |||||
</parameters> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>ClassCyclomaticComplexity</key> | |||||
<priority>MAJOR</priority> | |||||
<parameters> | |||||
<parameter> | |||||
<key>max</key> | |||||
<value>200</value> | |||||
</parameter> | |||||
</parameters> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>CommentedOutCodeLine</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S00108</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S00107</key> | |||||
<priority>MAJOR</priority> | |||||
<parameters> | |||||
<parameter> | |||||
<key>maximumMethodParameters</key> | |||||
<value>7</value> | |||||
</parameter> | |||||
</parameters> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S00112</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S00100</key> | |||||
<priority>MAJOR</priority> | |||||
<parameters> | |||||
<parameter> | |||||
<key>format</key> | |||||
<value>^[a-z][a-zA-Z0-9]*$</value> | |||||
</parameter> | |||||
</parameters> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S00101</key> | |||||
<priority>MAJOR</priority> | |||||
<parameters> | |||||
<parameter> | |||||
<key>format</key> | |||||
<value>^[A-Z][a-zA-Z0-9]*$</value> | |||||
</parameter> | |||||
</parameters> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S00114</key> | |||||
<priority>MAJOR</priority> | |||||
<parameters> | |||||
<parameter> | |||||
<key>format</key> | |||||
<value>^[A-Z][a-zA-Z0-9]*$</value> | |||||
</parameter> | |||||
</parameters> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S00115</key> | |||||
<priority>MAJOR</priority> | |||||
<parameters> | |||||
<parameter> | |||||
<key>format</key> | |||||
<value>^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$</value> | |||||
</parameter> | |||||
</parameters> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S00116</key> | |||||
<priority>MAJOR</priority> | |||||
<parameters> | |||||
<parameter> | |||||
<key>format</key> | |||||
<value>^[a-z][a-zA-Z0-9]*$</value> | |||||
</parameter> | |||||
</parameters> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S00117</key> | |||||
<priority>MAJOR</priority> | |||||
<parameters> | |||||
<parameter> | |||||
<key>format</key> | |||||
<value>^[a-z][a-zA-Z0-9]*$</value> | |||||
</parameter> | |||||
</parameters> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S00119</key> | |||||
<priority>MAJOR</priority> | |||||
<parameters> | |||||
<parameter> | |||||
<key>format</key> | |||||
<value>^[A-Z]$</value> | |||||
</parameter> | |||||
</parameters> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S00120</key> | |||||
<priority>MAJOR</priority> | |||||
<parameters> | |||||
<parameter> | |||||
<key>format</key> | |||||
<value>^[a-z]+(\.[a-z][a-z0-9]*)*$</value> | |||||
</parameter> | |||||
</parameters> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S00121</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S00122</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>RightCurlyBraceSameLineAsNextBlockCheck</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>RightCurlyBraceStartLineCheck</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>LeftCurlyBraceEndLineCheck</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>UselessParenthesesCheck</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>ObjectFinalizeCheck</key> | |||||
<priority>CRITICAL</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>ObjectFinalizeOverridenCheck</key> | |||||
<priority>CRITICAL</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>ObjectFinalizeOverridenCallsSuperFinalizeCheck</key> | |||||
<priority>BLOCKER</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>ClassVariableVisibilityCheck</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>ForLoopCounterChangedCheck</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>LabelsShouldNotBeUsedCheck</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>SwitchLastCaseIsDefaultCheck</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>EmptyStatementUsageCheck</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>ModifiersOrderCheck</key> | |||||
<priority>MINOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>AssignmentInSubExpressionCheck</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>StringEqualityComparisonCheck</key> | |||||
<priority>CRITICAL</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>TrailingCommentCheck</key> | |||||
<priority>MINOR</priority> | |||||
<parameters> | |||||
<parameter> | |||||
<key>legalCommentPattern</key> | |||||
<value>^\s*+[^\s]++$</value> | |||||
</parameter> | |||||
</parameters> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>UselessImportCheck</key> | |||||
<priority>MINOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>LowerCaseLongSuffixCheck</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>MissingDeprecatedCheck</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>HiddenFieldCheck</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1133</key> | |||||
<priority>INFO</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1134</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1135</key> | |||||
<priority>INFO</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1118</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1132</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1126</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1125</key> | |||||
<priority>MINOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1067</key> | |||||
<priority>MAJOR</priority> | |||||
<parameters> | |||||
<parameter> | |||||
<key>max</key> | |||||
<value>3</value> | |||||
</parameter> | |||||
</parameters> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1141</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1147</key> | |||||
<priority>CRITICAL</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1143</key> | |||||
<priority>BLOCKER</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1145</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1157</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1155</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1149</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1171</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1168</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1170</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1163</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S106</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1165</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1066</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S134</key> | |||||
<priority>MINOR</priority> | |||||
<parameters> | |||||
<parameter> | |||||
<key>max</key> | |||||
<value>3</value> | |||||
</parameter> | |||||
</parameters> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1181</key> | |||||
<priority>BLOCKER</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1150</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1182</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1151</key> | |||||
<priority>MAJOR</priority> | |||||
<parameters> | |||||
<parameter> | |||||
<key>max</key> | |||||
<value>5</value> | |||||
</parameter> | |||||
</parameters> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S128</key> | |||||
<priority>CRITICAL</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1166</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1190</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1188</key> | |||||
<priority>MAJOR</priority> | |||||
<parameters> | |||||
<parameter> | |||||
<key>max</key> | |||||
<value>20</value> | |||||
</parameter> | |||||
</parameters> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1191</key> | |||||
<priority>MAJOR</priority> | |||||
<parameters></parameters> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S135</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1186</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1185</key> | |||||
<priority>MINOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1174</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1175</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1153</key> | |||||
<priority>MINOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1148</key> | |||||
<priority>CRITICAL</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1195</key> | |||||
<priority>MINOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1194</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1193</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1192</key> | |||||
<priority>MINOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1158</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1215</key> | |||||
<priority>CRITICAL</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1197</key> | |||||
<priority>MINOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1220</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1221</key> | |||||
<priority>CRITICAL</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1199</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1214</key> | |||||
<priority>MINOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1201</key> | |||||
<priority>CRITICAL</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1210</key> | |||||
<priority>CRITICAL</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1206</key> | |||||
<priority>BLOCKER</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1219</key> | |||||
<priority>CRITICAL</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1301</key> | |||||
<priority>MINOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1314</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1226</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1313</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1312</key> | |||||
<priority>MAJOR</priority> | |||||
<parameters> | |||||
<parameter> | |||||
<key>format</key> | |||||
<value>LOG(?:GER)?</value> | |||||
</parameter> | |||||
</parameters> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1318</key> | |||||
<priority>CRITICAL</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1223</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1319</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1231</key> | |||||
<priority>MINOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1444</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1452</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1481</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1068</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1317</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1596</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>UnusedPrivateMethod</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>RedundantThrowsDeclarationCheck</key> | |||||
<priority>MINOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1160</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1217</key> | |||||
<priority>CRITICAL</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1488</key> | |||||
<priority>MINOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1602</key> | |||||
<priority>MAJOR</priority> | |||||
</rule> | |||||
<rule> | |||||
<repositoryKey>squid</repositoryKey> | |||||
<key>S1611</key> | |||||
<priority>MINOR</priority> | |||||
</rule> | |||||
</rules> | |||||
</profile> |
<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"> | <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> | <modelVersion>4.0.0</modelVersion> | ||||
<parent> | <parent> | ||||
<groupId>org.codehaus.sonar-plugins</groupId> | |||||
<groupId>org.sonarsource.parent</groupId> | |||||
<artifactId>parent</artifactId> | <artifactId>parent</artifactId> | ||||
<version>19</version> | |||||
<version>23</version> | |||||
</parent> | </parent> | ||||
<groupId>org.codehaus.sonar.runner</groupId> | |||||
<groupId>org.sonarsource.sonar-runner</groupId> | |||||
<artifactId>sonar-runner</artifactId> | <artifactId>sonar-runner</artifactId> | ||||
<version>2.5-SNAPSHOT</version> | <version>2.5-SNAPSHOT</version> | ||||
<packaging>pom</packaging> | <packaging>pom</packaging> | ||||
<url>http://docs.codehaus.org/display/SONAR/Analyzing+with+SonarQube+Runner</url> | <url>http://docs.codehaus.org/display/SONAR/Analyzing+with+SonarQube+Runner</url> | ||||
<inceptionYear>2011</inceptionYear> | <inceptionYear>2011</inceptionYear> | ||||
<!-- Overridding default properties to be able to deploy the release --> | |||||
<distributionManagement> | |||||
<repository> | |||||
<id>codehaus-nexus-staging</id> | |||||
<name>Codehaus Release Repository</name> | |||||
<url>https://nexus.codehaus.org/service/local/staging/deploy/maven2/</url> | |||||
</repository> | |||||
</distributionManagement> | |||||
<modules> | <modules> | ||||
<module>sonar-runner-api</module> | <module>sonar-runner-api</module> | ||||
<module>sonar-runner-batch</module> | <module>sonar-runner-batch</module> |
<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"> | <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> | <modelVersion>4.0.0</modelVersion> | ||||
<parent> | <parent> | ||||
<groupId>org.codehaus.sonar.runner</groupId> | |||||
<groupId>org.sonarsource.sonar-runner</groupId> | |||||
<artifactId>sonar-runner</artifactId> | <artifactId>sonar-runner</artifactId> | ||||
<version>2.5-SNAPSHOT</version> | <version>2.5-SNAPSHOT</version> | ||||
</parent> | </parent> |
/* | /* | ||||
* SonarQube Runner - API | * SonarQube Runner - API | ||||
* Copyright (C) 2011 SonarSource | * Copyright (C) 2011 SonarSource | ||||
* dev@sonar.codehaus.org | |||||
* sonarqube@googlegroups.com | |||||
* | * | ||||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | ||||
* modify it under the terms of the GNU Lesser General Public | * modify it under the terms of the GNU Lesser General Public |
/* | /* | ||||
* SonarQube Runner - API | * SonarQube Runner - API | ||||
* Copyright (C) 2011 SonarSource | * Copyright (C) 2011 SonarSource | ||||
* dev@sonar.codehaus.org | |||||
* sonarqube@googlegroups.com | |||||
* | * | ||||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | ||||
* modify it under the terms of the GNU Lesser General Public | * modify it under the terms of the GNU Lesser General Public |
/* | /* | ||||
* SonarQube Runner - API | * SonarQube Runner - API | ||||
* Copyright (C) 2011 SonarSource | * Copyright (C) 2011 SonarSource | ||||
* dev@sonar.codehaus.org | |||||
* sonarqube@googlegroups.com | |||||
* | * | ||||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | ||||
* modify it under the terms of the GNU Lesser General Public | * modify it under the terms of the GNU Lesser General Public |
/* | /* | ||||
* SonarQube Runner - API | * SonarQube Runner - API | ||||
* Copyright (C) 2011 SonarSource | * Copyright (C) 2011 SonarSource | ||||
* dev@sonar.codehaus.org | |||||
* sonarqube@googlegroups.com | |||||
* | * | ||||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | ||||
* modify it under the terms of the GNU Lesser General Public | * modify it under the terms of the GNU Lesser General Public |
/* | /* | ||||
* SonarQube Runner - API | * SonarQube Runner - API | ||||
* Copyright (C) 2011 SonarSource | * Copyright (C) 2011 SonarSource | ||||
* dev@sonar.codehaus.org | |||||
* sonarqube@googlegroups.com | |||||
* | * | ||||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | ||||
* modify it under the terms of the GNU Lesser General Public | * modify it under the terms of the GNU Lesser General Public |
/* | /* | ||||
* SonarQube Runner - API | * SonarQube Runner - API | ||||
* Copyright (C) 2011 SonarSource | * Copyright (C) 2011 SonarSource | ||||
* dev@sonar.codehaus.org | |||||
* sonarqube@googlegroups.com | |||||
* | * | ||||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | ||||
* modify it under the terms of the GNU Lesser General Public | * modify it under the terms of the GNU Lesser General Public |
/* | /* | ||||
* SonarQube Runner - API | * SonarQube Runner - API | ||||
* Copyright (C) 2011 SonarSource | * Copyright (C) 2011 SonarSource | ||||
* dev@sonar.codehaus.org | |||||
* sonarqube@googlegroups.com | |||||
* | * | ||||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | ||||
* modify it under the terms of the GNU Lesser General Public | * modify it under the terms of the GNU Lesser General Public |
/* | /* | ||||
* SonarQube Runner - API | * SonarQube Runner - API | ||||
* Copyright (C) 2011 SonarSource | * Copyright (C) 2011 SonarSource | ||||
* dev@sonar.codehaus.org | |||||
* sonarqube@googlegroups.com | |||||
* | * | ||||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | ||||
* modify it under the terms of the GNU Lesser General Public | * modify it under the terms of the GNU Lesser General Public |
/* | /* | ||||
* SonarQube Runner - API | * SonarQube Runner - API | ||||
* Copyright (C) 2011 SonarSource | * Copyright (C) 2011 SonarSource | ||||
* dev@sonar.codehaus.org | |||||
* sonarqube@googlegroups.com | |||||
* | * | ||||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | ||||
* modify it under the terms of the GNU Lesser General Public | * modify it under the terms of the GNU Lesser General Public |
/* | /* | ||||
* SonarQube Runner - API | * SonarQube Runner - API | ||||
* Copyright (C) 2011 SonarSource | * Copyright (C) 2011 SonarSource | ||||
* dev@sonar.codehaus.org | |||||
* sonarqube@googlegroups.com | |||||
* | * | ||||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | ||||
* modify it under the terms of the GNU Lesser General Public | * modify it under the terms of the GNU Lesser General Public |
/* | /* | ||||
* SonarQube Runner - API | * SonarQube Runner - API | ||||
* Copyright (C) 2011 SonarSource | * Copyright (C) 2011 SonarSource | ||||
* dev@sonar.codehaus.org | |||||
* sonarqube@googlegroups.com | |||||
* | * | ||||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | ||||
* modify it under the terms of the GNU Lesser General Public | * modify it under the terms of the GNU Lesser General Public |
/* | /* | ||||
* SonarQube Runner - API | * SonarQube Runner - API | ||||
* Copyright (C) 2011 SonarSource | * Copyright (C) 2011 SonarSource | ||||
* dev@sonar.codehaus.org | |||||
* sonarqube@googlegroups.com | |||||
* | * | ||||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | ||||
* modify it under the terms of the GNU Lesser General Public | * modify it under the terms of the GNU Lesser General Public |
/* | /* | ||||
* SonarQube Runner - API | * SonarQube Runner - API | ||||
* Copyright (C) 2011 SonarSource | * Copyright (C) 2011 SonarSource | ||||
* dev@sonar.codehaus.org | |||||
* sonarqube@googlegroups.com | |||||
* | * | ||||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | ||||
* modify it under the terms of the GNU Lesser General Public | * modify it under the terms of the GNU Lesser General Public |
/* | /* | ||||
* SonarQube Runner - API | * SonarQube Runner - API | ||||
* Copyright (C) 2011 SonarSource | * Copyright (C) 2011 SonarSource | ||||
* dev@sonar.codehaus.org | |||||
* sonarqube@googlegroups.com | |||||
* | * | ||||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | ||||
* modify it under the terms of the GNU Lesser General Public | * modify it under the terms of the GNU Lesser General Public |
/* | /* | ||||
* SonarQube Runner - API | * SonarQube Runner - API | ||||
* Copyright (C) 2011 SonarSource | * Copyright (C) 2011 SonarSource | ||||
* dev@sonar.codehaus.org | |||||
* sonarqube@googlegroups.com | |||||
* | * | ||||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | ||||
* modify it under the terms of the GNU Lesser General Public | * modify it under the terms of the GNU Lesser General Public |
/* | /* | ||||
* SonarQube Runner - API | * SonarQube Runner - API | ||||
* Copyright (C) 2011 SonarSource | * Copyright (C) 2011 SonarSource | ||||
* dev@sonar.codehaus.org | |||||
* sonarqube@googlegroups.com | |||||
* | * | ||||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | ||||
* modify it under the terms of the GNU Lesser General Public | * modify it under the terms of the GNU Lesser General Public |
/* | /* | ||||
* SonarQube Runner - API | * SonarQube Runner - API | ||||
* Copyright (C) 2011 SonarSource | * Copyright (C) 2011 SonarSource | ||||
* dev@sonar.codehaus.org | |||||
* sonarqube@googlegroups.com | |||||
* | * | ||||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | ||||
* modify it under the terms of the GNU Lesser General Public | * modify it under the terms of the GNU Lesser General Public |
/* | /* | ||||
* SonarQube Runner - API | * SonarQube Runner - API | ||||
* Copyright (C) 2011 SonarSource | * Copyright (C) 2011 SonarSource | ||||
* dev@sonar.codehaus.org | |||||
* sonarqube@googlegroups.com | |||||
* | * | ||||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | ||||
* modify it under the terms of the GNU Lesser General Public | * modify it under the terms of the GNU Lesser General Public |
/* | /* | ||||
* SonarQube Runner - API | * SonarQube Runner - API | ||||
* Copyright (C) 2011 SonarSource | * Copyright (C) 2011 SonarSource | ||||
* dev@sonar.codehaus.org | |||||
* sonarqube@googlegroups.com | |||||
* | * | ||||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | ||||
* modify it under the terms of the GNU Lesser General Public | * modify it under the terms of the GNU Lesser General Public |
/* | /* | ||||
* SonarQube Runner - API | * SonarQube Runner - API | ||||
* Copyright (C) 2011 SonarSource | * Copyright (C) 2011 SonarSource | ||||
* dev@sonar.codehaus.org | |||||
* sonarqube@googlegroups.com | |||||
* | * | ||||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | ||||
* modify it under the terms of the GNU Lesser General Public | * modify it under the terms of the GNU Lesser General Public |
/* | /* | ||||
* SonarQube Runner - API | * SonarQube Runner - API | ||||
* Copyright (C) 2011 SonarSource | * Copyright (C) 2011 SonarSource | ||||
* dev@sonar.codehaus.org | |||||
* sonarqube@googlegroups.com | |||||
* | * | ||||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | ||||
* modify it under the terms of the GNU Lesser General Public | * modify it under the terms of the GNU Lesser General Public |
/* | /* | ||||
* SonarQube Runner - API | * SonarQube Runner - API | ||||
* Copyright (C) 2011 SonarSource | * Copyright (C) 2011 SonarSource | ||||
* dev@sonar.codehaus.org | |||||
* sonarqube@googlegroups.com | |||||
* | * | ||||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | ||||
* modify it under the terms of the GNU Lesser General Public | * modify it under the terms of the GNU Lesser General Public |
/* | /* | ||||
* SonarQube Runner - API | * SonarQube Runner - API | ||||
* Copyright (C) 2011 SonarSource | * Copyright (C) 2011 SonarSource | ||||
* dev@sonar.codehaus.org | |||||
* sonarqube@googlegroups.com | |||||
* | * | ||||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | ||||
* modify it under the terms of the GNU Lesser General Public | * modify it under the terms of the GNU Lesser General Public |
/* | /* | ||||
* SonarQube Runner - API | * SonarQube Runner - API | ||||
* Copyright (C) 2011 SonarSource | * Copyright (C) 2011 SonarSource | ||||
* dev@sonar.codehaus.org | |||||
* sonarqube@googlegroups.com | |||||
* | * | ||||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | ||||
* modify it under the terms of the GNU Lesser General Public | * modify it under the terms of the GNU Lesser General Public |
/* | /* | ||||
* SonarQube Runner - API | * SonarQube Runner - API | ||||
* Copyright (C) 2011 SonarSource | * Copyright (C) 2011 SonarSource | ||||
* dev@sonar.codehaus.org | |||||
* sonarqube@googlegroups.com | |||||
* | * | ||||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | ||||
* modify it under the terms of the GNU Lesser General Public | * modify it under the terms of the GNU Lesser General Public |
/* | /* | ||||
* SonarQube Runner - API | * SonarQube Runner - API | ||||
* Copyright (C) 2011 SonarSource | * Copyright (C) 2011 SonarSource | ||||
* dev@sonar.codehaus.org | |||||
* sonarqube@googlegroups.com | |||||
* | * | ||||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | ||||
* modify it under the terms of the GNU Lesser General Public | * modify it under the terms of the GNU Lesser General Public |
/* | /* | ||||
* SonarQube Runner - API | * SonarQube Runner - API | ||||
* Copyright (C) 2011 SonarSource | * Copyright (C) 2011 SonarSource | ||||
* dev@sonar.codehaus.org | |||||
* sonarqube@googlegroups.com | |||||
* | * | ||||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | ||||
* modify it under the terms of the GNU Lesser General Public | * modify it under the terms of the GNU Lesser General Public |
/* | /* | ||||
* SonarQube Runner - API | * SonarQube Runner - API | ||||
* Copyright (C) 2011 SonarSource | * Copyright (C) 2011 SonarSource | ||||
* dev@sonar.codehaus.org | |||||
* sonarqube@googlegroups.com | |||||
* | * | ||||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | ||||
* modify it under the terms of the GNU Lesser General Public | * modify it under the terms of the GNU Lesser General Public |
/* | /* | ||||
* SonarQube Runner - API | * SonarQube Runner - API | ||||
* Copyright (C) 2011 SonarSource | * Copyright (C) 2011 SonarSource | ||||
* dev@sonar.codehaus.org | |||||
* sonarqube@googlegroups.com | |||||
* | * | ||||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | ||||
* modify it under the terms of the GNU Lesser General Public | * modify it under the terms of the GNU Lesser General Public |
/* | /* | ||||
* SonarQube Runner - API | * SonarQube Runner - API | ||||
* Copyright (C) 2011 SonarSource | * Copyright (C) 2011 SonarSource | ||||
* dev@sonar.codehaus.org | |||||
* sonarqube@googlegroups.com | |||||
* | * | ||||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | ||||
* modify it under the terms of the GNU Lesser General Public | * modify it under the terms of the GNU Lesser General Public |
/* | /* | ||||
* SonarQube Runner - API | * SonarQube Runner - API | ||||
* Copyright (C) 2011 SonarSource | * Copyright (C) 2011 SonarSource | ||||
* dev@sonar.codehaus.org | |||||
* sonarqube@googlegroups.com | |||||
* | * | ||||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | ||||
* modify it under the terms of the GNU Lesser General Public | * modify it under the terms of the GNU Lesser General Public |
/* | /* | ||||
* SonarQube Runner - API | * SonarQube Runner - API | ||||
* Copyright (C) 2011 SonarSource | * Copyright (C) 2011 SonarSource | ||||
* dev@sonar.codehaus.org | |||||
* sonarqube@googlegroups.com | |||||
* | * | ||||
* This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | ||||
* modify it under the terms of the GNU Lesser General Public | * modify it under the terms of the GNU Lesser General Public |