]> source.dussan.org Git - sonar-scanner-cli.git/commitdiff
merge it-sonar-runner and update groupId
authorDuarte Meneses <duarte.meneses@sonarsource.com>
Thu, 16 Jul 2015 11:51:30 +0000 (13:51 +0200)
committerDuarte Meneses <duarte.meneses@sonarsource.com>
Mon, 20 Jul 2015 10:59:15 +0000 (12:59 +0200)
132 files changed:
.travis.yml
it/pom.xml [new file with mode: 0644]
it/projects/bad-source-dirs/sonar-project.properties [new file with mode: 0644]
it/projects/bad-source-dirs/src/Hello.java [new file with mode: 0644]
it/projects/basedir-with-source/Hello.java [new file with mode: 0644]
it/projects/basedir-with-source/sonar-project.properties [new file with mode: 0644]
it/projects/java-bytecode/.sonar/findbugs-include.xml [new file with mode: 0644]
it/projects/java-bytecode/.sonar/findbugs-result.xml [new file with mode: 0644]
it/projects/java-bytecode/build.xml [new file with mode: 0644]
it/projects/java-bytecode/build/classes/HasFindbugsViolation.class [new file with mode: 0644]
it/projects/java-bytecode/lib/deprecated.jar [new file with mode: 0644]
it/projects/java-bytecode/sonar-project.properties [new file with mode: 0644]
it/projects/java-bytecode/src/HasFindbugsViolation.java [new file with mode: 0644]
it/projects/java-sample/sonar-project.properties [new file with mode: 0644]
it/projects/java-sample/src/basic/Hello.java [new file with mode: 0644]
it/projects/java-sample/src/basic/World.java [new file with mode: 0644]
it/projects/multi-module/advanced/using-config-file-prop/module1/src/Hello.java [new file with mode: 0644]
it/projects/multi-module/advanced/using-config-file-prop/module1/temp/generated-sonar-project.properties [new file with mode: 0644]
it/projects/multi-module/advanced/using-config-file-prop/module2/src/Hello.java [new file with mode: 0644]
it/projects/multi-module/advanced/using-config-file-prop/module2/temp/generated-sonar-project.properties [new file with mode: 0644]
it/projects/multi-module/advanced/using-config-file-prop/sonar-project.properties [new file with mode: 0644]
it/projects/multi-module/customization/deep-path-for-modules/modules/module1/src/Hello.java [new file with mode: 0644]
it/projects/multi-module/customization/deep-path-for-modules/modules/module2/src/Hello.java [new file with mode: 0644]
it/projects/multi-module/customization/deep-path-for-modules/sonar-project.properties [new file with mode: 0644]
it/projects/multi-module/customization/module-path-with-space/my module 1/src/Hello.java [new file with mode: 0644]
it/projects/multi-module/customization/module-path-with-space/my module 2/src/Hello.java [new file with mode: 0644]
it/projects/multi-module/customization/module-path-with-space/sonar-project.properties [new file with mode: 0644]
it/projects/multi-module/customization/overwriting-parent-properties/module1/src1/Hello.java [new file with mode: 0644]
it/projects/multi-module/customization/overwriting-parent-properties/module2/sonar-project.properties [new file with mode: 0644]
it/projects/multi-module/customization/overwriting-parent-properties/module2/src2/Hello.java [new file with mode: 0644]
it/projects/multi-module/customization/overwriting-parent-properties/sonar-project.properties [new file with mode: 0644]
it/projects/multi-module/failures/unexisting-base-dir/module1/src/Hello.java [new file with mode: 0644]
it/projects/multi-module/failures/unexisting-base-dir/module2/src/Hello.java [new file with mode: 0644]
it/projects/multi-module/failures/unexisting-base-dir/sonar-project.properties [new file with mode: 0644]
it/projects/multi-module/failures/unexisting-config-file/module1/src/Hello.java [new file with mode: 0644]
it/projects/multi-module/failures/unexisting-config-file/module1/temp/empty-dir.txt [new file with mode: 0644]
it/projects/multi-module/failures/unexisting-config-file/module2/src/Hello.java [new file with mode: 0644]
it/projects/multi-module/failures/unexisting-config-file/module2/temp/generated-sonar-project.properties [new file with mode: 0644]
it/projects/multi-module/failures/unexisting-config-file/sonar-project.properties [new file with mode: 0644]
it/projects/multi-module/multi-language/sonar-project.properties [new file with mode: 0644]
it/projects/multi-module/multi-language/src/main/java/Hello.java [new file with mode: 0644]
it/projects/multi-module/multi-language/src/main/js/Hello.js [new file with mode: 0644]
it/projects/multi-module/simplest/simplest-with-props-on-each-module/module1/sonar-project.properties [new file with mode: 0644]
it/projects/multi-module/simplest/simplest-with-props-on-each-module/module1/src/Hello.java [new file with mode: 0644]
it/projects/multi-module/simplest/simplest-with-props-on-each-module/module2/sonar-project.properties [new file with mode: 0644]
it/projects/multi-module/simplest/simplest-with-props-on-each-module/module2/src/Hello.java [new file with mode: 0644]
it/projects/multi-module/simplest/simplest-with-props-on-each-module/sonar-project.properties [new file with mode: 0644]
it/projects/multi-module/simplest/simplest-with-props-on-each-module/src/placeholder.txt [new file with mode: 0644]
it/projects/multi-module/simplest/simplest-with-props-on-root/module1/src/Hello.java [new file with mode: 0644]
it/projects/multi-module/simplest/simplest-with-props-on-root/module2/src/Hello.java [new file with mode: 0644]
it/projects/multi-module/simplest/simplest-with-props-on-root/sonar-project.properties [new file with mode: 0644]
it/projects/override-working-dir/sonar-project.properties [new file with mode: 0644]
it/projects/override-working-dir/src/Hello.java [new file with mode: 0644]
it/projects/using-deprecated-props/build/Hello.class [new file with mode: 0644]
it/projects/using-deprecated-props/lib/deprecated.jar [new file with mode: 0644]
it/projects/using-deprecated-props/sonar-project.properties [new file with mode: 0644]
it/projects/using-deprecated-props/src/Hello.java [new file with mode: 0644]
it/projects/using-deprecated-props/tests/HelloTest.java [new file with mode: 0644]
it/src/test/java/com/sonar/runner/it/CacheTest.java [new file with mode: 0644]
it/src/test/java/com/sonar/runner/it/JavaTest.java [new file with mode: 0644]
it/src/test/java/com/sonar/runner/it/MultimoduleTest.java [new file with mode: 0644]
it/src/test/java/com/sonar/runner/it/RunnerTestCase.java [new file with mode: 0644]
it/src/test/java/com/sonar/runner/it/SonarRunnerTestSuite.java [new file with mode: 0644]
it/src/test/resources/requires-bytecode-profile.xml [new file with mode: 0644]
it/src/test/resources/sonar-way-profile.xml [new file with mode: 0644]
pom.xml
sonar-runner-api/pom.xml
sonar-runner-api/src/main/java/org/sonar/runner/api/Dirs.java
sonar-runner-api/src/main/java/org/sonar/runner/api/EmbeddedRunner.java
sonar-runner-api/src/main/java/org/sonar/runner/api/LogOutput.java
sonar-runner-api/src/main/java/org/sonar/runner/api/ProcessMonitor.java
sonar-runner-api/src/main/java/org/sonar/runner/api/RunnerProperties.java
sonar-runner-api/src/main/java/org/sonar/runner/api/RunnerVersion.java
sonar-runner-api/src/main/java/org/sonar/runner/api/ScanProperties.java
sonar-runner-api/src/main/java/org/sonar/runner/api/StdOutLogOutput.java
sonar-runner-api/src/main/java/org/sonar/runner/api/Utils.java
sonar-runner-api/src/main/java/org/sonar/runner/api/package-info.java
sonar-runner-api/src/main/java/org/sonar/runner/impl/InternalProperties.java
sonar-runner-api/src/main/java/org/sonar/runner/impl/IsolatedClassloader.java
sonar-runner-api/src/main/java/org/sonar/runner/impl/IsolatedLauncherFactory.java
sonar-runner-api/src/main/java/org/sonar/runner/impl/IsolatedLauncherProxy.java
sonar-runner-api/src/main/java/org/sonar/runner/impl/JarDownloader.java
sonar-runner-api/src/main/java/org/sonar/runner/impl/JarExtractor.java
sonar-runner-api/src/main/java/org/sonar/runner/impl/Jars.java
sonar-runner-api/src/main/java/org/sonar/runner/impl/RunnerException.java
sonar-runner-api/src/main/java/org/sonar/runner/impl/ServerConnection.java
sonar-runner-api/src/main/java/org/sonar/runner/impl/TempCleaning.java
sonar-runner-api/src/main/java/org/sonar/runner/impl/VersionUtils.java
sonar-runner-api/src/main/java/org/sonar/runner/impl/package-info.java
sonar-runner-api/src/test/java/org/sonar/runner/api/DirsTest.java
sonar-runner-api/src/test/java/org/sonar/runner/api/EmbeddedRunnerTest.java
sonar-runner-api/src/test/java/org/sonar/runner/api/RunnerVersionTest.java
sonar-runner-api/src/test/java/org/sonar/runner/api/UtilsTest.java
sonar-runner-api/src/test/java/org/sonar/runner/impl/IsolatedClassloaderTest.java
sonar-runner-api/src/test/java/org/sonar/runner/impl/IsolatedLauncherFactoryTest.java
sonar-runner-api/src/test/java/org/sonar/runner/impl/IsolatedLauncherProxyTest.java
sonar-runner-api/src/test/java/org/sonar/runner/impl/JarDownloaderTest.java
sonar-runner-api/src/test/java/org/sonar/runner/impl/JarExtractorTest.java
sonar-runner-api/src/test/java/org/sonar/runner/impl/JarsTest.java
sonar-runner-api/src/test/java/org/sonar/runner/impl/MockHttpServer.java
sonar-runner-api/src/test/java/org/sonar/runner/impl/MockHttpServerInterceptor.java
sonar-runner-api/src/test/java/org/sonar/runner/impl/NetworkUtil.java
sonar-runner-api/src/test/java/org/sonar/runner/impl/ServerConnectionTest.java
sonar-runner-api/src/test/java/org/sonar/runner/impl/TempCleaningTest.java
sonar-runner-api/src/test/java/org/sonar/runner/impl/VersionUtilsTest.java
sonar-runner-batch-interface/pom.xml
sonar-runner-batch-interface/src/main/java/org/sonar/runner/batch/IsolatedLauncher.java
sonar-runner-batch-interface/src/main/java/org/sonar/runner/batch/LogOutput.java
sonar-runner-batch/pom.xml
sonar-runner-batch/src/main/java/org/sonar/runner/batch/BatchIsolatedLauncher.java
sonar-runner-batch/src/main/java/org/sonar/runner/batch/Compatibility.java
sonar-runner-batch/src/test/java/org/sonar/runner/batch/IsolatedLauncherTest.java
sonar-runner-cli/assembly.xml
sonar-runner-cli/pom.xml
sonar-runner-cli/src/main/java/org/sonar/runner/cli/Cli.java
sonar-runner-cli/src/main/java/org/sonar/runner/cli/Conf.java
sonar-runner-cli/src/main/java/org/sonar/runner/cli/Exit.java
sonar-runner-cli/src/main/java/org/sonar/runner/cli/Logs.java
sonar-runner-cli/src/main/java/org/sonar/runner/cli/Main.java
sonar-runner-cli/src/main/java/org/sonar/runner/cli/RunnerFactory.java
sonar-runner-cli/src/main/java/org/sonar/runner/cli/Shutdown.java
sonar-runner-cli/src/main/java/org/sonar/runner/cli/Stats.java
sonar-runner-cli/src/main/java/org/sonar/runner/cli/SystemInfo.java
sonar-runner-cli/src/main/java/org/sonar/runner/cli/package-info.java
sonar-runner-cli/src/test/java/org/sonar/runner/cli/CliTest.java
sonar-runner-cli/src/test/java/org/sonar/runner/cli/ConfTest.java
sonar-runner-cli/src/test/java/org/sonar/runner/cli/MainTest.java
sonar-runner-cli/src/test/java/org/sonar/runner/cli/RunnerFactoryTest.java
sonar-runner-cli/src/test/java/org/sonar/runner/cli/ShutdownTest.java
sonar-runner-cli/src/test/java/org/sonar/runner/cli/StatsTest.java
sonar-runner-cli/src/test/java/org/sonar/runner/cli/SystemInfoTest.java
travis.sh

