.netmavensonarqubegallio

sonar / maven context: Gallio execution failed. Searching why:?


I've got a server 2008 continuous integration box, on which I want to use Gallio so as to execute my MSTests and PartCover for my Sonar dashboard.

I installed Gallio 3.3.1 x64 along with PartCover, and so on.

Gallio works via Icarus on my test assemblies (thanks to this answer)

However, through Sonar, I've got this puzzling log trace (see bellow). Even though my tests assemblies are qualified as test project, the error message for Gallio is

'Embedded error: Gallio execution failed.
No test assembly was found. Please check your project's Gallio plugin configuration.'

Any idea on how to track and fix this issue?

Thanks,

Note: I could not for some reasons post this question on the Gallio-user group, so I try there.

[INFO] Execute: org.codehaus.sonar:sonar-maven-plugin:2.11:sonar
[INFO] [sonar:sonar {execution: default-sonar}]
[INFO]  Database dialect class org.sonar.jpa.dialect.Derby
[INFO]  Initializing Hibernate
[INFO]  The following 'sln' file has been found and will be used: D:\toto.sln
[INFO]  The project 'toto.Test' has been qualified as a test project.
[INFO]  The project 'titi.Test' has been qualified as a test project.

[INFO]  -------------  Analyzing toto
[INFO]  Selected quality profile : [name=Sonar C# Way,language=cs]
[INFO]  Configure maven plugins...
[INFO]  Compare to previous analysis (2011-11-30)
[INFO]  Compare over 5 days (2011-11-25, analysis of 2011-11-29 10:52:11.443)
[INFO]  Compare over 30 days (2011-10-31, analysis of 2011-11-29 10:52:11.443)
[INFO]  Initializer CSharpProjectInitializer...
[INFO]  Initializer CSharpProjectInitializer done: 6 ms
[INFO]  Skipping the non generated assembly of project : toto
[INFO]  No assembly to check with Gendarme
[INFO]  Skipping the non generated assembly of project : toto
[INFO]  No assembly to check with FxCop
[INFO]  Sensor org.sonar.plugins.csharp.core.CSharpSourceImporter@1acc1c2...
[INFO]  Sensor org.sonar.plugins.csharp.core.CSharpSourceImporter@1acc1c2 done: 116 ms
[INFO]  Sensor com.sonar.plugins.csharp.squid.C@caf6e7...
[INFO]  Sensor com.sonar.plugins.csharp.squid.C@caf6e7 done: 233 ms
[INFO]  Sensor org.sonar.plugins.csharp.gallio.GallioSensor@1b4bc2a...
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Can not execute Sonar

Embedded error: Gallio execution failed.
No test assembly was found. Please check your project's Gallio plugin configuration.
[INFO] ------------------------------------------------------------------------
[INFO] Trace
org.apache.maven.lifecycle.LifecycleExecutionException: Can not execute Sonar
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:719)
    at ...

Here's the POM, if ever needed:

<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>totoGroup</groupId>
  <artifactId>toto</artifactId>
  <name>TOTO</name>
  <version>0.0.1-SNAPSHOT</version>
   <packaging>netpack</packaging>

    <profiles> 
 <profile>
      <id>sonar-dotnet</id>
      <activation>
        <!-- Optional activation by default -->
        <activeByDefault>true</activeByDefault>
      </activation>
      <properties>
        <!-- Location of the the .Net installations (pick the one you need) -->
        <dotnet.4.0.sdk.directory>C:/Windows/Microsoft.NET/Framework/v4.0.30319</dotnet.4.0.sdk.directory>
        <fxcop.directory>C:/Program Files (x86)/Microsoft Fxcop 10.0</fxcop.directory>
        <partcover.directory>C:\Program Files (x86)\PartCover\PartCover .NET 4.0</partcover.directory>
        <sourcemonitor.directory>C:/Program Files (x86)/SourceMonitor</sourcemonitor.directory>
        <stylecop.directory>C:\Program Files (x86)\StyleCop 4.6</stylecop.directory>

        <sonar.host.url>http://10.101.99.198:20000</sonar.host.url>

      </properties>
   </profile>

   </profiles>

  <properties>
        <sonar.dotnet.visualstudio.solution.file>toto.sln</sonar.dotnet.visualstudio.solution.file>
    <sonar.dotnet.version>4.0</sonar.dotnet.version>
    <sonar.language>cs</sonar.language>
    <sonar.sourceEncoding>UTF-8</sonar.sourceEncoding>
  </properties>

  <build>
    <plugins>

      <plugin>
        <groupId>org.codehaus.sonar-plugins.dotnet</groupId>
        <artifactId>maven-dotnet-plugin</artifactId>
        <version>1.1</version>
        <extensions>true</extensions>
      </plugin>

      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>sonar-maven-plugin</artifactId>
        <configuration>
          <language>cs</language>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

Solution

  • Fount it (thanks for Fabrice Bellingard on the sunar_user mailing list), his own words:

    OK, you are building the project with the "Release" build configuration, so as you can see in Jenkins log, the compiled assemblies end up in the "bin/release" folder. However, you run the Sonar analysis with the default parameters, and so the C# Plugins look into "bin/Debug" folder to find assemblies.

    So you have 2 solutions: • either you compile the project with the "Debug" build configuration • or you specify the following property for the sonar analysis: "sonar.dotnet.buildConfigurations=Release" (see doc for that property on the Wiki)