2012-10-11 3 views
0

Я использую sonar-runner для запуска тестов и покрытия кода по моему C# -коду с помощью плагина gallio. Тесты работают нормально, но я не вижу никакого покрытия кода в веб-интерфейсе сонара.Gallio с NCover показывает 0% покрытия кода в Sonar UI

sonar_code_coverage_snapshot

Мои настройки сонара являются следующие:

sonar-project.properties упоминая только соответствующие биты sonar.gallio.coverage.tool = NCover sonar.NCover.installDirectory = C:/Программные файлы/NCover sonar.donet.visualstudio.testProjectPattern = . Тест sonar.dotnet.bui ldConfigurations = "Release | x86"

Любая идея о том, что пуля не хватает?

sonar.projectKey=XXX:XXX 
sonar.projectVersion=trunk 
sonar.projectName=XXX 
sources=. 
sonar.language=cs 
sonar.dotnet.visualstudio.solution.file=Project.sln 
sonar.dotnet.excludeGeneratedCode=false 
sonar.dotnet.4.0.sdk.directory=C:/WIndows/Microsoft.NET/Framework/v4.0.30319 
sonar.dotnet.version=4.0 
# Gallio 
sonar.gallio.mode= 
sonar.gallio.coverage.tool=NCover 
sonar.gallio.runner=IsolatedAppDomain 
sonar.NCover.installDirectory=c:/Program Files/NCover 
sonar.gallio.installDirectory=C:/Program Files/Gallio 
sonar.dotnet.test.assemblies=$(SolutionDir)/../**/bin/**/*.Tests.Unit.dll 
# FXCop 
sonar.fxcop.mode= 
#StyleCop 
sonar.stylecop.mode= 
#NDeps 
sonar.ndeps.mode=skip 

sonar-runner.properties

ответ

1

Вы сказали

sonar.dotnet.buildConfigurations = "Release|x86"

Если это так, то ваш билд вероятно, не создает .pdb файлы, которые необходимы, чтобы выяснить соответствие между двоичными файлами и ваши исходные файлы.

Это работает, если вы попробуете его с помощью сборки Debug?

0

Я видел такое же поведение с NCover в Sonar. Я обнаружил, что Sonar генерирует недопустимые аргументы для бегуна NCover Галлио.

Попробуйте выполнить вывод из бегуна Sonar в текстовый файл, чтобы вы могли легче изучить аргументы (в командной строке вы можете просто ввести sonar-runner> output.txt, чтобы сделать это).

Вы, вероятно, увидите линию, как это в вашем выводе:

INFO .u.c.CommandExecutor - Executing command: C:\Program Files\Gallio\bin\Gallio.Echo.exe /r:Local /report-directory:E:\Reports\.sonar /report-name-format:gallio-report /report-type:Xml E:\Projects\UnitTests\bin\Release\UnitTests.dll /runner-property:NCoverCoverageFile=E:\Reports\.sonar\coverage-report.xml /runner-property:NCoverArguments=//ias MyFirstAssembly;MySecondtAssembly;MyThirdAssembly 

При попытке выполнить это вручную через Gallio в командной строке, вы получите сообщение об ошибке:

Cannot find file 'MyFirstAssembly;MySecondtAssembly;MyThirdAssembly' 

Если вы вручную отредактируете этот список до одной записи, такой как MyFirstAssembly *, все будет работать так, как ожидалось.

Это, по-видимому, указывает на то, что Sonar генерирует неверные аргументы командной строки для Gallio. Насколько мне нравится NCover, самым простым решением было использовать OpenCover.