index 2469bf0d15dbb004d06a386db4f56554ab8c4bb6..c7f2d8853c3136f9ef884dd19909d00c074707ab 100644 (file)
@@ -8,6 +8,16 @@ jdk:
 install: true
 script: ./travis.sh
 
+env:
+  - TESTS=CI
+  - TESTS=IT-DEV
+
+matrix:
+  fast_finish: true
+
 cache:
   directories:
     - '$HOME/.m2/repository'
+
+notifications:
+  email: false
diff --git a/it/pom.xml b/it/pom.xml
new file mode 100644 (file)
index 0000000..4ed6ea7
--- /dev/null
@@ -0,0 +1,72 @@
+<?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>
diff --git a/it/projects/bad-source-dirs/sonar-project.properties b/it/projects/bad-source-dirs/sonar-project.properties
new file mode 100644 (file)
index 0000000..55ff5ab
--- /dev/null
@@ -0,0 +1,6 @@
+sonar.projectKey=bad-source-dirs
+sonar.projectName=Bad Source Dirs
+sonar.projectDescription=Bad Source Dirs
+sonar.projectVersion=1.0
+
+sonar.sources=src,bad
diff --git a/it/projects/bad-source-dirs/src/Hello.java b/it/projects/bad-source-dirs/src/Hello.java
new file mode 100644 (file)
index 0000000..1291f40
--- /dev/null
@@ -0,0 +1,7 @@
+public class Hello {
+
+  public void hello() {
+    int i=356;
+    if (true) i=5658;
+  }
+}
diff --git a/it/projects/basedir-with-source/Hello.java b/it/projects/basedir-with-source/Hello.java
new file mode 100644 (file)
index 0000000..1291f40
--- /dev/null
@@ -0,0 +1,7 @@
+public class Hello {
+
+  public void hello() {
+    int i=356;
+    if (true) i=5658;
+  }
+}
diff --git a/it/projects/basedir-with-source/sonar-project.properties b/it/projects/basedir-with-source/sonar-project.properties
new file mode 100644 (file)
index 0000000..e5a74f8
--- /dev/null
@@ -0,0 +1,7 @@
+# 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=.
diff --git a/it/projects/java-bytecode/.sonar/findbugs-include.xml b/it/projects/java-bytecode/.sonar/findbugs-include.xml
new file mode 100644 (file)
index 0000000..d4846f0
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated by SonarQube -->
+<FindBugsFilter>
+  <Match>
+    <Bug pattern="DM_EXIT"/>
+  </Match>
+</FindBugsFilter>
\ No newline at end of file
diff --git a/it/projects/java-bytecode/.sonar/findbugs-result.xml b/it/projects/java-bytecode/.sonar/findbugs-result.xml
new file mode 100644 (file)
index 0000000..0ae2961
--- /dev/null
@@ -0,0 +1,69 @@
+<?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>
diff --git a/it/projects/java-bytecode/build.xml b/it/projects/java-bytecode/build.xml
new file mode 100644 (file)
index 0000000..d24c2b8
--- /dev/null
@@ -0,0 +1,32 @@
+<?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>
diff --git a/it/projects/java-bytecode/build/classes/HasFindbugsViolation.class b/it/projects/java-bytecode/build/classes/HasFindbugsViolation.class
new file mode 100644 (file)
index 0000000..f482325
Binary files /dev/null and b/it/projects/java-bytecode/build/classes/HasFindbugsViolation.class differ
diff --git a/it/projects/java-bytecode/lib/deprecated.jar b/it/projects/java-bytecode/lib/deprecated.jar
new file mode 100644 (file)
index 0000000..65e3be9
Binary files /dev/null and b/it/projects/java-bytecode/lib/deprecated.jar differ
diff --git a/it/projects/java-bytecode/sonar-project.properties b/it/projects/java-bytecode/sonar-project.properties
new file mode 100644 (file)
index 0000000..cf6eb18
--- /dev/null
@@ -0,0 +1,9 @@
+# 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
diff --git a/it/projects/java-bytecode/src/HasFindbugsViolation.java b/it/projects/java-bytecode/src/HasFindbugsViolation.java
new file mode 100644 (file)
index 0000000..c68f54f
--- /dev/null
@@ -0,0 +1,13 @@
+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);
+  }
+}
diff --git a/it/projects/java-sample/sonar-project.properties b/it/projects/java-sample/sonar-project.properties
new file mode 100644 (file)
index 0000000..0414efd
--- /dev/null
@@ -0,0 +1,7 @@
+# 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
diff --git a/it/projects/java-sample/src/basic/Hello.java b/it/projects/java-sample/src/basic/Hello.java
new file mode 100644 (file)
index 0000000..b9db5a0
--- /dev/null
@@ -0,0 +1,9 @@
+package basic;
+
+public class Hello {
+
+  public void hello() {
+    int i=356;
+    if (true) i=5658;
+  }
+}
diff --git a/it/projects/java-sample/src/basic/World.java b/it/projects/java-sample/src/basic/World.java
new file mode 100644 (file)
index 0000000..c65d91c
--- /dev/null
@@ -0,0 +1,8 @@
+package basic;
+
+public final class World {
+
+  public void world() {
+    System.out.println("hello world");
+  }
+}
diff --git a/it/projects/multi-module/advanced/using-config-file-prop/module1/src/Hello.java b/it/projects/multi-module/advanced/using-config-file-prop/module1/src/Hello.java
new file mode 100644 (file)
index 0000000..8a94806
--- /dev/null
@@ -0,0 +1,2 @@
+public class Hello {
+}
diff --git a/it/projects/multi-module/advanced/using-config-file-prop/module1/temp/generated-sonar-project.properties b/it/projects/multi-module/advanced/using-config-file-prop/module1/temp/generated-sonar-project.properties
new file mode 100644 (file)
index 0000000..81dd0e0
--- /dev/null
@@ -0,0 +1,2 @@
+sonar.projectName=Module 1
+sonar.projectBaseDir=..
diff --git a/it/projects/multi-module/advanced/using-config-file-prop/module2/src/Hello.java b/it/projects/multi-module/advanced/using-config-file-prop/module2/src/Hello.java
new file mode 100644 (file)
index 0000000..8a94806
--- /dev/null
@@ -0,0 +1,2 @@
+public class Hello {
+}
diff --git a/it/projects/multi-module/advanced/using-config-file-prop/module2/temp/generated-sonar-project.properties b/it/projects/multi-module/advanced/using-config-file-prop/module2/temp/generated-sonar-project.properties
new file mode 100644 (file)
index 0000000..0b0e342
--- /dev/null
@@ -0,0 +1,2 @@
+sonar.projectName=Module 2
+sonar.projectBaseDir=..
\ No newline at end of file
diff --git a/it/projects/multi-module/advanced/using-config-file-prop/sonar-project.properties b/it/projects/multi-module/advanced/using-config-file-prop/sonar-project.properties
new file mode 100644 (file)
index 0000000..448cf40
--- /dev/null
@@ -0,0 +1,10 @@
+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
diff --git a/it/projects/multi-module/customization/deep-path-for-modules/modules/module1/src/Hello.java b/it/projects/multi-module/customization/deep-path-for-modules/modules/module1/src/Hello.java
new file mode 100644 (file)
index 0000000..8a94806
--- /dev/null
@@ -0,0 +1,2 @@
+public class Hello {
+}
diff --git a/it/projects/multi-module/customization/deep-path-for-modules/modules/module2/src/Hello.java b/it/projects/multi-module/customization/deep-path-for-modules/modules/module2/src/Hello.java
new file mode 100644 (file)
index 0000000..8a94806
--- /dev/null
@@ -0,0 +1,2 @@
+public class Hello {
+}
diff --git a/it/projects/multi-module/customization/deep-path-for-modules/sonar-project.properties b/it/projects/multi-module/customization/deep-path-for-modules/sonar-project.properties
new file mode 100644 (file)
index 0000000..e366eaa
--- /dev/null
@@ -0,0 +1,13 @@
+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
\ No newline at end of file
diff --git a/it/projects/multi-module/customization/module-path-with-space/my module 1/src/Hello.java b/it/projects/multi-module/customization/module-path-with-space/my module 1/src/Hello.java
new file mode 100644 (file)
index 0000000..8a94806
--- /dev/null
@@ -0,0 +1,2 @@
+public class Hello {
+}
diff --git a/it/projects/multi-module/customization/module-path-with-space/my module 2/src/Hello.java b/it/projects/multi-module/customization/module-path-with-space/my module 2/src/Hello.java
new file mode 100644 (file)
index 0000000..8a94806
--- /dev/null
@@ -0,0 +1,2 @@
+public class Hello {
+}
diff --git a/it/projects/multi-module/customization/module-path-with-space/sonar-project.properties b/it/projects/multi-module/customization/module-path-with-space/sonar-project.properties
new file mode 100644 (file)
index 0000000..4a2c774
--- /dev/null
@@ -0,0 +1,14 @@
+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
diff --git a/it/projects/multi-module/customization/overwriting-parent-properties/module1/src1/Hello.java b/it/projects/multi-module/customization/overwriting-parent-properties/module1/src1/Hello.java
new file mode 100644 (file)
index 0000000..8a94806
--- /dev/null
@@ -0,0 +1,2 @@
+public class Hello {
+}
diff --git a/it/projects/multi-module/customization/overwriting-parent-properties/module2/sonar-project.properties b/it/projects/multi-module/customization/overwriting-parent-properties/module2/sonar-project.properties
new file mode 100644 (file)
index 0000000..19d46fb
--- /dev/null
@@ -0,0 +1,4 @@
+sonar.projectKey=module2-new-key
+sonar.projectName=Module 2
+sonar.projectDescription=Description of module 2
+sonar.sources=src2
diff --git a/it/projects/multi-module/customization/overwriting-parent-properties/module2/src2/Hello.java b/it/projects/multi-module/customization/overwriting-parent-properties/module2/src2/Hello.java
new file mode 100644 (file)
index 0000000..8a94806
--- /dev/null
@@ -0,0 +1,2 @@
+public class Hello {
+}
diff --git a/it/projects/multi-module/customization/overwriting-parent-properties/sonar-project.properties b/it/projects/multi-module/customization/overwriting-parent-properties/sonar-project.properties
new file mode 100644 (file)
index 0000000..b2dff8d
--- /dev/null
@@ -0,0 +1,16 @@
+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
diff --git a/it/projects/multi-module/failures/unexisting-base-dir/module1/src/Hello.java b/it/projects/multi-module/failures/unexisting-base-dir/module1/src/Hello.java
new file mode 100644 (file)
index 0000000..8a94806
--- /dev/null
@@ -0,0 +1,2 @@
+public class Hello {
+}
diff --git a/it/projects/multi-module/failures/unexisting-base-dir/module2/src/Hello.java b/it/projects/multi-module/failures/unexisting-base-dir/module2/src/Hello.java
new file mode 100644 (file)
index 0000000..8a94806
--- /dev/null
@@ -0,0 +1,2 @@
+public class Hello {
+}
diff --git a/it/projects/multi-module/failures/unexisting-base-dir/sonar-project.properties b/it/projects/multi-module/failures/unexisting-base-dir/sonar-project.properties
new file mode 100644 (file)
index 0000000..8bb89b7
--- /dev/null
@@ -0,0 +1,10 @@
+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
diff --git a/it/projects/multi-module/failures/unexisting-config-file/module1/src/Hello.java b/it/projects/multi-module/failures/unexisting-config-file/module1/src/Hello.java
new file mode 100644 (file)
index 0000000..8a94806
--- /dev/null
@@ -0,0 +1,2 @@
+public class Hello {
+}
diff --git a/it/projects/multi-module/failures/unexisting-config-file/module1/temp/empty-dir.txt b/it/projects/multi-module/failures/unexisting-config-file/module1/temp/empty-dir.txt
new file mode 100644 (file)
index 0000000..0026da6
--- /dev/null
@@ -0,0 +1 @@
+File to be sure that SVN keeps this "empty" directory
\ No newline at end of file
diff --git a/it/projects/multi-module/failures/unexisting-config-file/module2/src/Hello.java b/it/projects/multi-module/failures/unexisting-config-file/module2/src/Hello.java
new file mode 100644 (file)
index 0000000..8a94806
--- /dev/null
@@ -0,0 +1,2 @@
+public class Hello {
+}
diff --git a/it/projects/multi-module/failures/unexisting-config-file/module2/temp/generated-sonar-project.properties b/it/projects/multi-module/failures/unexisting-config-file/module2/temp/generated-sonar-project.properties
new file mode 100644 (file)
index 0000000..0b0e342
--- /dev/null
@@ -0,0 +1,2 @@
+sonar.projectName=Module 2
+sonar.projectBaseDir=..
\ No newline at end of file
diff --git a/it/projects/multi-module/failures/unexisting-config-file/sonar-project.properties b/it/projects/multi-module/failures/unexisting-config-file/sonar-project.properties
new file mode 100644 (file)
index 0000000..d3f7d6e
--- /dev/null
@@ -0,0 +1,10 @@
+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
diff --git a/it/projects/multi-module/multi-language/sonar-project.properties b/it/projects/multi-module/multi-language/sonar-project.properties
new file mode 100644 (file)
index 0000000..3598e57
--- /dev/null
@@ -0,0 +1,14 @@
+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
diff --git a/it/projects/multi-module/multi-language/src/main/java/Hello.java b/it/projects/multi-module/multi-language/src/main/java/Hello.java
new file mode 100644 (file)
index 0000000..8a94806
--- /dev/null
@@ -0,0 +1,2 @@
+public class Hello {
+}
diff --git a/it/projects/multi-module/multi-language/src/main/js/Hello.js b/it/projects/multi-module/multi-language/src/main/js/Hello.js
new file mode 100644 (file)
index 0000000..2096104
--- /dev/null
@@ -0,0 +1,3 @@
+function hello() {
+  alert("Hello World");
+}
diff --git a/it/projects/multi-module/simplest/simplest-with-props-on-each-module/module1/sonar-project.properties b/it/projects/multi-module/simplest/simplest-with-props-on-each-module/module1/sonar-project.properties
new file mode 100644 (file)
index 0000000..f5e701d
--- /dev/null
@@ -0,0 +1,2 @@
+# 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')
\ No newline at end of file
diff --git a/it/projects/multi-module/simplest/simplest-with-props-on-each-module/module1/src/Hello.java b/it/projects/multi-module/simplest/simplest-with-props-on-each-module/module1/src/Hello.java
new file mode 100644 (file)
index 0000000..8a94806
--- /dev/null
@@ -0,0 +1,2 @@
+public class Hello {
+}
diff --git a/it/projects/multi-module/simplest/simplest-with-props-on-each-module/module2/sonar-project.properties b/it/projects/multi-module/simplest/simplest-with-props-on-each-module/module2/sonar-project.properties
new file mode 100644 (file)
index 0000000..93a6c21
--- /dev/null
@@ -0,0 +1,3 @@
+# here, we overwrite "sonar.projectKey" and "sonar.projectName" for 'module2'
+sonar.projectKey=overridden-key-for-module2
+sonar.projectName=Module 2
\ No newline at end of file
diff --git a/it/projects/multi-module/simplest/simplest-with-props-on-each-module/module2/src/Hello.java b/it/projects/multi-module/simplest/simplest-with-props-on-each-module/module2/src/Hello.java
new file mode 100644 (file)
index 0000000..8a94806
--- /dev/null
@@ -0,0 +1,2 @@
+public class Hello {
+}
diff --git a/it/projects/multi-module/simplest/simplest-with-props-on-each-module/sonar-project.properties b/it/projects/multi-module/simplest/simplest-with-props-on-each-module/sonar-project.properties
new file mode 100644 (file)
index 0000000..6bfae93
--- /dev/null
@@ -0,0 +1,7 @@
+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
\ No newline at end of file
diff --git a/it/projects/multi-module/simplest/simplest-with-props-on-each-module/src/placeholder.txt b/it/projects/multi-module/simplest/simplest-with-props-on-each-module/src/placeholder.txt
new file mode 100644 (file)
index 0000000..1a5bdeb
--- /dev/null
@@ -0,0 +1 @@
+The root module contains a src folder but it will not be analysed (SONARPLUGINS-2295) and a warning will be displayed.
\ No newline at end of file
diff --git a/it/projects/multi-module/simplest/simplest-with-props-on-root/module1/src/Hello.java b/it/projects/multi-module/simplest/simplest-with-props-on-root/module1/src/Hello.java
new file mode 100644 (file)
index 0000000..8a94806
--- /dev/null
@@ -0,0 +1,2 @@
+public class Hello {
+}
diff --git a/it/projects/multi-module/simplest/simplest-with-props-on-root/module2/src/Hello.java b/it/projects/multi-module/simplest/simplest-with-props-on-root/module2/src/Hello.java
new file mode 100644 (file)
index 0000000..8a94806
--- /dev/null
@@ -0,0 +1,2 @@
+public class Hello {
+}
diff --git a/it/projects/multi-module/simplest/simplest-with-props-on-root/sonar-project.properties b/it/projects/multi-module/simplest/simplest-with-props-on-root/sonar-project.properties
new file mode 100644 (file)
index 0000000..a3488b8
--- /dev/null
@@ -0,0 +1,11 @@
+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')
\ No newline at end of file
diff --git a/it/projects/override-working-dir/sonar-project.properties b/it/projects/override-working-dir/sonar-project.properties
new file mode 100644 (file)
index 0000000..fc08f05
--- /dev/null
@@ -0,0 +1,5 @@
+sonar.projectKey=override-working-dir
+sonar.projectName=Override working dir
+sonar.projectVersion=1.0-SNAPSHOT
+
+sonar.sources=src
diff --git a/it/projects/override-working-dir/src/Hello.java b/it/projects/override-working-dir/src/Hello.java
new file mode 100644 (file)
index 0000000..1291f40
--- /dev/null
@@ -0,0 +1,7 @@
+public class Hello {
+
+  public void hello() {
+    int i=356;
+    if (true) i=5658;
+  }
+}
diff --git a/it/projects/using-deprecated-props/build/Hello.class b/it/projects/using-deprecated-props/build/Hello.class
new file mode 100644 (file)
index 0000000..48df723
Binary files /dev/null and b/it/projects/using-deprecated-props/build/Hello.class differ
diff --git a/it/projects/using-deprecated-props/lib/deprecated.jar b/it/projects/using-deprecated-props/lib/deprecated.jar
new file mode 100644 (file)
index 0000000..65e3be9
Binary files /dev/null and b/it/projects/using-deprecated-props/lib/deprecated.jar differ
diff --git a/it/projects/using-deprecated-props/sonar-project.properties b/it/projects/using-deprecated-props/sonar-project.properties
new file mode 100644 (file)
index 0000000..628eaf7
--- /dev/null
@@ -0,0 +1,8 @@
+sonar.projectKey=using-deprecated-props
+sonar.projectName=Deprecated Props
+sonar.projectVersion=1.2.3
+
+sources=src
+tests=tests
+binaries=build
+libraries=lib/*.jar
diff --git a/it/projects/using-deprecated-props/src/Hello.java b/it/projects/using-deprecated-props/src/Hello.java
new file mode 100644 (file)
index 0000000..8a94806
--- /dev/null
@@ -0,0 +1,2 @@
+public class Hello {
+}
diff --git a/it/projects/using-deprecated-props/tests/HelloTest.java b/it/projects/using-deprecated-props/tests/HelloTest.java
new file mode 100644 (file)
index 0000000..7cb87ed
--- /dev/null
@@ -0,0 +1,2 @@
+public class HelloTest {
+}
diff --git a/it/src/test/java/com/sonar/runner/it/CacheTest.java b/it/src/test/java/com/sonar/runner/it/CacheTest.java
new file mode 100644 (file)
index 0000000..788b82c
--- /dev/null
@@ -0,0 +1,68 @@
+/*
+ * 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;
+  }
+
+}
diff --git a/it/src/test/java/com/sonar/runner/it/JavaTest.java b/it/src/test/java/com/sonar/runner/it/JavaTest.java
new file mode 100644 (file)
index 0000000..23cc3a4
--- /dev/null
@@ -0,0 +1,263 @@
+/*
+ * 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";
+    }
+  }
+}
diff --git a/it/src/test/java/com/sonar/runner/it/MultimoduleTest.java b/it/src/test/java/com/sonar/runner/it/MultimoduleTest.java
new file mode 100644 (file)
index 0000000..35dc8d9
--- /dev/null
@@ -0,0 +1,249 @@
+/*
+ * 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));
+  }
+}
diff --git a/it/src/test/java/com/sonar/runner/it/RunnerTestCase.java b/it/src/test/java/com/sonar/runner/it/RunnerTestCase.java
new file mode 100644 (file)
index 0000000..bd308c4
--- /dev/null
@@ -0,0 +1,69 @@
+/*
+ * 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;
+  }
+}
diff --git a/it/src/test/java/com/sonar/runner/it/SonarRunnerTestSuite.java b/it/src/test/java/com/sonar/runner/it/SonarRunnerTestSuite.java
new file mode 100644 (file)
index 0000000..e33768d
--- /dev/null
@@ -0,0 +1,30 @@
+/*
+ * 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 {
+
+}
diff --git a/it/src/test/resources/requires-bytecode-profile.xml b/it/src/test/resources/requires-bytecode-profile.xml
new file mode 100644 (file)
index 0000000..284596f
--- /dev/null
@@ -0,0 +1,17 @@
+<?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>
\ No newline at end of file
diff --git a/it/src/test/resources/sonar-way-profile.xml b/it/src/test/resources/sonar-way-profile.xml
new file mode 100644 (file)
index 0000000..a5b203d
--- /dev/null
@@ -0,0 +1,691 @@
+<?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>
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 2b02cc0ca07229efd9a3688bca5b9b633415c88b..ba1bb66f73dd4e251b414aa48c622d6a433ea484 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -1,12 +1,12 @@
 <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-plugins</groupId>
+    <groupId>org.sonarsource.parent</groupId>
     <artifactId>parent</artifactId>
-    <version>19</version>
+    <version>23</version>
   </parent>
 
-  <groupId>org.codehaus.sonar.runner</groupId>
+  <groupId>org.sonarsource.sonar-runner</groupId>
   <artifactId>sonar-runner</artifactId>
   <version>2.5-SNAPSHOT</version>
   <packaging>pom</packaging>
   <url>http://docs.codehaus.org/display/SONAR/Analyzing+with+SonarQube+Runner</url>
   <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>
     <module>sonar-runner-api</module>
     <module>sonar-runner-batch</module>
index 6e941153311ec0bcdd0512ec9ef2fc0d2c610aca..a1cf3c66164553d16e3baea939a8fa4f2287db43 100644 (file)
@@ -1,7 +1,7 @@
 <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.runner</groupId>
+    <groupId>org.sonarsource.sonar-runner</groupId>
     <artifactId>sonar-runner</artifactId>
     <version>2.5-SNAPSHOT</version>
   </parent>
index c592237da6fb08b9eb9657b6423307f8a90c8696..a5da52d7e7194bd0a9c2248dd721ac52adb39b63 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * SonarQube Runner - API
  * Copyright (C) 2011 SonarSource
- * dev@sonar.codehaus.org
+ * 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
index 21f08625ea9957aab741b03e4ce4303242754890..6b2ae23e144717d513c82f77b89fe56a5e4deed6 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * SonarQube Runner - API
  * Copyright (C) 2011 SonarSource
- * dev@sonar.codehaus.org
+ * 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
index 4dfe94e59da6c4b9db1814740eec7a39fbda04e2..71a0c913f9cc484308caca0cf9112b9feab1851f 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * SonarQube Runner - API
  * Copyright (C) 2011 SonarSource
- * dev@sonar.codehaus.org
+ * 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
index 8d7121443f196281051b2ffe632f9ca6c12bef17..cc1bcef7886ac0ccc5100566385390e5dfbbe3e6 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * SonarQube Runner - API
  * Copyright (C) 2011 SonarSource
- * dev@sonar.codehaus.org
+ * 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
index e903d74a1d8f0d484e1157ad58d64618596c1f7c..0a855b71eb0cc4b55e663243f091413b52345e81 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * SonarQube Runner - API
  * Copyright (C) 2011 SonarSource
- * dev@sonar.codehaus.org
+ * 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
index 2aa3b97f888571af8e76642ad28b6927b99ca57b..d91dbf90c4c7afbb210a11ceccf1583faf79fad2 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * SonarQube Runner - API
  * Copyright (C) 2011 SonarSource
- * dev@sonar.codehaus.org
+ * 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
index 0ec4f45418099a10f9b96497f0a2979b91bbc04f..8d8154b400eb0354142a9a64a65a17ba87bd33d5 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * SonarQube Runner - API
  * Copyright (C) 2011 SonarSource
- * dev@sonar.codehaus.org
+ * 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
index 016e6147d7f36d3d96e8758eef29567548b72c71..eac27ce1343aab9a55214828c52facad64f84ff7 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * SonarQube Runner - API
  * Copyright (C) 2011 SonarSource
- * dev@sonar.codehaus.org
+ * 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
index cef12b4bc049884a89300a6efed0a97712ac7a5e..29ea62e5c9f75f1188a56e3e6fcd383e17bae187 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * SonarQube Runner - API
  * Copyright (C) 2011 SonarSource
- * dev@sonar.codehaus.org
+ * 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
index cebd22d3ede43341e5bab42966f44cd78001cb68..4a624863a2ecf95e53e34c17b4d0bb49c792c884 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * SonarQube Runner - API
  * Copyright (C) 2011 SonarSource
- * dev@sonar.codehaus.org
+ * 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
index 48c33194b4461fbcd0fe4e81cb334d234960dc3a..03e7f22109ee50cf2dc93af0c9bd2fd35dd0d891 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * SonarQube Runner - API
  * Copyright (C) 2011 SonarSource
- * dev@sonar.codehaus.org
+ * 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
index d5c52b34bf93b4a62a3e1c41a0d9487086d31994..958b1b0ad8f14e781c4cb320b1e900f39f1020e6 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * SonarQube Runner - API
  * Copyright (C) 2011 SonarSource
- * dev@sonar.codehaus.org
+ * 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
index 601776df3f93ed157c9cc287121bf7c38481b296..5c2a590ee1b1b0f6651e41474cf1f590cd290f68 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * SonarQube Runner - API
  * Copyright (C) 2011 SonarSource
- * dev@sonar.codehaus.org
+ * 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
index 411d73132424baae25b06a63728ade3c4002ba4d..629ca435371dbdd2255c8336551fca1ea3fa6e92 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * SonarQube Runner - API
  * Copyright (C) 2011 SonarSource
- * dev@sonar.codehaus.org
+ * 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
index 62fc1577fdca88fadec3e7b0eeac6f0b81b8a63a..f3f88ba44dd9c42c4aa9bcad6beab61bffdda917 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * SonarQube Runner - API
  * Copyright (C) 2011 SonarSource
- * dev@sonar.codehaus.org
+ * 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
index c4e3fa7ac3d2deb6da2cfb0b064f9fb96f55b70d..fee1d103bb82bea2884e6f1c00076e4720531ac0 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * SonarQube Runner - API
  * Copyright (C) 2011 SonarSource
- * dev@sonar.codehaus.org
+ * 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
index d181f230d843ba90160fcd0e315bfb5e76cb368b..262c859c049fa72e4711c83a1984bd2fb7ccf21b 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * SonarQube Runner - API
  * Copyright (C) 2011 SonarSource
- * dev@sonar.codehaus.org
+ * 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
index 9d609472314e19062bc83e9e0d52e151485acfe2..6d355058bca4969f00f1ffb0d5a95a4633bf18f6 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * SonarQube Runner - API
  * Copyright (C) 2011 SonarSource
- * dev@sonar.codehaus.org
+ * 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
index 291ee30858ebf9eeae22a4d73a8ddae18be7c874..7abd093944553ff08c02c54489f1863887319b88 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * SonarQube Runner - API
  * Copyright (C) 2011 SonarSource
- * dev@sonar.codehaus.org
+ * 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
index 045e36dd44d7f31f9dcce503442ebec6489fb684..89c07c796cce1c6335bfe585dcc59bf924661b65 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * SonarQube Runner - API
  * Copyright (C) 2011 SonarSource
- * dev@sonar.codehaus.org
+ * 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
index 642f41e7501003b1b58637e818bf1b12f22eb009..6d9003b94aa1ae20929fee0fbed8fa1521a4dc81 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * SonarQube Runner - API
  * Copyright (C) 2011 SonarSource
- * dev@sonar.codehaus.org
+ * 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
index d7ac772df0a94bddd5f124ef0635f5e8818411e3..4868737f96c4a45799e8dd3a44a2abb5c8b48767 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * SonarQube Runner - API
  * Copyright (C) 2011 SonarSource
- * dev@sonar.codehaus.org
+ * 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
index 3c45b3243833f3002aa85e3f3d7932f2c79b398b..0bce312b3d0c21e3095913dbb48410f2f06672df 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * SonarQube Runner - API
  * Copyright (C) 2011 SonarSource
- * dev@sonar.codehaus.org
+ * 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
index 386f66939235e4a9001be2bb3c3187b2f534f284..e838381301d00befa69cf02c8e7c06fcacc29b70 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * SonarQube Runner - API
  * Copyright (C) 2011 SonarSource
- * dev@sonar.codehaus.org
+ * 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
index ca8c651e8bb7a46000c8a3f183a2e3a0b74edfae..f78b87cfa4dfe3beb156480d0154d77c19d1aefd 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * SonarQube Runner - API
  * Copyright (C) 2011 SonarSource
- * dev@sonar.codehaus.org
+ * 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
index 3d98cf07680f8c717d434baa1fcf3f6b6bd1f652..653f61fdbe155f0d590810b2e03742649d7a8551 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * SonarQube Runner - API
  * Copyright (C) 2011 SonarSource
- * dev@sonar.codehaus.org
+ * 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
index c1cb9a50479040be0262e56b99bdccabff97b8e8..f2a681bae7f6c3b7f61ec704b91460087159590a 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * SonarQube Runner - API
  * Copyright (C) 2011 SonarSource
- * dev@sonar.codehaus.org
+ * 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
index d9eb6138f98b6d40e85aae14c0133d50e249b563..a186d72fa711facfb39513321e6995595ffa9c5d 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * SonarQube Runner - API
  * Copyright (C) 2011 SonarSource
- * dev@sonar.codehaus.org
+ * 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
index a75bb54cb6efecb6a88e0780965be0815225601d..9d47dad6f5e607ff5640c48d3958f519bb301aa7 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * SonarQube Runner - API
  * Copyright (C) 2011 SonarSource
- * dev@sonar.codehaus.org
+ * 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
index 35e02dfd917834fdf5c737258c28d856e1832d2f..8c6cb6c10a5954561e77c98b653bdd79b30e5b70 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * SonarQube Runner - API
  * Copyright (C) 2011 SonarSource
- * dev@sonar.codehaus.org
+ * 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
index 8d2c0d7d575228f04d61a0460c2b897ed66b4e6b..9de107cb3327a64dd217b64840c0df08470e228d 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * SonarQube Runner - API
  * Copyright (C) 2011 SonarSource
- * dev@sonar.codehaus.org
+ * 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
index 047d4e7bcc548e1c6b476a1e65af5a698b839333..a772901ed19d060b9f3093158a69561ab6d2a27c 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * SonarQube Runner - API
  * Copyright (C) 2011 SonarSource
- * dev@sonar.codehaus.org
+ * 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
index 36e5d08d72496d606062a3583f6f578259d2b9e5..9613132d7b482e8b121f4e3701858a476cd88c84 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * SonarQube Runner - API
  * Copyright (C) 2011 SonarSource
- * dev@sonar.codehaus.org
+ * 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
index 2cbfc7eb3ddf135f55d02bbcb16833fa34f7137d..221549d5d9ebdfc8a2f34fa5c9e34768fcec14f6 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * SonarQube Runner - API
  * Copyright (C) 2011 SonarSource
- * dev@sonar.codehaus.org
+ * 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
index f9bfd834d60da1fc161ad1a15f53b20016e3a1e3..7ed852a87920293e91df9c83b9060207823864e3 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * SonarQube Runner - API
  * Copyright (C) 2011 SonarSource
- * dev@sonar.codehaus.org
+ * 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
index d926203ef93dad24a2109413cdd63dd76f80076b..20016d849ff9e6099d4cb42ccdcc298c6050a8b3 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * SonarQube Runner - API
  * Copyright (C) 2011 SonarSource
- * dev@sonar.codehaus.org
+ * 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
index 2037a6277b8954b1c4b5037b457e7536bb7c086b..1a05e476f77b4985df6434b1f6612e7a34e4e489 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * SonarQube Runner - API
  * Copyright (C) 2011 SonarSource
- * dev@sonar.codehaus.org
+ * 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
index e015a26d0baf27fc1cb6ebc820d694b6afd42dd6..376ea42bbd6c4809f03b29b28248e4c87ca0d273 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * SonarQube Runner - API
  * Copyright (C) 2011 SonarSource
- * dev@sonar.codehaus.org
+ * 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
index 9ccb3b98711790c6e7a2c2ee54032e04cc558ac6..6555e66d58ff5ba4756b66b6184601d7bdcaafba 100644 (file)
@@ -1,7 +1,7 @@
 <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.runner</groupId>
+    <groupId>org.sonarsource.sonar-runner</groupId>
     <artifactId>sonar-runner</artifactId>
     <version>2.5-SNAPSHOT</version>
   </parent>
index 21b0d7323c1e70cac3a54fa707a9f5a7c0b8b292..834c11b94c3d0732dc199534052f5f7b92045487 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * SonarQube Runner - Batch Interface
  * Copyright (C) 2011 SonarSource
- * dev@sonar.codehaus.org
+ * 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
index f17eb55599c5bf545ce3f1797284eec0bf16984f..5fd37546afdc850fcd57811b07eb78ffba163377 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * SonarQube Runner - Batch Interface
  * Copyright (C) 2011 SonarSource
- * dev@sonar.codehaus.org
+ * 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
index dc57821cab855aed1a91fb723209a541fd896482..e2fd475a4c6ee429923c6bb123c66c57013011db 100644 (file)
@@ -1,7 +1,7 @@
 <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.runner</groupId>
+    <groupId>org.sonarsource.sonar-runner</groupId>
     <artifactId>sonar-runner</artifactId>
     <version>2.5-SNAPSHOT</version>
   </parent>
index 4241da4327a5fbb4f3f3ddaa414775dcdb42819d..6b6a7103c2be2a7f44d5371173b465138c4dbfad 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * SonarQube Runner - Batch
  * Copyright (C) 2011 SonarSource
- * dev@sonar.codehaus.org
+ * 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
index 88dd0c9051fe465dc17062d4dae636a63d17a698..a2d16d0490a027bb5f35bbb983bd139f45723987 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * SonarQube Runner - Batch
  * Copyright (C) 2011 SonarSource
- * dev@sonar.codehaus.org
+ * 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
index 610ff755bd686425d42d5a71b2b5b5d824445eea..62f44352a733b12e24e5ac19924e4243205ec606 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * SonarQube Runner - Batch
  * Copyright (C) 2011 SonarSource
- * dev@sonar.codehaus.org
+ * 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
index 70a996917bf7c45d4227951db9f1471c011ac642..d438fdf4408d325cdf2510db08cef031c93b6c79 100644 (file)
@@ -13,7 +13,7 @@
       <useTransitiveFiltering>true</useTransitiveFiltering>
       <useProjectArtifact>true</useProjectArtifact>
       <excludes>
-        <exclude>org.codehaus.sonar.runner:sonar-runner-api</exclude>
+        <exclude>org.sonarsource.sonar-runner:sonar-runner-api</exclude>
       </excludes>
     </dependencySet>
   </dependencySets>
index 2c3d0c110ee1e230fceeeac75b31ba75b41d6486..179b49f7e9a3bf51c439042867ae6408ef2baed2 100644 (file)
@@ -1,7 +1,7 @@
 <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.runner</groupId>
+    <groupId>org.sonarsource.sonar-runner</groupId>
     <artifactId>sonar-runner</artifactId>
     <version>2.5-SNAPSHOT</version>
   </parent>
index 2c79dc819e666c4c199f629a7687628907413992..f1a038b2b5abf745a2906ab4b0bdc56aeadcb125 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * SonarQube Runner - CLI - Distribution
  * Copyright (C) 2011 SonarSource
- * dev@sonar.codehaus.org
+ * 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
index e32a06ccaa1810efb58ff501471f084808e2757f..68627f7fa1fb3233277c8aef0848a28abdac01c9 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * SonarQube Runner - CLI - Distribution
  * Copyright (C) 2011 SonarSource
- * dev@sonar.codehaus.org
+ * 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
index 7c2ed3cf3a420d84b0a90ba9385a08d1a68875d2..6d53dc2c7e97963e2745bbdaef646e8f3a0aadd3 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * SonarQube Runner - CLI - Distribution
  * Copyright (C) 2011 SonarSource
- * dev@sonar.codehaus.org
+ * 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
index a68e2823da959b64d5cc26d228fbb6c48f8bbeb8..d69f3fd9554a28dd1313af9fe383c2042f9e54d3 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * SonarQube Runner - CLI - Distribution
  * Copyright (C) 2011 SonarSource
- * dev@sonar.codehaus.org
+ * 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
index 6971bc6f86e148cb71780bbd985fc4a977cd6097..6316122ecff0b3dfdeb65efaa92285afd99ce787 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * SonarQube Runner - CLI - Distribution
  * Copyright (C) 2011 SonarSource
- * dev@sonar.codehaus.org
+ * 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
index 60f6f316f72422ab2c1799f33266ce196fa50c47..3abe645100c19c4ac9b68b479ae1974d97f8bdbb 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * SonarQube Runner - CLI - Distribution
  * Copyright (C) 2011 SonarSource
- * dev@sonar.codehaus.org
+ * 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
index de5341a13c5983a3a9e738eb98e03c9968bb7b7c..3c52bc5ca1c01f0d4bfe9afdf732259d856920e1 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * SonarQube Runner - CLI - Distribution
  * Copyright (C) 2011 SonarSource
- * dev@sonar.codehaus.org
+ * 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
index 5089c127eabdd5b19fd37bcd3eff5647095a445e..5173137ccc2cb7009cb786efb866dd7f2f5bc584 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * SonarQube Runner - CLI - Distribution
  * Copyright (C) 2011 SonarSource
- * dev@sonar.codehaus.org
+ * 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
index 090eafdf81f08f36e5272cc8114c9ca81436265d..1ab1458cbe628dfb325055dfb5c855f70abc638e 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * SonarQube Runner - CLI - Distribution
  * Copyright (C) 2011 SonarSource
- * dev@sonar.codehaus.org
+ * 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
index f92c312243abc7bdbf330efcb62141d8ca5e7e6b..4a17c31d86b522ad5e6f928285aa1a29513e8c0a 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * SonarQube Runner - CLI - Distribution
  * Copyright (C) 2011 SonarSource
- * dev@sonar.codehaus.org
+ * 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
index 9eda2b94c744529633c002033beb73dc20522c3c..a0332c2b27758b3627862ee4289d93c4165d1dc2 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * SonarQube Runner - CLI - Distribution
  * Copyright (C) 2011 SonarSource
- * dev@sonar.codehaus.org
+ * 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
index bfeb23d3a08696946fe0f3d76416faf3d8f6276f..94524636264c067bf58a33d394c3092d686a943f 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * SonarQube Runner - CLI - Distribution
  * Copyright (C) 2011 SonarSource
- * dev@sonar.codehaus.org
+ * 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
index 5b7d8fec7691ba3bb25177bbd45bf1017ef6dd7a..857ed8c6ca4b9db90ad73293aa6cf59eca4678f0 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * SonarQube Runner - CLI - Distribution
  * Copyright (C) 2011 SonarSource
- * dev@sonar.codehaus.org
+ * 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
index 29955d3daf00496873af66dfac06da1a3a7e3f86..7ca26886c87750110ee5a2a288413c2411f40b90 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * SonarQube Runner - CLI - Distribution
  * Copyright (C) 2011 SonarSource
- * dev@sonar.codehaus.org
+ * 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
index 7e570b1943800ebcaac0e6e6377a1bf6431df7dc..98a5b8542b837d581ca0964354e8853e36f38356 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * SonarQube Runner - CLI - Distribution
  * Copyright (C) 2011 SonarSource
- * dev@sonar.codehaus.org
+ * 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
index 6093b41777b088661841ee1b87fccdcf124690a7..ff8fa0b6eb769578eff0431508084fbf81b6dc4b 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * SonarQube Runner - CLI - Distribution
  * Copyright (C) 2011 SonarSource
- * dev@sonar.codehaus.org
+ * 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
index edeffffe667ec8d3ea27b216a955a06aaee88cd1..8f16d34ad02ccacf5c1f5cf088c24d1eec2d021a 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * SonarQube Runner - CLI - Distribution
  * Copyright (C) 2011 SonarSource
- * dev@sonar.codehaus.org
+ * 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
index d7705a70d82b6fd62e9d91d2a8a08052ac7efef7..7f2d5375ccf5519105df7c74ab4f802c10baf574 100755 (executable)
--- a/travis.sh
+++ b/travis.sh
@@ -3,9 +3,26 @@
 set -euo pipefail
 
 function installTravisTools {
-  curl -sSL https://raw.githubusercontent.com/sonarsource/travis-utils/v10/install.sh | bash
+  curl -sSL https://raw.githubusercontent.com/sonarsource/travis-utils/v11/install.sh | bash
+  source /tmp/travis-utils/env.sh
 }
 
-installTravisTools
-travis_build_green "SonarSource/sonarqube" "master"
-mvn verify -B -e -V
+case "$TESTS" in
+
+CI)
+  installTravisTools
+  travis_build_green "SonarSource/sonarqube" "master"
+  mvn verify -B -e -V
+  ;;
+
+IT-DEV)
+  cat /etc/hosts
+  rpm -qa | grep glibc
+  installTravisTools
+  mvn install -Dsource.skip=true -Denforcer.skip=true -Danimal.sniffer.skip=true -Dmaven.test.skip=true
+  travis_build_green "SonarSource/sonarqube" "master"
+  cd it
+  mvn -Dsonar.runtimeVersion="DEV" -DsonarRunner.version="2.5-SNAPSHOT" -Dmaven.test.redirectTestOutputToFile=false install
+  ;;
+
+esac