New code coverage metrics in SonarQube Dashboard never get updated. But the total lines etc do change.
From the logs, I see the .trx, .coverage and .coveragexml files are generated. .Coveragexml file has data in it.
2018-04-17T14:42:42.4366806Z 09:42:42.434 INFO: Sensor C# Tests Coverage Report Import [csharp]
2018-04-17T14:42:42.4394427Z 09:42:42.434 INFO: Parsing the Visual Studio coverage XML report d:\b3_w\13\s\TestResults\tfsdevbuild.svc_AUSCMTFBD01_2018-04-17_09_42_13\In\AUSCMTFBD01\tfsdevbuild.svc_AUSCMTFBD01 2018-04-17 09_42_04.coveragexml
2018-04-17T14:42:42.5380448Z 09:42:42.528 INFO: Adding this code coverage report to the cache for later reuse: d:\b3_w\13\s\TestResults\tfsdevbuild.svc_AUSCMTFBD01_2018-04-17_09_42_13\In\AUSCMTFBD01\tfsdevbuild.svc_AUSCMTFBD01 2018-04-17 09_42_04.coveragexml
<?xml version="1.0" encoding="UTF-8" ?>
<results>
<modules>
<module name="tmhp.portal.accountactivation.dll" path="tmhp.portal.accountactivation.dll" id="6A45ABA8A8689A41BE1B11A43CD2586001000000" block_coverage="39.87" line_coverage="49.27" blocks_covered="2756" blocks_not_covered="4156" lines_covered="4649" lines_partially_covered="11" lines_not_covered="4776">
<functions>
<function id="9274" token="0x6000a08" name="OnAuthorization(System.Web.Mvc.AuthorizationContext)" namespace="TMHP.Portal.AccountActivation.Filters" type_name="AntiForgeryAttribute" block_coverage="0.00" line_coverage="0.00" blocks_covered="0" blocks_not_covered="1" lines_covered="0" lines_partially_covered="0" lines_not_covered="1">
<ranges>
<range source_id="78" covered="no" start_line="12" start_column="9" end_line="12" end_column="10" />
</ranges>
</function>
<function id="10030" token="0x6000382" name="GetOwnershipInformationRequest()" namespace="TMHP.Portal.AccountActivation.LTCOwnershipService" type_name="GetOwnershipInformationRequest" block_coverage="0.00" line_coverage="0.00" blocks_covered="0" blocks_not_covered="2" lines_covered="0" lines_partially_covered="0" lines_not_covered="2">
<ranges>
<range source_id="3" covered="no" start_line="819" start_column="9" end_line="819" end_column="48" />
<range source_id="3" covered="no" start_line="820" start_column="9" end_line="820" end_column="10" />
</ranges>
</function>
<function id="10030" token="0x6000384" name="GetOwnershipInformationRequestBody()" namespace="TMHP.Portal.AccountActivation.LTCOwnershipService" type_name="GetOwnershipInformationRequestBody" block_coverage="0.00" line_coverage="0.00" blocks_covered="0" blocks_not_covered="2" lines_covered="0" lines_partially_covered="0" lines_not_covered="2">
<ranges>
<range source_id="3" covered="no" start_line="839" start_column="9" end_line="839" end_column="52" />
<range source_id="3" covered="no" start_line="840" start_column="9" end_line="840" end_column="10" />
</ranges>
</function>
<function id="10030" token="0x6000386" name="GetOwnershipInformationResponse()" namespace="TMHP.Portal.AccountActivation.LTCOwnershipService" type_name="GetOwnershipInformationResponse" block_coverage="0.00" line_coverage="0.00" blocks_covered="0" blocks_not_covered="2" lines_covered="0" lines_partially_covered="0" lines_not_covered="2">
<ranges>
<range source_id="3" covered="no" start_line="857" start_column="9" end_line="857" end_column="49" />
<range source_id="3" covered="no" start_line="858" start_column="9" end_line="858" end_column="10" />
</ranges>
</function>
<function id="10030" token="0x6000388" name="GetOwnershipInformationResponseBody()" namespace="TMHP.Portal.AccountActivation.LTCOwnershipService" type_name="GetOwnershipInformationResponseBody" block_coverage="0.00" line_coverage="0.00" blocks_covered="0" blocks_not_covered="2" lines_covered="0" lines_partially_covered="0" lines_not_covered="2">
<ranges>
<range source_id="3" covered="no" start_line="874" start_column="9" end_line="874" end_column="53" />
<range source_id="3" covered="no" start_line="875" start_column="9" end_line="875" end_column="10" />
</ranges>
</function>
<function id="24652" token="0x6000306" name="set_Phone(string)" namespace="TMHP.Portal.AccountActivation.LTCProviderService" type_name="ContractManager" block_coverage="100.00" line_coverage="100.00" blocks_covered="2" blocks_not_covered="0" lines_covered="3" lines_partially_covered="0" lines_not_covered="0">
<ranges>
<range source_id="20" covered="yes" start_line="595" start_column="17" end_line="595" end_column="41" />
<range source_id="20" covered="yes" start_line="596" start_column="17" end_line="596" end_column="52" />
<range source_id="20" covered="yes" start_line="597" start_column="13" end_line="597" end_column="14" />
</ranges>
</function>
<source_files>
<source_file id="0" path="d:\b3_w\13\s\AccountActivation.UnitTest\Managers\RequestPinManagerTests.cs">
</source_file>
<source_file id="1" path="d:\b3_w\13\s\AccountActivation.UnitTest\Managers\AccountManagerTests.cs">
</source_file>
<source_file id="2" path="d:\b3_w\13\s\AccountActivation.UnitTest\Controllers\ProviderDetailsControllerUnitTests.cs">
</source_file>
<source_file id="3" path="d:\b3_w\13\s\AccountActivation.UnitTest\Controllers\AccountControllerTests.cs">
</source_file>
<source_file id="4" path="d:\b3_w\13\s\AccountActivation.UnitTest\Managers\ProviderDetailsManagerTests.cs">
</source_file>
<source_file id="5" path="d:\b3_w\13\s\AccountActivation.UnitTest\Managers\HomeManagerTests.cs">
</source_file>
<source_file id="6" path="d:\b3_w\13\s\AccountActivation.UnitTest\Controllers\RequestPinControllerUnitTests.cs">
</source_file>
<source_file id="7" path="d:\b3_w\13\s\AccountActivation.UnitTest\Controllers\HomeControllerTests.cs">
</source_file>
<source_file id="8" path="d:\b3_w\13\s\AccountActivation.UnitTest\Common\ControllerHelper.cs">
</source_file>
<source_file id="9" path="d:\b3_w\13\s\AccountActivation.UnitTest\Providers\ADServiceProviderTest.cs">
</source_file>
</source_files>
</module>
</modules>
</results>