Browse Source

merge it-sonar-runner and update groupId

tags/2.5-rc1
Duarte Meneses 8 years ago
parent
commit
73b46e381f
100 changed files with 1869 additions and 45 deletions
  1. 10
    0
      .travis.yml
  2. 72
    0
      it/pom.xml
  3. 6
    0
      it/projects/bad-source-dirs/sonar-project.properties
  4. 7
    0
      it/projects/bad-source-dirs/src/Hello.java
  5. 7
    0
      it/projects/basedir-with-source/Hello.java
  6. 7
    0
      it/projects/basedir-with-source/sonar-project.properties
  7. 7
    0
      it/projects/java-bytecode/.sonar/findbugs-include.xml
  8. 69
    0
      it/projects/java-bytecode/.sonar/findbugs-result.xml
  9. 32
    0
      it/projects/java-bytecode/build.xml
  10. BIN
      it/projects/java-bytecode/build/classes/HasFindbugsViolation.class
  11. BIN
      it/projects/java-bytecode/lib/deprecated.jar
  12. 9
    0
      it/projects/java-bytecode/sonar-project.properties
  13. 13
    0
      it/projects/java-bytecode/src/HasFindbugsViolation.java
  14. 7
    0
      it/projects/java-sample/sonar-project.properties
  15. 9
    0
      it/projects/java-sample/src/basic/Hello.java
  16. 8
    0
      it/projects/java-sample/src/basic/World.java
  17. 2
    0
      it/projects/multi-module/advanced/using-config-file-prop/module1/src/Hello.java
  18. 2
    0
      it/projects/multi-module/advanced/using-config-file-prop/module1/temp/generated-sonar-project.properties
  19. 2
    0
      it/projects/multi-module/advanced/using-config-file-prop/module2/src/Hello.java
  20. 2
    0
      it/projects/multi-module/advanced/using-config-file-prop/module2/temp/generated-sonar-project.properties
  21. 10
    0
      it/projects/multi-module/advanced/using-config-file-prop/sonar-project.properties
  22. 2
    0
      it/projects/multi-module/customization/deep-path-for-modules/modules/module1/src/Hello.java
  23. 2
    0
      it/projects/multi-module/customization/deep-path-for-modules/modules/module2/src/Hello.java
  24. 13
    0
      it/projects/multi-module/customization/deep-path-for-modules/sonar-project.properties
  25. 2
    0
      it/projects/multi-module/customization/module-path-with-space/my module 1/src/Hello.java
  26. 2
    0
      it/projects/multi-module/customization/module-path-with-space/my module 2/src/Hello.java
  27. 14
    0
      it/projects/multi-module/customization/module-path-with-space/sonar-project.properties
  28. 2
    0
      it/projects/multi-module/customization/overwriting-parent-properties/module1/src1/Hello.java
  29. 4
    0
      it/projects/multi-module/customization/overwriting-parent-properties/module2/sonar-project.properties
  30. 2
    0
      it/projects/multi-module/customization/overwriting-parent-properties/module2/src2/Hello.java
  31. 16
    0
      it/projects/multi-module/customization/overwriting-parent-properties/sonar-project.properties
  32. 2
    0
      it/projects/multi-module/failures/unexisting-base-dir/module1/src/Hello.java
  33. 2
    0
      it/projects/multi-module/failures/unexisting-base-dir/module2/src/Hello.java
  34. 10
    0
      it/projects/multi-module/failures/unexisting-base-dir/sonar-project.properties
  35. 2
    0
      it/projects/multi-module/failures/unexisting-config-file/module1/src/Hello.java
  36. 1
    0
      it/projects/multi-module/failures/unexisting-config-file/module1/temp/empty-dir.txt
  37. 2
    0
      it/projects/multi-module/failures/unexisting-config-file/module2/src/Hello.java
  38. 2
    0
      it/projects/multi-module/failures/unexisting-config-file/module2/temp/generated-sonar-project.properties
  39. 10
    0
      it/projects/multi-module/failures/unexisting-config-file/sonar-project.properties
  40. 14
    0
      it/projects/multi-module/multi-language/sonar-project.properties
  41. 2
    0
      it/projects/multi-module/multi-language/src/main/java/Hello.java
  42. 3
    0
      it/projects/multi-module/multi-language/src/main/js/Hello.js
  43. 2
    0
      it/projects/multi-module/simplest/simplest-with-props-on-each-module/module1/sonar-project.properties
  44. 2
    0
      it/projects/multi-module/simplest/simplest-with-props-on-each-module/module1/src/Hello.java
  45. 3
    0
      it/projects/multi-module/simplest/simplest-with-props-on-each-module/module2/sonar-project.properties
  46. 2
    0
      it/projects/multi-module/simplest/simplest-with-props-on-each-module/module2/src/Hello.java
  47. 7
    0
      it/projects/multi-module/simplest/simplest-with-props-on-each-module/sonar-project.properties
  48. 1
    0
      it/projects/multi-module/simplest/simplest-with-props-on-each-module/src/placeholder.txt
  49. 2
    0
      it/projects/multi-module/simplest/simplest-with-props-on-root/module1/src/Hello.java
  50. 2
    0
      it/projects/multi-module/simplest/simplest-with-props-on-root/module2/src/Hello.java
  51. 11
    0
      it/projects/multi-module/simplest/simplest-with-props-on-root/sonar-project.properties
  52. 5
    0
      it/projects/override-working-dir/sonar-project.properties
  53. 7
    0
      it/projects/override-working-dir/src/Hello.java
  54. BIN
      it/projects/using-deprecated-props/build/Hello.class
  55. BIN
      it/projects/using-deprecated-props/lib/deprecated.jar
  56. 8
    0
      it/projects/using-deprecated-props/sonar-project.properties
  57. 2
    0
      it/projects/using-deprecated-props/src/Hello.java
  58. 2
    0
      it/projects/using-deprecated-props/tests/HelloTest.java
  59. 68
    0
      it/src/test/java/com/sonar/runner/it/CacheTest.java
  60. 263
    0
      it/src/test/java/com/sonar/runner/it/JavaTest.java
  61. 249
    0
      it/src/test/java/com/sonar/runner/it/MultimoduleTest.java
  62. 69
    0
      it/src/test/java/com/sonar/runner/it/RunnerTestCase.java
  63. 30
    0
      it/src/test/java/com/sonar/runner/it/SonarRunnerTestSuite.java
  64. 17
    0
      it/src/test/resources/requires-bytecode-profile.xml
  65. 691
    0
      it/src/test/resources/sonar-way-profile.xml
  66. 3
    12
      pom.xml
  67. 1
    1
      sonar-runner-api/pom.xml
  68. 1
    1
      sonar-runner-api/src/main/java/org/sonar/runner/api/Dirs.java
  69. 1
    1
      sonar-runner-api/src/main/java/org/sonar/runner/api/EmbeddedRunner.java
  70. 1
    1
      sonar-runner-api/src/main/java/org/sonar/runner/api/LogOutput.java
  71. 1
    1
      sonar-runner-api/src/main/java/org/sonar/runner/api/ProcessMonitor.java
  72. 1
    1
      sonar-runner-api/src/main/java/org/sonar/runner/api/RunnerProperties.java
  73. 1
    1
      sonar-runner-api/src/main/java/org/sonar/runner/api/RunnerVersion.java
  74. 1
    1
      sonar-runner-api/src/main/java/org/sonar/runner/api/ScanProperties.java
  75. 1
    1
      sonar-runner-api/src/main/java/org/sonar/runner/api/StdOutLogOutput.java
  76. 1
    1
      sonar-runner-api/src/main/java/org/sonar/runner/api/Utils.java
  77. 1
    1
      sonar-runner-api/src/main/java/org/sonar/runner/api/package-info.java
  78. 1
    1
      sonar-runner-api/src/main/java/org/sonar/runner/impl/InternalProperties.java
  79. 1
    1
      sonar-runner-api/src/main/java/org/sonar/runner/impl/IsolatedClassloader.java
  80. 1
    1
      sonar-runner-api/src/main/java/org/sonar/runner/impl/IsolatedLauncherFactory.java
  81. 1
    1
      sonar-runner-api/src/main/java/org/sonar/runner/impl/IsolatedLauncherProxy.java
  82. 1
    1
      sonar-runner-api/src/main/java/org/sonar/runner/impl/JarDownloader.java
  83. 1
    1
      sonar-runner-api/src/main/java/org/sonar/runner/impl/JarExtractor.java
  84. 1
    1
      sonar-runner-api/src/main/java/org/sonar/runner/impl/Jars.java
  85. 1
    1
      sonar-runner-api/src/main/java/org/sonar/runner/impl/RunnerException.java
  86. 1
    1
      sonar-runner-api/src/main/java/org/sonar/runner/impl/ServerConnection.java
  87. 1
    1
      sonar-runner-api/src/main/java/org/sonar/runner/impl/TempCleaning.java
  88. 1
    1
      sonar-runner-api/src/main/java/org/sonar/runner/impl/VersionUtils.java
  89. 1
    1
      sonar-runner-api/src/main/java/org/sonar/runner/impl/package-info.java
  90. 1
    1
      sonar-runner-api/src/test/java/org/sonar/runner/api/DirsTest.java
  91. 1
    1
      sonar-runner-api/src/test/java/org/sonar/runner/api/EmbeddedRunnerTest.java
  92. 1
    1
      sonar-runner-api/src/test/java/org/sonar/runner/api/RunnerVersionTest.java
  93. 1
    1
      sonar-runner-api/src/test/java/org/sonar/runner/api/UtilsTest.java
  94. 1
    1
      sonar-runner-api/src/test/java/org/sonar/runner/impl/IsolatedClassloaderTest.java
  95. 1
    1
      sonar-runner-api/src/test/java/org/sonar/runner/impl/IsolatedLauncherFactoryTest.java
  96. 1
    1
      sonar-runner-api/src/test/java/org/sonar/runner/impl/IsolatedLauncherProxyTest.java
  97. 1
    1
      sonar-runner-api/src/test/java/org/sonar/runner/impl/JarDownloaderTest.java
  98. 1
    1
      sonar-runner-api/src/test/java/org/sonar/runner/impl/JarExtractorTest.java
  99. 1
    1
      sonar-runner-api/src/test/java/org/sonar/runner/impl/JarsTest.java
  100. 0
    0
      sonar-runner-api/src/test/java/org/sonar/runner/impl/MockHttpServer.java

