You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在保留路径映射配置时获取Fine Code Coverage结果?

解决路径映射与Fine Code Coverage覆盖率采集的冲突问题

环境信息

  • IDE:Microsoft Visual Studio Community 2022(64位)17.1.3
  • FCC版本:1.1.192
  • 项目结构:MyProject(主项目,MyProject命名空间)+ MyProjectTests(测试项目,MyProject.tests命名空间),所有测试已通过
  • 当前配置:主项目PropertyGroup中添加$([System.IO.Path]::GetFullPath('$(MSBuildThisFileDirectory)'))=./用于隐藏堆栈跟踪完整路径;测试项目输出目录包含所有构建产物及MyProject.dll;自动生成的runsettings已配置包含MyProject.dll、排除MyProjectTests.dll;PDB内嵌在主二进制文件中

问题症状

添加路径映射配置后,FCC无法定位MyProject.dll引用的文件,输出窗口大量报文件不存在错误;移除该配置则覆盖率采集正常,但生产环境必须保留此配置以避免构建机器路径泄露。

可行解决方案

方案1:在runsettings中为FCC单独配置路径映射

通过runsettings添加反向路径映射,让FCC能将主项目映射后的相对路径转换回实际文件路径:

  1. 打开测试项目的runsettings文件
  2. 在CodeCoverage节点下新增SourcePath配置块:
<CodeCoverage>
  <!-- 保留原有包含/排除配置 -->
  <SourcePath>
    <MapFrom>$([System.IO.Path]::GetFullPath('$(MSBuildThisFileDirectory)'))</MapFrom>
    <MapTo>$(MSBuildThisFileDirectory)</MapTo>
  </SourcePath>
</CodeCoverage>

该配置仅作用于覆盖率采集流程,不影响主项目堆栈跟踪的路径隐藏效果。

方案2:条件性启用路径映射

仅在生产构建时启用路径映射,开发/测试构建时禁用,兼顾两种场景需求:

  1. 修改MyProject的项目文件,将路径映射配置添加条件判断:
<PropertyGroup Condition="'$(Configuration)' == 'Release'">
  $([System.IO.Path]::GetFullPath('$(MSBuildThisFileDirectory)'))=./
</PropertyGroup>

Debug环境下路径映射不生效,FCC可正常采集覆盖率;Release环境下配置生效,避免路径泄露。

方案3:为FCC添加额外文件搜索路径

通过FCC扩展设置指定主项目实际目录,帮助其定位文件:

  1. 打开Visual Studio的FCC设置(可通过扩展菜单或测试窗口的FCC入口找到)
  2. 在「Additional Search Paths」中添加MyProject项目的根目录路径
  3. 保存设置后重新运行测试,FCC会在指定路径中查找映射后的文件

注意事项

  • 所有方案均不会破坏内嵌PDB带来的行号信息优势
  • 使用方案1时,需保证runsettings中MapFrom的值与主项目配置的完全一致
  • 方案2需根据实际生产构建的配置名称调整Condition中的Configuration值

内容的提问来源于stack exchange,提问作者Matt27

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 12:53:11