Visual Studio 2013中的C#自定义代码覆盖率集成

Visual Studio 2013中的C#自定义代码覆盖率集成,c#,visual-studio-2013,code-coverage,add-in,C#,Visual Studio 2013,Code Coverage,Add In,我希望通过提供VS扩展或附加模块来提高我们软件部门的效率,以使用VS2013执行自定义代码覆盖 该企业中的特殊点是特殊代码段的覆盖范围,实际上由一条注释标记,如定义为任务标记的//u STUFF document comment 例如,我想引入一个新属性RiskAttribute,以限定方法,但无法将相应的代码覆盖率结果与其他属性分开,以报告已覆盖了多少不可或缺的内容 /// <summary> /// Risk Attribute /// </summ

我希望通过提供VS扩展或附加模块来提高我们软件部门的效率,以使用VS2013执行自定义代码覆盖

该企业中的特殊点是特殊代码段的覆盖范围,实际上由一条注释标记,如定义为任务标记的
//u STUFF document comment

例如,我想引入一个新属性
RiskAttribute
,以限定方法,但无法将相应的代码覆盖率结果与其他属性分开,以报告已覆盖了多少不可或缺的内容

    /// <summary>
    /// Risk Attribute
    /// </summary>
        public class RiskAttribute : Attribute
        {
            private readonly string _document;
            private readonly string _comment;

            /// <summary>
            /// Constructor
            /// </summary>
            /// <param name="doc"></param>
            /// <param name="comment"></param>
            public RiskAttribute(string doc, string comment)
            {
                _document = doc;
                _comment = comment;
            }

            /// <summary>
            /// Document
            /// </summary>
            public string Document { get { return _document; } }

            /// <summary>
            /// Comment
            /// </summary>
            public string Comment { get { return _comment; } }
    }
  • 单元测试

    /// <summary>
    /// Test class for Calculator
    /// </summary>
    [TestClass]
    public class CalculatorTest
    {
        /// <summary>
        /// Tests addition
        /// </summary>
        [TestMethod]
        public void Test_Sub()
        {
            decimal a = 1;
            decimal b = 2;
            Assert.AreEqual((a - b), Calculator.Sub(a, b));
        }
    }
    
    //
    ///计算器测试班
    /// 
    [测试类]
    公共类计算器测试
    {
    /// 
    ///测试添加
    /// 
    [测试方法]
    公共无效性测试_Sub()
    {
    十进制a=1;
    十进制b=2;
    Assert.AreEqual((a-b),Calculator.Sub(a,b));
    }
    }
    
  • 现在,对于这个问题,我已经为集成添加了代码,但是错过了开始定制代码覆盖的主要内容。有人知道吗

    如何适应代码覆盖考虑任务令牌?
  • 如何以编程方式启动代码覆盖率
  • 很抱歉,如果这些只是“一个”问题的“要点”


    谢谢

    您是否可以使用代码覆盖率工具获取整个应用程序的覆盖率,然后获取生成的覆盖率报告,并使用您的
    riskdattribute
    进行反射,以查找类/方法的覆盖率,从而生成第二个报告?这听起来很合理,但您能否通过一个示例更明确地说明问题,因为我不知道,如何以编程方式启动MS代码覆盖率工具?或者使用第三方工具,如或NCover。读取所述工具的输出(通常为XML)。使用反射查找具有属性的代码中的所有方法。将两者联系起来。我相信您会发现这是一次非常有价值的学习经历。我了解了如何使用vstestconsole.exe启动单元测试,它可以同时执行代码覆盖率选项。我将按照您的建议使用反射来检索具有所需属性的类。Shaun,你最终知道哪个vs工具负责解析任务令牌并在任务列表中显示结果吗?
    /// <summary>
    /// Test class for Calculator
    /// </summary>
    [TestClass]
    public class CalculatorTest
    {
        /// <summary>
        /// Tests addition
        /// </summary>
        [TestMethod]
        public void Test_Sub()
        {
            decimal a = 1;
            decimal b = 2;
            Assert.AreEqual((a - b), Calculator.Sub(a, b));
        }
    }