+ 10
- 0
.travis.yml View 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

+ 72
- 0
it/pom.xml View File

@@ -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>

+ 6
- 0
it/projects/bad-source-dirs/sonar-project.properties View File

@@ -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

+ 7
- 0
it/projects/bad-source-dirs/src/Hello.java View File

@@ -0,0 +1,7 @@
public class Hello {

public void hello() {
int i=356;
if (true) i=5658;
}
}

+ 7
- 0
it/projects/basedir-with-source/Hello.java View File

@@ -0,0 +1,7 @@
public class Hello {

public void hello() {
int i=356;
if (true) i=5658;
}
}

+ 7
- 0
it/projects/basedir-with-source/sonar-project.properties View File

@@ -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=.

+ 7
- 0
it/projects/java-bytecode/.sonar/findbugs-include.xml View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated by SonarQube -->
<FindBugsFilter>
<Match>
<Bug pattern="DM_EXIT"/>
</Match>
</FindBugsFilter>

+ 69
- 0
it/projects/java-bytecode/.sonar/findbugs-result.xml View File

@@ -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>

+ 32
- 0
it/projects/java-bytecode/build.xml View File

@@ -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>

BIN
it/projects/java-bytecode/build/classes/HasFindbugsViolation.class View File


BIN
it/projects/java-bytecode/lib/deprecated.jar View File


