我正在尝试使用VS2012动态代码覆盖工具为我的应用程序进行代码覆盖率分析。 我找到一个例子,我可以使用它如下:
CodeCoverage.exe收集/输出:C:\ test.coverage c:\ aut.exe
这很好用,但我的aut.exe会加载很多dll而我根本不想获取每个dll的代码覆盖率信息。所以我需要修改VS2012动态代码覆盖率Tools文件夹中的CodeCoverage.config文件,只包含一些我想要的dll。
我查看配置文件,它看起来像:
<SymbolSearchPaths />
<!--
The module include/exclude list by the full path from where the module loaded.
Entries in this list are case-insensitive.
-->
<ModulePaths />
此文件与之前的.runsettings文件略有不同。我尝试在配置文件中添加以下代码:
<ModulePaths>
<Include>
<!-- Include modules of interest, by their name / path -->
<ModulePath>SomeSpecial.dll</ModulePath>
</Include>
<Exclude>
<!—- Do not specify any excludes. Anything not included will get excluded -->
</Exclude>
</ModulePaths>
但它没有用。我想这里的语法与.runsetting文件有点不同。
那么有人可以指导我如何修改codecoverage.config文件以仅包含代码覆盖的特定dll吗?
答案 0 :(得分:1)
好的,我终于自己解决了这个问题......
实际上有一种方法只包含一些用于代码覆盖的dll。在为include包含模块路径时,我应该使用正则表达式。
例如:
<ModulePaths>
<Include>
<ModulePath>.*SomeSpecial\.dll$</ModulePath>
<ModulePath>.*Special\.dll$</ModulePath>
</Include>
</ModulePaths>
关键是在你的dll名称前添加“。*”并在“。”之前添加“\”。因为这里的Module path节点只允许正则表达式。使用这种方法,我成功地将我想要的dll包含在代码覆盖中。