We are running SonarQube Community Edition Version 7.9.1 (build 27448) (the currently latest docker image)
I have some nUnit tests but I'm struggling to get the code coverage data imported to SonarQube.
I have successfully used SonarScanner.MSBuild (sonar-scanner-msbuild-4.6.2.2108-net46) to import the code analysis and number of nUnit tests to SonarQube using the following commands:
SonarScanner.MSBuild.exe begin /k:"ProjectName" /d:sonar.host.url="..." /d:sonar.login="..." /d:sonar.cs.nunit.reportsPaths="NUnitResults.xml"
MSBuild.exe ....sln /t:Rebuild
nunit3-console.exe --result=NUnitResults.xml path\to\tests.dll
SonarScanner.MSBuild.exe end /d:sonar.login="..."
Now I want to use OpenCover to get the code coverage info to SonarQube so I'm using the following commands
SonarScanner.MSBuild.exe begin /k:"ProjectName" /d:sonar.host.url="..." /d:sonar.login="..." /d:sonar.cs.nunit.reportsPaths="NUnitResults.xml" /d:sonar.cs.opencover.reportsPaths="opencover.xml"
MSBuild.exe ....sln /t:Rebuild
nunit3-console.exe --result=NUnitResults.xml path\to\tests.dll
OpenCover.Console.exe -output:opencover.xml -register:user -target:"nunit3-console.exe" -targetargs:"path\to\tests.dll --result=NUnitResults.xml"
SonarScanner.MSBuild.exe end /d:sonar.login="..."
[I think I'm probably unnecessarily running the nUnit tests twice, but I'll sort that out once I've resolved the following issue]
The problem is I'm not getting any code coverage details on SonarQube.
Checking the SonarScanner log I can see the following output from OpenCover:
Executing: nunit3-console.exe
NUnit Console Runner 3.10.0 (.NET 2.0)
Copyright (c) 2019 Charlie Poole, Rob Prouse
06 September 2019 09:24:53
Runtime Environment
OS Version: Microsoft Windows NT 10.0.14393.0
CLR Version: 4.0.30319.42000
Test Files
path\to\UnitTests.dll
Run Settings
DisposeRunners: True
WorkDirectory: ...
ImageRuntimeVersion: 4.0.30319
ImageTargetFrameworkName: .NETFramework,Version=v4.6.1
ImageRequiresX86: False
ImageRequiresDefaultAppDomainAssemblyResolver: False
NumberOfTestWorkers: 8
Test Run Summary
Overall result: Passed
Test Count: 35, Passed: 35, Failed: 0, Warnings: 0, Inconclusive: 0, Skipped: 0
Start time: 2019-09-06 08:24:54Z
End time: 2019-09-06 08:24:57Z
Duration: 3.111 seconds
Results (nunit3) saved as NUnitResults.xml
Committing...
Visited Classes 12 of 12 (100)
Visited Methods 41 of 41 (100)
Visited Points 240 of 240 (100)
Visited Branches 41 of 41 (100)
==== Alternative Results (includes all methods including those without corresponding source) ====
Alternative Visited Classes 12 of 12 (100)
Alternative Visited Methods 41 of 53 (77.36)
Now checking the dir I can see I have NUnitResults.xml and opencover.xml created and populated. (I don't really know how to read OpenCover results but it has data for my unit tests)
The SonarScanner.MSBuild.exe end log has this tidbit:
INFO: Sensor C# Tests Coverage Report Import [csharp]
INFO: Parsing the OpenCover report path.\opencover.xml
INFO: Adding this code coverage report to the cache for later reuse: path.\opencover.xml
WARN: The Code Coverage report doesn't contain any coverage data for the included files. For troubleshooting hints, please refer to https://docs.sonarqube.org/x/CoBh
INFO: Sensor C# Tests Coverage Report Import [csharp] (done) | time=14ms
INFO: Sensor C# Unit Test Results Import [csharp]
INFO: Parsing the NUnit Test Results file path.\NUnitResults.xml
INFO: Sensor C# Unit Test Results Import [csharp] (done) | time=34ms
Now the classes that the unit tests cover are included (I can see them in SonarQube marked as uncovered) so I guess either OpenCover isn't collecting the correct info or something is going wrong matching the covered files with the file in the solution.
n.b. Checking the project that should be covered by these tests, under Project > Build > Advanced the Debug Info is set to full for Debug configuration, which some resources seem to suggest is required.
Any idea what I'm missing/where I'm going wrong?
UPDATE
Checking the bottom of opencode.xml it has the following:
<Module skippedDueTo="MissingPdb" hash="DD-83-09-69-9F-A7-11-FF-F5-BC-43-7C-87-B2-54-99-0D-A5-D5-61">
<ModulePath>C:\Windows\Microsoft.Net\assembly\GAC_MSIL\MyCompany.Common.Utility\v4.0_1.0.0.0__bf95fa7f15863c9f\MyCompany.Common.Utility.dll</ModulePath>
<ModuleTime>2019-09-05T16:07:28.6111533Z</ModuleTime>
<ModuleName>MyCompany.Common.Utility</ModuleName>
<Classes />
</Module>
The original authors of this solution seemed to like shoving everything in the GAC, so I'm guessing OpenCover is looking in the GAC rather than locally for the dll, and the GAC doesn't hold pdbs.
I tried setting the OpenCover -targetdir setting as suggested in the manual:
The path to the target directory; if the target argument already contains a path then this argument can be used to provide an alternate path where PDB files may be found.
I also tried to use -searchdirs (Alternative locations to look for PDBs.)
but neither of them resolved it.
Can I tell OpenCover to use the bin\Debug pdbs?
https://github.com/OpenCover/opencover/wiki/Usage#notes-on-spaces-in-arguments
Using \" in targetargs to represent quotes to nunit3-console
SonarScanner.MSBuild.exe begin /k:"ProjectName" /d:sonar.host.url="..." /d:sonar.login="..." /d:sonar.cs.nunit.reportsPaths="NUnitResults.xml" /d:sonar.cs.opencover.reportsPaths="opencover.xml"
MSBuild.exe ....sln /t:Rebuild
OpenCover.Console.exe -output:opencover.xml -register:user -target:"nunit3-console.exe" -targetargs:"\"path\to\tests.dll\" --result=NUnitResults.xml"
SonarScanner.MSBuild.exe end /d:sonar.login="..."
Step1 : SonarScanner.MSBuild.exe begin /k:"Project-Name" /d:sonar.cs.opencover.reportsPaths=%cd%\TestCoverResult.xml /d:sonar.exclusions="**/*.css,**/*.js,**/*.cshtml" /d:sonar.verbose="true" /d:sonar.host.url="https://host-url.com/" /d:sonar.login="Login-Token"
Step2 : "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\MSBuild.exe" /t:Rebuild
Step3 : ".\packages\OpenCover.4.7.1221\tools\OpenCover.Console.exe" "-target:.\packages\NUnit.ConsoleRunner.3.12.0\tools\nunit3-console.exe" "-targetargs:.\Test-Project\bin\Debug\Test-Project.dll" "-output:.\TestCoverResult.xml" -register:user
Step4 : SonarScanner.MSBuild.exe end
Explanation:
1 : reportsPath: specifies the path of the code-coverage result file.
2 : ".\packages\OpenCover.4.7.1221\tools\OpenCover.Console.exe" : it is system path of the "OpenCover.Console.exe"
3 : ".\packages\NUnit.ConsoleRunner.3.12.0\tools\nunit3-console.exe" : it is system path of the "nunit3-console.exe"
Related
I am having an issue with SonarQube 6.7 where it is not displaying any C# code issues or bugs, during the analysis I can see C# is being analysed and the build is successful but when I check the SonarQube Dashboard it is only showing Typescript and XML.
I am using Jenkins to build the project using Mono as all our building is done on Ubuntu 16.04.
Setup as follows:
Jenkins 2.89.2 on Ubuntu 16.04
SonarQube Version 6.7 (build 33306) on Ubuntu 16.04 (Separate server)
Sonar C# 6.8.1
SonarQube Scanner for MSBuild 4.0.1
Mono 5.10.0 Stable
Using a Pipeline In Jenkins I am doing the following:
node {
sh 'mono ~/tools/hudson.plugins.sonar.MsBuildSQRunnerInstallation/MSBuild/SonarQube.Scanner.MSBuild.exe begin /key:12345678FAKEKEY9l02998745'
sh 'dotnet restore WSP1.sln'
sh 'dotnet msbuild WSP1.sln'
sh 'mono ~/tools/hudson.plugins.sonar.MsBuildSQRunnerInstallation/MSBuild/SonarQube.Scanner.MSBuild.exe end' } }
The above pipeline script works without any issues.
When I run this pipeline I can see that the C# code is being Analysed, this is just a snippet of code being analysed:
Services/Project1/Services/Project1EventsShould.cs(130,21): warning S1186: Add a nested comment explaining why this method is empty, throw a 'NotSupportedException' or complete the implementation. [/var/lib/jenkins/workspace/CSharpAnalysis/WSP1/test/Unit/Unit.csproj]
Services/Project1/Services/Project1EventsShould.cs(137,21): warning S1186: Add a nested comment explaining why this method is empty, throw a 'NotSupportedException' or complete the implementation. [/var/lib/jenkins/workspace/CSharpAnalysis/WSP1/test/Unit/Unit.csproj]
Services/Project1/Models/ZenEventShould.cs(24,17): warning S1481: Remove this unused 'date' local variable. [/var/lib/jenkins/workspace/CSharpAnalysis/WSP1/test/Unit/Unit.csproj]
Services/Project1/Models/CollaborationUserShould.cs(16,17): warning S1481: Remove this unused 'sut' local variable. [/var/lib/jenkins/workspace/CSharpAnalysis/WSP1/test/Unit/Unit.csproj]
At the end I get a SUCCESS, everything looks good but when I check SonarQube I can see that the uploaded code is being analysed for display in SonarQube, this usually takes a minute or so but when this is completed I can see that only TypeScript and XML is displayed.
In amongst the output I get some warnings, info and errors but nothing looks sinister, at the end of the output I get the success message
INFO: 68 files had no CPD blocks
INFO: Calculating CPD for 281 files
INFO: CPD calculation finished
INFO: Analysis report generated in 1771ms, dir size=5 MB
INFO: Analysis reports compressed in 3908ms, zip size=2 MB
INFO: Analysis report uploaded in 5866ms
INFO: ANALYSIS SUCCESSFUL, you can browse http://sonar.serverdomain.com:9000/dashboard/index/12345678FAKEKEY9l02998745
INFO: Note that you will be able to access the updated dashboard once the server has processed the submitted analysis report
INFO: More about the report processing at http://sonar.serverdomain.com:9000/api/ce/task?id=AKsdHc7FAKEIDVOeCzBYv
INFO: Task total time: 1:32.107 s
INFO: ------------------------------------------------------------------------
INFO: EXECUTION SUCCESS
INFO: ------------------------------------------------------------------------
INFO: Total time: 1:42.735s
INFO: Final Memory: 54M/397M
INFO: ------------------------------------------------------------------------
The SonarQube Scanner has finished
14:59:57.577 Creating a summary markdown file...
14:59:57.59 Analysis results: http://sonar.serverdomain.com:9000/dashboard/index/12345678FAKEKEY9l02998745
14:59:57.591 Post-processing succeeded.
Finished: SUCCESS
I have the full output handy, I just need to sanitize this to remove anything that may be sensitive, if you would like a look just let me know and I will post this.
I am pretty new to SonarQube so the issue I am having could be something silly but I have been ripping my hair out trying to figure this out.
EDIT : I was digging through the output again and noticed 2 warning in the following:
INFO: Quality profile for cs: Sonar way
INFO: Quality profile for ts: Sonar way
INFO: Quality profile for xml: Sonar way
INFO: Sensor C# Properties [csharp]
WARNING: WARN: Property missing: 'sonar.cs.analyzer.projectOutPaths'. No protobuf files will be loaded for this project.
WARNING: WARN: No roslyn issues report not found for this project.
INFO: Sensor C# Properties [csharp] (done) | time=1ms
I just ran into the same issue on Sonarqube 6.7.4 (build 38452).
Solved by two steps:
After updating the built-in SonarC# plugin to version 7.2 (build 5463) (Uninstall-Restart-Install-Restart), and re-scanning, code issues (vulnerabilities, code smells, etc) showed up.
Introduced package coverlet.msbuild into test projects to generate coverage data, configured Project - Administration - C# - OpenCover Unit Tests Reports Paths to use path/to/coverage.opencover.xml. After re-scanning, test coverage data showed up.
Here are all the commands executed after above configurations:
dotnet path/to/SonarScanner.MSBuild.dll begin /k:"project-key"
dotnet build
dotnet test /p:CollectCoverage=true /p:CoverletOutputFormat=opencover
dotnet path/to/SonarScanner.MSBuild.dll end
We have a C# solution, and a CI solution with jenkins.
Every night, jenkins clears it workspace, get the latest version, build it in debug, run the tests through OpenCover.
We have the following builds steps(I'm not mentionning the steps before):
SonarQube Begin
First things we do in jenkins is the "SonarQube Scanner for MSBuild - Begin Analysis", we specifiy the project key/name and the additional arguments:
/d:sonar.cs.nunit.reportsPaths="%CD%\TestResult.xml"
/d:sonar.cs.opencover.reportsPaths="%CD%\opencover.xml"
Build
We use the MSBUILD14 to build or solution in debug
Execute tests through OpenCover
We use openCover to check the code coverage and execute the tests:
"C:\Program Files (x86)\OpenCover\OpenCover.Console.exe" -filter:"+[*]* -[*.Test]*" -output:"%CD%\opencover.xml" -threshold:1 -register:User -target:"C:\Program Files (x86)\NUnit.org\nunit-console\nunit3-console.exe" -targetargs:"Solution\MySolution.sln --config=Debug --result=%CD%\TestResult.xml;format=nunit2"
exit 0
SonarQube end Analysis
This should publish the results of the SonarQube Results
PostBuild: Publish NUnit test result report
I've an additional steps that should publish the TestResult.xml with the following argument:
%CD%\TestResult.xml
Once the whole job is done, I've in sonarqube, the static analysis result, but I DON'T have the Unit tests results and the code coverage results.
I've checked the logs, the tests have been executed:
Test Run Summary
Overall result: Failed
Test Count: 4331, Passed: 3819, Failed: 189, Warnings: 0, Inconclusive: 0, Skipped: 323
Failed Tests - Failures: 39, Errors: 147, Invalid: 3
Skipped Tests - Ignored: 323, Explicit: 0, Other: 0
Start time: 2017-02-07 10:03:42Z
End time: 2017-02-07 11:51:56Z
Duration: 6494.182 seconds
I only have one weird exception:
An System.IO.DirectoryNotFoundException occured: Could not find a part of the path 'c:\Projects\CommonServiceLocator\main\Microsoft.Practices.ServiceLocation\ActivationException.cs'.
An System.IO.DirectoryNotFoundException occured: Could not find a part of the path 'c:\Projects\CommonServiceLocator\main\Microsoft.Practices.ServiceLocation\ServiceLocator.cs'.
An System.IO.DirectoryNotFoundException occured: Could not find a part of the path 'c:\Projects\CommonServiceLocator\main\Microsoft.Practices.ServiceLocation\ServiceLocatorImplBase.cs'.
An System.IO.DirectoryNotFoundException occured: Could not find a part of the path 'c:\Projects\CommonServiceLocator\main\Microsoft.Practices.ServiceLocation\Properties\Resources.Designer.cs'.
Which happens at the end of openCover step. The 2 XML files are still generated, and I also have this exception locally.
Any idea why I don't have the code coverage/unit tests results in sonarQube?
Thank you!
I am trying to analysis a c# project with SonarQube and Jenkins.
I download the MSBuild SonarQube Runner plugin and I run my analyze to C# Project from the Command Line like this.
cd\
cd ci\Test\CodeCamper
rem --------------- STEP 1 -----------------
MSBuild.SonarQube.Runner.exe begin /k:ProjectCSharp:CodeCamper /n:CodeCamper /v:1.0 /d:sonar.resharper.cs.reportPath="c:\ci\test\codecamper\resharper.xml" /d:sonar.resharper.solutionFile="c:\ci\test\codecamper\CodeCamper.sln"
rem --------------- STEP 2 -----------------
C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe "c:\ci\test\codecamper\CodeCamper.sln" /p:VisualStudioVersion=14.0
rem --------------- STEP 3 -----------------
"C:\ci\sonarqube\AddOn\JetBrains.ReSharper.CommandLineTools\inspectcode.exe" /output="c:\ci\test\codecamper\resharper.xml" "c:\ci\test\codecamper\CodeCamper.sln"
rem --------------- STEP 4 -----------------
MSBuild.SonarQube.Runner.exe end
Run successfully.
Now I create a job in jenkins and call the cmds in the build step, i choose execute batch windows command. I put inside all the commands like before, and lunch the build.
The step1 , step2 and step3 run successufully, but the step4, ends up with error.
Started by user anonymous
Building in workspace C:\CI\jenkins\Jenkins\jobs\CodeCamper2\workspace
[workspace] $ cmd /c call C:\WINDOWS\TEMP\hudson2830193841329867261.bat
C:\CI\jenkins\Jenkins\jobs\CodeCamper2\workspace>cd\
C:>cd ci\Test\CodeCamper
C:\CI\Test\CodeCamper>rem --------------- STEP 4 -----------------
C:\CI\Test\CodeCamper>MSBuild.SonarQube.Runner.exe end
Default properties file was found at C:\CI\sonarqube\AddOn\MSBuild.SonarQube.Runner\SonarQube.Analysis.xml
Loading analysis properties from C:\CI\sonarqube\AddOn\MSBuild.SonarQube.Runner\SonarQube.Analysis.xml
Post-processing started.
WARNING: File is not under the project directory and cannot currently be analysed by SonarQube. File: D:\TEMP.NETFramework,Version=v4.5.AssemblyAttributes.cs, project: c:\ci\test\codecamper\CodeCamper.Data.Contracts\CodeCamper.Data.Contracts.csproj
WARNING: File is not under the project directory and cannot currently be analysed by SonarQube. File: D:\TEMP.NETFramework,Version=v4.5.AssemblyAttributes.cs, project: c:\ci\test\codecamper\CodeCamper.Data\CodeCamper.Data.csproj
WARNING: File is not under the project directory and cannot currently be analysed by SonarQube. File: D:\TEMP.NETFramework,Version=v4.5.AssemblyAttributes.cs, project: c:\ci\test\codecamper\CodeCamper.Model\CodeCamper.Model.csproj
WARNING: File is not under the project directory and cannot currently be analysed by SonarQube. File: D:\TEMP.NETFramework,Version=v4.5.AssemblyAttributes.cs, project: c:\ci\test\codecamper\CodeCamper.Web\CodeCamper.Web.csproj
The SONAR_RUNNER_HOME environment variable is not required and will be ignored.
SONAR_RUNNER_OPTS is not configured. Setting it to the default value of -Xmx1024m
Calling the sonar-runner...
Files was unexpected at this time.
The sonar-runner did not complete successfully
21:38:18.51 Creating a summary markdown file...
Post-processing failed. Exit code: 1
C:\CI\Test\CodeCamper>exit 1
Build step 'Execute Windows batch command' marked build as failure
Finished: FAILURE.
What i am missing here?
My apologies for my bad english.
Best regards,
Lopes.
Sorry for the late reply but just seen this post, seems your issue is on the sonnarqube end step
MSBuild.SonarQube.Runner.exe end Default properties file was found at C:\CI\sonarqube\AddOn\MSBuild.SonarQube.Runner\SonarQube.Analysis.xml
This could be caused due the XML for configuration is not in the same folder (exe, dll and xml have to be at the same level, in your case at C:\CI\sonarqube\AddOn\MSBuild.SonarQube.Runner). As it is not there it tried to use a default configuration file but this wont have any of the information required to publish on your sonarqube server.
Environment: Windows 7 | SonarQube 4.4 | SonarRunner 2.4 | .NET (C#)
I have been using Sonar 3.2 & SonarRunner 2.0. Projects are being displayed in Sonar dashboard upon typing "sonar-runner" in command prompt, where project base directory is there.
With the same set of configurations, when I upgrade to SonarQube 4.4 & SonarRunner 2.4, following exceptions are thrown upon typing "sonar-runner" in command prompt, where project base directory is there:
C:\Users\kprasad\Documents\Visual Studio 2013\Projects\LKTest>sonar-runner
C:\Users\kprasad\Downloads\sonar-runner-2.4
SonarQube Runner 2.4
Java 1.6.0_38-ea Sun Microsystems Inc. (32-bit)
Windows 7 6.1 x86
INFO: Runner configuration file: C:\Users\kprasad\Downloads\sonar-runner-2.4\con
f\sonar-runner.properties
INFO: Project configuration file: C:\Users\kprasad\Documents\Visual Studio 2013\
Projects\LKTest\sonar-project.properties
INFO: Default locale: "en_US", source code encoding: "UTF-8"
INFO: Work directory: C:\Users\kprasad\Documents\Visual Studio 2013\Projects\LKT
est\.\.sonar
INFO: SonarQube Server 4.4.1
18:49:01.343 INFO - Load global settings
18:49:01.436 INFO - User cache: C:\Users\kprasad\.sonar\cache
18:49:01.447 INFO - Install plugins
18:49:02.087 INFO - Install JDBC driver
18:49:02.094 WARN - H2 database should be used for evaluation purpose only
18:49:02.094 INFO - Create JDBC datasource for jdbc:h2:tcp://localhost/sonar
18:49:02.164 INFO - Initializing Hibernate
18:49:05.018 INFO - Loading technical debt model...
18:49:05.042 INFO - Loading technical debt model done: 24 ms
18:49:05.047 INFO - Load project settings
INFO: ------------------------------------------------------------------------
INFO: EXECUTION FAILURE
INFO: ------------------------------------------------------------------------
Total time: 4.283s
Final Memory: 37M/89M
INFO: ------------------------------------------------------------------------
ERROR: Error during Sonar runner execution
ERROR: Unable to execute Sonar
ERROR:
ERROR: To see the full stack trace of the errors, re-run SonarQube Runner with t
he -e switch.
ERROR: Re-run SonarQube Runner using the -X switch to enable full debug logging.
C:\Users\kprasad\Documents\Visual Studio 2013\Projects\LKTest>
sonar project properties:
sonar.projectKey=LKTest Sonar Report
sonar.projectVersion=1.0
sonar.projectName=LKTest
sonar.sources=.
sonar.language=cs
sonar.sourceEncoding=UTF-8
sonar.visualstudio.enable=true
sonar.cs.opencover.reportPaths=results.xml
sonar.dotnet.visualstudio.solution.file=LKTest.sln
sonar.silverlight.4.mscorlib.location=C:/Program Files/Reference Assemblies/Microsoft/Framework/Silverlight/v4.0
sonar.dotnet.excludeGeneratedCode=true
sonar.dotnet.4.0.sdk.directory=C:/Windows/Microsoft.NET/Framework/v4.0.30319
sonar.dotnet.version=4.0
sonar.gendarme.mode=
sonar.gallio.mode=
sonar.gallio.coverage.tool=OpenCover
sonar.gallio.runner=Local
sonar.dotnet.visualstudio.testProjectPattern=*.Test*
sonar.gallio.reports.path=gallio-report.xml
sonar.gallio.coverage.reports.path=coverage-report.xml
sonar.opencover.installDirectory=C:/Program Files/OpenCover/
sonar.dotnet.test.assemblies=C:\Users\kprasad\Documents\Visual Studio 2013\Projects\LKTest\LKTest.Tests\bin\Debug\LKTest.Tests.dll
sonar.fxcop.mode=reusereport
sonar.stylecop.mode=reusereport
sonar.ndeps.mode=reusereport
PFB the output when I re-run "sonar-runner -e" in command prompt, where the project base directory is there:
C:\Users\kprasad\Documents\Visual Studio 2013\Projects\LKTest>sonar-runner -e
C:\Users\kprasad\Downloads\sonar-runner-2.4
SonarQube Runner 2.4
Java 1.6.0_38-ea Sun Microsystems Inc. (32-bit)
Windows 7 6.1 x86
INFO: Error stacktraces are turned on.
INFO: Runner configuration file: C:\Users\kprasad\Downloads\sonar-runner-2.4\con
f\sonar-runner.properties
INFO: Project configuration file: C:\Users\kprasad\Documents\Visual Studio 2013\
Projects\LKTest\sonar-project.properties
INFO: Default locale: "en_US", source code encoding: "UTF-8"
INFO: Work directory: C:\Users\kprasad\Documents\Visual Studio 2013\Projects\LKT
est\.\.sonar
INFO: SonarQube Server 4.4.1
12:39:51.109 INFO - Load global settings
12:39:51.324 INFO - User cache: C:\Users\kprasad\.sonar\cache
12:39:51.344 INFO - Install plugins
12:39:51.791 INFO - Install JDBC driver
12:39:51.810 WARN - H2 database should be used for evaluation purpose only
12:39:51.811 INFO - Create JDBC datasource for jdbc:h2:tcp://localhost/sonar
12:39:51.984 INFO - Initializing Hibernate
12:39:55.507 INFO - Loading technical debt model...
12:39:55.540 INFO - Loading technical debt model done: 33 ms
12:39:55.544 INFO - Load project settings
INFO: ------------------------------------------------------------------------
INFO: EXECUTION FAILURE
INFO: ------------------------------------------------------------------------
Total time: 6.759s
Final Memory: 37M/89M
INFO: ------------------------------------------------------------------------
ERROR: Error during Sonar runner execution
org.sonar.runner.impl.RunnerException: Unable to execute Sonar
at org.sonar.runner.impl.BatchLauncher$1.delegateExecution(BatchLauncher
.java:91)
at org.sonar.runner.impl.BatchLauncher$1.run(BatchLauncher.java:75)
at java.security.AccessController.doPrivileged(Native Method)
at org.sonar.runner.impl.BatchLauncher.doExecute(BatchLauncher.java:69)
at org.sonar.runner.impl.BatchLauncher.execute(BatchLauncher.java:50)
at org.sonar.runner.api.EmbeddedRunner.doExecute(EmbeddedRunner.java:102
)
at org.sonar.runner.api.Runner.execute(Runner.java:100)
at org.sonar.runner.Main.executeTask(Main.java:70)
at org.sonar.runner.Main.execute(Main.java:59)
at org.sonar.runner.Main.main(Main.java:53)
Caused by: java.lang.IllegalArgumentException
at java.net.URI.create(URI.java:841)
at org.sonar.batch.bootstrap.ServerClient.doRequest(ServerClient.java:99
)
at org.sonar.batch.bootstrap.ServerClient.request(ServerClient.java:85)
at org.sonar.batch.bootstrap.ServerClient.request(ServerClient.java:81)
at org.sonar.batch.bootstrap.ServerClient.request(ServerClient.java:77)
at org.sonar.batch.settings.DefaultSettingsReferential.downloadSettings(
DefaultSettingsReferential.java:65)
at org.sonar.batch.settings.DefaultSettingsReferential.projectSettings(D
efaultSettingsReferential.java:56)
at org.sonar.batch.bootstrap.BatchSettings.downloadSettings(BatchSetting
s.java:92)
at org.sonar.batch.bootstrap.BatchSettings.init(BatchSettings.java:71)
at org.sonar.batch.scan.ProjectSettingsReady.start(ProjectSettingsReady.
java:40)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.picocontainer.lifecycle.ReflectionLifecycleStrategy.invokeMethod(
ReflectionLifecycleStrategy.java:110)
at org.picocontainer.lifecycle.ReflectionLifecycleStrategy.start(Reflect
ionLifecycleStrategy.java:89)
at org.picocontainer.injectors.AbstractInjectionFactory$LifecycleAdapter
.start(AbstractInjectionFactory.java:84)
at org.picocontainer.behaviors.AbstractBehavior.start(AbstractBehavior.j
ava:169)
at org.picocontainer.behaviors.Stored$RealComponentLifecycle.start(Store
d.java:132)
at org.picocontainer.behaviors.Stored.start(Stored.java:110)
at org.picocontainer.DefaultPicoContainer.potentiallyStartAdapter(Defaul
tPicoContainer.java:1015)
at org.picocontainer.DefaultPicoContainer.startAdapters(DefaultPicoConta
iner.java:1008)
at org.picocontainer.DefaultPicoContainer.start(DefaultPicoContainer.jav
a:766)
at org.sonar.api.platform.ComponentContainer.startComponents(ComponentCo
ntainer.java:91)
at org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.
java:77)
at org.sonar.batch.scan.ScanTask.scan(ScanTask.java:64)
at org.sonar.batch.scan.ScanTask.execute(ScanTask.java:51)
at org.sonar.batch.bootstrap.TaskContainer.doAfterStart(TaskContainer.ja
va:110)
at org.sonar.api.platform.ComponentContainer.startComponents(ComponentCo
ntainer.java:92)
at org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.
java:77)
at org.sonar.batch.bootstrap.BootstrapContainer.executeTask(BootstrapCon
tainer.java:185)
at org.sonar.batch.bootstrapper.Batch.executeTask(Batch.java:95)
at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:67)
at org.sonar.runner.batch.IsolatedLauncher.execute(IsolatedLauncher.java
:48)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.sonar.runner.impl.BatchLauncher$1.delegateExecution(BatchLauncher
.java:87)
... 9 more
Caused by: java.net.URISyntaxException: Illegal character in query at index 80:
http://localhost:9025/batch_bootstrap/properties?dryRun=false&project=LKTest
Sonar Report
at java.net.URI$Parser.fail(URI.java:2810)
at java.net.URI$Parser.checkChars(URI.java:2983)
at java.net.URI$Parser.parseHierarchical(URI.java:3073)
at java.net.URI$Parser.parse(URI.java:3015)
at java.net.URI.<init>(URI.java:577)
at java.net.URI.create(URI.java:839)
... 47 more
ERROR:
ERROR: Re-run SonarQube Runner using the -X switch to enable full debug logging.
C:\Users\kprasad\Documents\Visual Studio 2013\Projects\LKTest>
Please help in sorting out these exceptions & let me know if any additional details are required, thanks.
Regards,
KP
The problem is that your "sonar.projectKey" contains space characters.
In recent versions of SonarQube, we enforced the kind of characters that are allowed in project keys: only letters, digits, '_', '.' and ':'. See SONAR-4188 for reference.
I'm running Sonar on a .NET C# project.
The measurements are showing, but the coverage widget is showing 0.0% and no unit tests are executed.
I'm probably doing something wrong in my configuration, can someone help spot it?
I'm using TeamCity Enterprise 8.0.4 to run sonar-runner.bat version 2.0 on a SonarQube server version 3.7.2
TeamCity sets dotCover as the coverage tool.
The sonar-project.properties file contains:
# Project identification values
sonar.projectKey=edd-datamodel-dotnet
sonar.projectName=EDDI DataModel NET
# Info required for Sonar
sonar.sources=.
sonar.language=cs
sonar.dotnet.visualstudio.testProjectPattern=*Tests.Unit*
# Project Information
sonar.links.homepage=http://localhost/wiki
sonar.links.ci=http://localhost:8080/viewType.html?buildTypeId=bt37
sonar.links.issue=http://localhost/secure/IssueNavigator.jspa?mode=hide&requestId=11509
sonar.links.scm=scm:svn:http://localhost/SVG/repos/Product/Microsoft.Net/EDDI
and the logs of the execution:
DEBUG - Using directory D:\work\9ff348aa7c3c7d93\Barclays.EDD.DataModel.Tests.Unit\bin\Debug for project Barclays.EDD.DataModel.Tests.Unit with buildconfiguration Debug
DEBUG - Executing Gallio program...
DEBUG - - Gallio executable : C:\Program Files\Gallio\bin\Gallio.Echo.exe
DEBUG - - OpenCover executable: C:\Program Files (x86)\JetBrains\dotCover\v2.1\Bin\dotCover.exe
DEBUG - - Coverage tool : dotCover
DEBUG - - Runner : LOCAL
DEBUG - - Report directory : D:\work\9ff348aa7c3c7d93\.sonar
DEBUG - - Report file : gallio-report
DEBUG - - Test assemblies :
DEBUG - D:\work\9ff348aa7c3c7d93\Barclays.EDD.DataModel.Tests.Unit\bin\Debug\Barclays.EDD.DataModel.Tests.Unit.dll
DEBUG - - Working directory : D:\work\9ff348aa7c3c7d93\.sonar
DEBUG - - dotCover include:
DEBUG - - dotCover exclude:
DEBUG - - Coverage report: D:\work\9ff348aa7c3c7d93\.sonar\coverage-report.xml
INFO - Executing command: C:\Program Files (x86)\JetBrains\dotCover\v2.1\Bin\dotCover.exe a /TargetExecutable=C:\Program Files\Gallio\bin\Gallio.Echo.exe /TargetWorkingDir=D:\work\9ff348aa7c3c7d93\.sonar "/TargetArguments=\"/r:Local\" \"/report-directory:D:\work\9ff348aa7c3c7d93\.sonar\" \"/report-name-format:gallio-report\" \"/report-type:Xml\" \"D:\work\9ff348aa7c3c7d93\Barclays.EDD.DataModel.Tests.Unit\bin\Debug\Barclays.EDD.DataModel.Tests.Unit.dll\"" /Filters=+:module=Barclays.EDD.DataModel;class=*;function=*;+:module=Build;class=*;function=*; /ReportType=TeamCityXML /Output=D:\work\9ff348aa7c3c7d93\.sonar\coverage-report.xml
INFO - JetBrains dotCover Console Runner v2.1.471.44. Copyright (c) 2009-2014 JetBrains s.r.o. All rights reserved.
INFO -
DEBUG - Updating semaphore batch-edd-datamodel-dotnet
INFO - [JetBrains dotCover] Coverage session started [26/05/2014 15:31:14]
INFO -
INFO - Gallio Echo - Version 3.4 build 11
INFO - Get the latest version at http://www.gallio.org/
INFO -
INFO - Start time: 15:31
INFO - Initializing the runtime and loading plugins.
INFO - Verifying test files.
INFO - Initializing the test runner.
INFO - test runner.' flowId='eac27e3d045b896d
INFO - Running the tests.
INFO - Running tests.' flowId='eac27e3d045b896d
INFO - Barclays.EDD.DataModel.Tests.Unit (2s)
DEBUG - Updating semaphore batch-edd-datamodel-dotnet
INFO -
INFO -
INFO - Generating reports.
INFO - Disposing the test runner.
INFO - Disposed test runner.' flowId='eac27e3d045b896d
INFO - Stop time: 15:31 (Total execution time: 5.500 seconds)
INFO -
INFO - 0 run, 0 passed, 0 failed, 0 inconclusive, 0 skipped
INFO -
INFO - [JetBrains dotCover] Coverage session finished [26/05/2014 15:31:28]
Any help would be appreciated!
Thanks,
Eyal
This looks unusual
DEBUG - - OpenCover executable: C:\Program Files (x86)\JetBrains\dotCover\v2.1\Bin\dotCover.exe
DEBUG - - Coverage tool : dotCover
The OpenCover executable is actually OpenCover.Console.exe
Are you trying to run OpenCover or dotCover?
I had similar problem. The solution was to add:
sonar.gallio.runner=IsolatedProcess
Full content of my sonar-project.properties file: https://sonartfs.codeplex.com/