Đây thực sự là một quy tắc khá dễ dàng khi bạn biết rằng "lớn nhất" phân tích mục tiêu FxCop là một mô-đun, không phải là một lắp ráp. Trong hầu hết các trường hợp, có một mô-đun cho mỗi hội đồng, do đó, điều này sẽ không gây ra một vấn đề. Tuy nhiên, nếu bạn đang nhận được thông báo vấn đề trùng lặp cho mỗi hội đồng bởi vì bạn có nhiều mô-đun cho mỗi hội đồng, bạn có thể thêm một kiểm tra để ngăn chặn tạo ra nhiều hơn một vấn đề cho mỗi hội đồng.
Dù sao đi nữa, đây là việc thực hiện cơ bản của quy tắc:
private TypeNode AssemblyCompanyAttributeType { get; set; }
public override void BeforeAnalysis()
{
base.BeforeAnalysis();
this.AssemblyCompanyAttributeType = FrameworkAssemblies.Mscorlib.GetType(
Identifier.For("System.Reflection"),
Identifier.For("AssemblyCompanyAttribute"));
}
public override ProblemCollection Check(ModuleNode module)
{
AttributeNode assemblyCompanyAttribute = module.ContainingAssembly.GetAttribute(this.AssemblyCompanyAttributeType);
if (assemblyCompanyAttribute == null)
{
this.Problems.Add(new Problem(this.GetNamedResolution("NoCompanyAttribute"), module));
}
else
{
string companyName = (string)((Literal)assemblyCompanyAttribute.GetPositionalArgument(0)).Value;
if (!string.Equals(companyName, "FooBar Inc.", StringComparison.Ordinal))
{
this.Problems.Add(new Problem(this.GetNamedResolution("WrongCompanyName", companyName), module));
}
}
return this.Problems;
}
Nguồn
2011-11-11 12:54:51
tuyệt vời, cảm ơn! –