代码之家  ›  专栏  ›  技术社区  ›  JB Brown

VSTS代码覆盖错误?

  •  3
  • JB Brown  · 技术社区  · 17 年前

    有没有人经历过 this VSTS Code Coverage "bug? “你有什么建议吗?

    我正在用visual studio进行代码覆盖率分析,这通常是一个简单的任务,现在包括了工具。然而,我有一个我无法克服的问题。假设我有程序集A、B、C和D,并将它们都标记为覆盖率分析。我运行测试并查看结果,找到一个包含a、b和c的报告-但不包含d。我调查并发现没有测试实际执行d中的任何代码(假设它是asp.net前端,我还没有利用ui测试)。由于没有针对d的测试导致d从报告中丢失,所以总代码覆盖率和“未覆盖的块”是不正确的。

    有人知道我能做以下哪一个吗?

    • 计算D中的“块数”,这样我就可以手动调整覆盖报告是否正确?
    • 使覆盖率报告自动显示为覆盖率检测但根本未测试的程序集未覆盖的块数?

    虽然我确实希望测试覆盖率有所提高,但我正在分析代码库中在历史时间点保存的覆盖率报告。因此,我不想创建一个测试,它只需在每个程序集中执行至少1个代码块,然后通过运行测试重新计算测试覆盖率。这将是一个相当耗时的工作,周围的事情似乎是一个简单的问题。

    1 回复  |  直到 10 年前
        1
  •  2
  •   Brian B.    17 年前

    我碰到过一次,很烦人。在我的例子中,有许多dll没有被覆盖,所以我最终使用覆盖的dlls信息除以它们的大小来估计代码基的块/kb。当然,要得到未覆盖的dll的块数,只需将平均值乘以dll的大小。这不是最准确的方法,但它能使你快速地计算出你的错误,通过计算已知的DLL并与实际值进行比较。如果计算了大量程序集,这将很有帮助。

    当然,您可以只做一个loc计数(忽略注释)并在一个loc上计算大致相当于一个块的值。如果我没记错的话,那是相当准确的,所以应该可以让你更接近。

    我知道的对未覆盖的程序集强制生成报告的唯一方法是实际编写一个加载程序集的测试(该测试甚至不需要做任何事情)。