我以编程方式使用VS2010和Fxcop 10.0(fxcopcmd.exe)来生成fxcop分析结果(xml文件)
我想要解析器 xml 文件来获取 fxcop 分析结果。
在java语言中我发现了这个:http://grepcode.com/file/repo1.maven.org/maven2/org.jvnet.hudson.plugins/violations/0.7.7/hudson/plugins/violations/types/fxcop/FxCopParser.java http://grepcode.com/file/repo1.maven.org/maven2/org.jvnet.hudson.plugins/violations/0.7.7/hudson/plugins/violations/types/fxcop/FxCopParser.java
对 C# 解析器有什么建议吗?
我使用此代码来获取报告中的问题数量。
您也可以从 XElement 检索实际消息
public class Parser
{
public Parser(string fileName)
{
XDocument doc = XDocument.Load(fileName);
var issues = GetAllIssues(doc);
NumberOfIssues = issues.Count;
var criticalErrors = GetCriticalErrors(issues);
var errors = GetErrors(issues);
var criticalWarnings = GetCriticalWarnings(issues);
var warnings = GetWarnings(issues);
NumberOfCriticalErrors = criticalErrors.Count;
NumberOfErrors = errors.Count;
NumberOfCriticalWarnings = criticalWarnings.Count;
NumberOfWarnings = warnings.Count;
}
public int NumberOfIssues
{
get;
private set;
}
public int NumberOfCriticalErrors
{
get;
private set;
}
public int NumberOfErrors
{
get;
private set;
}
public int NumberOfCriticalWarnings
{
get;
private set;
}
public int NumberOfWarnings
{
get;
private set;
}
private List<XElement> GetAllIssues(XDocument doc)
{
IEnumerable<XElement> issues =
from el in doc.Descendants("Issue")
select el;
return issues.ToList();
}
private List<XElement> GetCriticalErrors(List<XElement> issues)
{
IEnumerable<XElement> errors =
from el in issues
where (string)el.Attribute("Level") == "CriticalError"
select el;
return errors.ToList();
}
private List<XElement> GetErrors(List<XElement> issues)
{
IEnumerable<XElement> errors =
from el in issues
where (string)el.Attribute("Level") == "Error"
select el;
return errors.ToList();
}
private List<XElement> GetCriticalWarnings(List<XElement> issues)
{
IEnumerable<XElement> warn =
from el in issues
where (string)el.Attribute("Level") == "CriticalWarning"
select el;
return warn.ToList();
}
private List<XElement> GetWarnings(List<XElement> issues)
{
IEnumerable<XElement> warn =
from el in issues
where (string)el.Attribute("Level") == "Warning"
select el;
return warn.ToList();
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)