+ 9
- 0
it/projects/java-bytecode/sonar-project.properties View File

@@ -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

+ 13
- 0
it/projects/java-bytecode/src/HasFindbugsViolation.java View File

@@ -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);
}
}

+ 7
- 0
it/projects/java-sample/sonar-project.properties View File

@@ -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

+ 9
- 0
it/projects/java-sample/src/basic/Hello.java View File

@@ -0,0 +1,9 @@
package basic;

public class Hello {

public void hello() {
int i=356;
if (true) i=5658;
}
}

+ 8
- 0
it/projects/java-sample/src/basic/World.java View File

@@ -0,0 +1,8 @@
package basic;

public final class World {

public void world() {
System.out.println("hello world");
}
}

+ 2
- 0
it/projects/multi-module/advanced/using-config-file-prop/module1/src/Hello.java View File

@@ -0,0 +1,2 @@
public class Hello {
}

+ 2
- 0
it/projects/multi-module/advanced/using-config-file-prop/module1/temp/generated-sonar-project.properties View File

@@ -0,0 +1,2 @@
sonar.projectName=Module 1
sonar.projectBaseDir=..

+ 2
- 0
it/projects/multi-module/advanced/using-config-file-prop/module2/src/Hello.java View File

@@ -0,0 +1,2 @@
public class Hello {
}

