如何使用Stylecop分析器在Visual Studio 15中添加自定义规则集?

时间:2019-08-12 04:28:15

标签: c# stylecop analyzer tfs-code-review

我已经在stylecop分析器中根据自定义规则创建了

每种方法都必须有try catch块。

这是代码

[SourceAnalyzer(typeof(CsParser))]
    public class MyOwnCustomAnalyzer : SourceAnalyzer
    {
        public override void AnalyzeDocument(CodeDocument currentCodeDocument)
        {

                var codeDocument = (CsDocument)currentCodeDocument;
                if (codeDocument.RootElement != null && !codeDocument.RootElement.Generated)
                {
                    codeDocument.WalkDocument(new CodeWalkerElementVisitor<object>(this.InspectCurrentElement), null, null);
                }
        }

        private bool InspectCurrentElement(CsElement element, CsElement parentElement, object context)
        {

                if (element.ElementType == ElementType.Method)
                {
                    bool boolIsTryFound = false;
                    bool boolIsCatchFound = false;
                    var tempDocument = (CsDocument)element.Document;
                    var objReader = tempDocument.SourceCode.Read();
                    string strCode;
                    while ((strCode = objReader.ReadLine()) != null)
                    {
                        if (strCode.Contains("try"))
                        {
                            boolIsTryFound = true;
                        }

                        if (boolIsTryFound)
                        {
                            if (strCode.Contains("catch"))
                            {
                                boolIsCatchFound = true;
                            }
                        }
                    }

                    if (boolIsTryFound && (boolIsCatchFound == false))
                    {
                        AddViolation(parentElement, "MyOwnCustomRule", "CatchShouldBeImplemented");

                    }
                }

            return true;
        }
    }

我点击了以下链接以创建自定义规则,并将Dll复制到扩展文件夹中。

StyleCop Custom rule

它显示在Stylecop设置窗口中,但它是在不使用try catch方法的情况下验证方法的方法。

0 个答案:

没有答案