标记为“ ExcludeFromCodeCoverage”的异步方法仍显示在Sonarqube中未涵盖

时间:2018-07-06 04:23:00

标签: c# async-await sonarqube code-coverage

我有一个Windows服务,其中几乎没有异步方法。
我正在为所有这些方法编写单元测试用例。对于一个异步方法,我不想编写任何测试用例,因此我已经用[ExcludeFromCodeCoverage]装饰了该方法。

我正在使用Sonarqube来检查代码覆盖率。
我观察到的是具有[ExcludeFromCodeCoverage]

的异步方法
[ExcludeFromCodeCoverage]
async Task IEventProcessor.CloseAsync(PartitionContext context, CloseReason reason) { 
    if (reason == CloseReason.Shutdown) {
        await context.CheckpointAsync();
    }
}

仍显示为sonarqube工具中未涵盖的内容。

但是当我重构代码以从方法中删除 async 时,

[ExcludeFromCodeCoverage]
Task IEventProcessor.CloseAsync(PartitionContext context, CloseReason reason)  
    if (reason == CloseReason.Shutdown) {
        return context.CheckpointAsync();
    }
    return Task.CompletedTask;
}

它按预期工作正常。

所以想知道,为什么sonarqube不考虑异步方法。

有什么设置或配置需要做吗?

我正在使用Visual Studio 2015 Professional,框架:4.6.1,SonarQube-7.1(如果有帮助的话)。

0 个答案:

没有答案