+ 2
- 0
it/projects/multi-module/advanced/using-config-file-prop/module2/temp/generated-sonar-project.properties View File

@@ -0,0 +1,2 @@
sonar.projectName=Module 2
sonar.projectBaseDir=..

+ 10
- 0
it/projects/multi-module/advanced/using-config-file-prop/sonar-project.properties View File

@@ -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

+ 2
- 0
it/projects/multi-module/customization/deep-path-for-modules/modules/module1/src/Hello.java View File

@@ -0,0 +1,2 @@
public class Hello {
}

+ 2
- 0
it/projects/multi-module/customization/deep-path-for-modules/modules/module2/src/Hello.java View File

@@ -0,0 +1,2 @@
public class Hello {
}

+ 13
- 0
it/projects/multi-module/customization/deep-path-for-modules/sonar-project.properties View File

@@ -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

+ 2
- 0
it/projects/multi-module/customization/module-path-with-space/my module 1/src/Hello.java View File

@@ -0,0 +1,2 @@
public class Hello {
}

+ 2
- 0
it/projects/multi-module/customization/module-path-with-space/my module 2/src/Hello.java View File

@@ -0,0 +1,2 @@
public class Hello {
}

+ 14
- 0
it/projects/multi-module/customization/module-path-with-space/sonar-project.properties View File

@@ -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

+ 2
- 0
it/projects/multi-module/customization/overwriting-parent-properties/module1/src1/Hello.java View File

@@ -0,0 +1,2 @@
public class Hello {
}

+ 4
- 0
it/projects/multi-module/customization/overwriting-parent-properties/module2/sonar-project.properties View File

@@ -0,0 +1,4 @@
sonar.projectKey=module2-new-key
sonar.projectName=Module 2
sonar.projectDescription=Description of module 2
sonar.sources=src2

+ 2
- 0
it/projects/multi-module/customization/overwriting-parent-properties/module2/src2/Hello.java View File

@@ -0,0 +1,2 @@
public class Hello {
}

+ 16
- 0
it/projects/multi-module/customization/overwriting-parent-properties/sonar-project.properties View File

@@ -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

+ 2
- 0
it/projects/multi-module/failures/unexisting-base-dir/module1/src/Hello.java View File

@@ -0,0 +1,2 @@
public class Hello {
}

+ 2
- 0
it/projects/multi-module/failures/unexisting-base-dir/module2/src/Hello.java View File

@@ -0,0 +1,2 @@
public class Hello {
}

+ 10
- 0
it/projects/multi-module/failures/unexisting-base-dir/sonar-project.properties View File

@@ -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

+ 2
- 0
it/projects/multi-module/failures/unexisting-config-file/module1/src/Hello.java View File

@@ -0,0 +1,2 @@
public class Hello {
}

+ 1
- 0
it/projects/multi-module/failures/unexisting-config-file/module1/temp/empty-dir.txt View File

@@ -0,0 +1 @@
File to be sure that SVN keeps this "empty" directory

+ 2
- 0
it/projects/multi-module/failures/unexisting-config-file/module2/src/Hello.java View File

@@ -0,0 +1,2 @@
public class Hello {
}

+ 2
- 0
it/projects/multi-module/failures/unexisting-config-file/module2/temp/generated-sonar-project.properties View File

@@ -0,0 +1,2 @@
sonar.projectName=Module 2
sonar.projectBaseDir=..

+ 10
- 0
it/projects/multi-module/failures/unexisting-config-file/sonar-project.properties View File

