Это довольно простое правило, если вы знаете, что «самая большая» цель анализа FxCop - это модуль, а не сборка.В большинстве случаев для каждой сборки используется один модуль, поэтому это не представляет проблемы.Однако, если вы получаете дубликаты уведомлений о проблемах для каждой сборки, поскольку у вас есть несколько модулей для сборки, вы можете добавить проверку, чтобы предотвратить создание более одной проблемы для сборки.
В любом случае, вот базовая реализация:правило:
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;
}