我在VS2008中使用StyleCop。我收到此错误:
SA1638:文件头的copyright tag中的file属性必须包含文件名。
这是我的标题。
// <copyright file="AssemblyInfo.cs" company="company">
// Copyright (c) company. All rights reserved.
// </copyright>
// <author>me</author>
// <email>[email protected]</email>
// <date>2010-03-04</date>
// <summary>blah blah.</summary>
我怀疑问题是我的AssemblyInfo.cs位于Properties文件夹中。有关如何在不消除StyleCop的情况下修复此警告的任何线索?
在“解决方案资源管理器”中选择该文件,打开右键单击“属性”窗口,复制“文件名”区域中的文本,将其粘贴到标题中。
属性目录应该无关紧要,我假设你在那里有一个拼写错误。
加成: 如果这不起作用,那么要修复它,你将不得不把它带到一个新的水平。 将整个项目复制到新解决方案,使用StyleCop重新扫描。 删除所有不相关的文件,使用StyleCop重新扫描。 删除问题文件中除标题以外的所有代码,使用StyleCop重新扫描。 如果问题在途中某处消失,那将是非常奇怪的。 如果问题没有消失,那么你就有了可重复的样本!
压缩该样本并将其附加到新的工作项:http://code.msdn.microsoft.com/sourceanalysis/WorkItem/List.aspx
考虑到一段时间,可能会有一个新的版本来修复这个bug。 8)
对于Properties文件夹中的AssemblyInfo.cs文件,我有以下内容:
// <copyright file="AssemblyInfo.cs" company="company">
// product
// Copyright (c) 2004-2010
// by company ( http://www.example.com )
// </copyright>
它没有任何问题。您确定文件名是否正确(可能是外壳已关闭?)并且您没有任何无效的XML(可能是公司名称中的&符号)?
根据StyleCop文档,这就是你现在如何处理AssemblyInfo.cs
:
由工具完全自动生成且StyleCop不应检查或强制执行的文件可以包含“自动生成”标头而不是标准文件标头。这将导致StyleCop忽略该文件。绝不应将此类型的标头放在手动编写的代码文件之上。
// <auto-generated />
namespace Sample.Something
{
// The contents of this file are completely auto-generated by a tool.
}
原因是文件名与该文件中的类名不同。使文件名和类名相同将解决此问题。
最可能的问题是你的文件名和类名不同。如果您可以将您的类更新为partial,则此错误将不会显示在StyleCop中。
文件名和类应该相同。
请在文件头文档之后使用它。它将解决问题。
[module: System.Diagnostics.CodeAnalysis.SuppressMessage("StyleCop.CSharp.DocumentationRules", "SA1649:FileHeaderFileNameDocumentationMustMatchTypeName", Justification = "Reviewed.")]