@@ -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

+ 14
- 0
it/projects/multi-module/multi-language/sonar-project.properties View File

@@ -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

+ 2
- 0
it/projects/multi-module/multi-language/src/main/java/Hello.java View File

@@ -0,0 +1,2 @@
public class Hello {
}

+ 3
- 0
it/projects/multi-module/multi-language/src/main/js/Hello.js View File

@@ -0,0 +1,3 @@
function hello() {
alert("Hello World");
}

+ 2
- 0
it/projects/multi-module/simplest/simplest-with-props-on-each-module/module1/sonar-project.properties View File

@@ -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')

+ 2
- 0
it/projects/multi-module/simplest/simplest-with-props-on-each-module/module1/src/Hello.java View File

@@ -0,0 +1,2 @@
public class Hello {
}

+ 3
- 0
it/projects/multi-module/simplest/simplest-with-props-on-each-module/module2/sonar-project.properties View File

@@ -0,0 +1,3 @@
# here, we overwrite "sonar.projectKey" and "sonar.projectName" for 'module2'
sonar.projectKey=overridden-key-for-module2
sonar.projectName=Module 2

+ 2
- 0
it/projects/multi-module/simplest/simplest-with-props-on-each-module/module2/src/Hello.java View File

@@ -0,0 +1,2 @@
public class Hello {
}

+ 7
- 0
it/projects/multi-module/simplest/simplest-with-props-on-each-module/sonar-project.properties View File

@@ -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

+ 1
- 0
it/projects/multi-module/simplest/simplest-with-props-on-each-module/src/placeholder.txt View File

@@ -0,0 +1 @@
The root module contains a src folder but it will not be analysed (SONARPLUGINS-2295) and a warning will be displayed.

+ 2
- 0
it/projects/multi-module/simplest/simplest-with-props-on-root/module1/src/Hello.java View File

@@ -0,0 +1,2 @@
public class Hello {
}

+ 2
- 0
it/projects/multi-module/simplest/simplest-with-props-on-root/module2/src/Hello.java View File

@@ -0,0 +1,2 @@
public class Hello {
}

+ 11
- 0
it/projects/multi-module/simplest/simplest-with-props-on-root/sonar-project.properties View File

@@ -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')

+ 5
- 0
it/projects/override-working-dir/sonar-project.properties View File

@@ -0,0 +1,5 @@
sonar.projectKey=override-working-dir
sonar.projectName=Override working dir
sonar.projectVersion=1.0-SNAPSHOT

sonar.sources=src

+ 7
- 0
it/projects/override-working-dir/src/Hello.java View File

@@ -0,0 +1,7 @@
public class Hello {

public void hello() {
int i=356;
if (true) i=5658;
}
}

BIN
it/projects/using-deprecated-props/build/Hello.class View File


BIN
it/projects/using-deprecated-props/lib/deprecated.jar View File


+ 8
- 0
it/projects/using-deprecated-props/sonar-project.properties View File

@@ -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

+ 2
- 0
it/projects/using-deprecated-props/src/Hello.java View File

@@ -0,0 +1,2 @@
public class Hello {
}

+ 2
- 0
it/projects/using-deprecated-props/tests/HelloTest.java View File

@@ -0,0 +1,2 @@
public class HelloTest {
}

+ 68
- 0
it/src/test/java/com/sonar/runner/it/CacheTest.java View File

@@ -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;
}

}

+ 263
- 0
it/src/test/java/com/sonar/runner/it/JavaTest.java View File

@@ -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";
}
}
}

+ 249
- 0
it/src/test/java/com/sonar/runner/it/MultimoduleTest.java View File

@@ -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));
}
}

+ 69
- 0
it/src/test/java/com/sonar/runner/it/RunnerTestCase.java View File

@@ -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;
}
}

+ 30
- 0
it/src/test/java/com/sonar/runner/it/SonarRunnerTestSuite.java View File

@@ -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 {

}

+ 17
- 0
it/src/test/resources/requires-bytecode-profile.xml View File

@@ -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>

+ 691
- 0
it/src/test/resources/sonar-way-profile.xml View File

@@ -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>

+ 3
- 12
pom.xml View File

