我已经在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设置窗口中,但它是在不使用try catch方法的情况下验证方法的方法。