@@ -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>
@@ -14,15 +14,6 @@
<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>

+ 1
- 1
sonar-runner-api/pom.xml View 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>

+ 1
- 1
sonar-runner-api/src/main/java/org/sonar/runner/api/Dirs.java View 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

+ 1
- 1
sonar-runner-api/src/main/java/org/sonar/runner/api/EmbeddedRunner.java View 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

+ 1
- 1
sonar-runner-api/src/main/java/org/sonar/runner/api/LogOutput.java View 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

+ 1
- 1
sonar-runner-api/src/main/java/org/sonar/runner/api/ProcessMonitor.java View 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

+ 1
- 1
sonar-runner-api/src/main/java/org/sonar/runner/api/RunnerProperties.java View 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

+ 1
- 1
sonar-runner-api/src/main/java/org/sonar/runner/api/RunnerVersion.java View 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

+ 1
- 1
sonar-runner-api/src/main/java/org/sonar/runner/api/ScanProperties.java View 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

+ 1
- 1
sonar-runner-api/src/main/java/org/sonar/runner/api/StdOutLogOutput.java View 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

+ 1
- 1
sonar-runner-api/src/main/java/org/sonar/runner/api/Utils.java View 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

+ 1
- 1
sonar-runner-api/src/main/java/org/sonar/runner/api/package-info.java View 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

+ 1
- 1
sonar-runner-api/src/main/java/org/sonar/runner/impl/InternalProperties.java View 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

+ 1
- 1
sonar-runner-api/src/main/java/org/sonar/runner/impl/IsolatedClassloader.java View 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

+ 1
- 1
sonar-runner-api/src/main/java/org/sonar/runner/impl/IsolatedLauncherFactory.java View 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

+ 1
- 1
sonar-runner-api/src/main/java/org/sonar/runner/impl/IsolatedLauncherProxy.java View 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

+ 1
- 1
sonar-runner-api/src/main/java/org/sonar/runner/impl/JarDownloader.java View 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

+ 1
- 1
sonar-runner-api/src/main/java/org/sonar/runner/impl/JarExtractor.java View 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

+ 1
- 1
sonar-runner-api/src/main/java/org/sonar/runner/impl/Jars.java View 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

+ 1
- 1
sonar-runner-api/src/main/java/org/sonar/runner/impl/RunnerException.java View 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

+ 1
- 1
sonar-runner-api/src/main/java/org/sonar/runner/impl/ServerConnection.java View 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

+ 1
- 1
sonar-runner-api/src/main/java/org/sonar/runner/impl/TempCleaning.java View 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

+ 1
- 1
sonar-runner-api/src/main/java/org/sonar/runner/impl/VersionUtils.java View 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

+ 1
- 1
sonar-runner-api/src/main/java/org/sonar/runner/impl/package-info.java View 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

+ 1
- 1
sonar-runner-api/src/test/java/org/sonar/runner/api/DirsTest.java View 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

+ 1
- 1
sonar-runner-api/src/test/java/org/sonar/runner/api/EmbeddedRunnerTest.java View 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

+ 1
- 1
sonar-runner-api/src/test/java/org/sonar/runner/api/RunnerVersionTest.java View 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

+ 1
- 1
sonar-runner-api/src/test/java/org/sonar/runner/api/UtilsTest.java View 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

+ 1
- 1
sonar-runner-api/src/test/java/org/sonar/runner/impl/IsolatedClassloaderTest.java View 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

+ 1
- 1
sonar-runner-api/src/test/java/org/sonar/runner/impl/IsolatedLauncherFactoryTest.java View 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

+ 1
- 1
sonar-runner-api/src/test/java/org/sonar/runner/impl/IsolatedLauncherProxyTest.java View 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

+ 1
- 1
sonar-runner-api/src/test/java/org/sonar/runner/impl/JarDownloaderTest.java View 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

+ 1
- 1
sonar-runner-api/src/test/java/org/sonar/runner/impl/JarExtractorTest.java View 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

+ 1
- 1
sonar-runner-api/src/test/java/org/sonar/runner/impl/JarsTest.java View 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

+ 0
- 0
sonar-runner-api/src/test/java/org/sonar/runner/impl/MockHttpServer.java View File


Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save