我已经设置了我的C#项目文件来导入一个StyleCop.Targets项目,该项目在构建时运行所有StyleCop规则.这很棒,我在通过Visual Studio进行编译时将项目误差为零.
但是,当我通过MSBuild编译(在同一台机器上)时,我得到的错误是:
构造函数的摘要标记中的文档文本必须以文本开头:初始化< see cref =“MyClass”/>的新实例.类.
在初始化时关注’Z’…我已经使用en-GB全局设置配置了我的Settings.StyleCop,这样我就不会在代码中获得有关Americanisms的错误.但是我无法理解为什么这会导致MSBuild中的错误.
我知道MSBuild正在使用相同的Settings.StyleCop文件,就像我更改规则(比如TabsMustNotBeUsed)一样,MSBuild(和Visual Studio)选择此更改并在整个地方抛出错误.
我正在使用StyleCop 4.7,Visual Studio 2012和MSBuild 4.
这是我的Settings.StyleCop文件的片段:
<StyleCopSettings Version="105">
<GlobalSettings>
<StringProperty Name="Culture">en-GB</StringProperty>
</GlobalSettings>
<Parsers>
<Parser ParserId="StyleCop.CSharp.CsParser">
<ParserSettings>
<BooleanProperty Name="AnalyzeDesignerFiles">False</BooleanProperty>
</ParserSettings>
</Parser>
</Parsers>
<Analyzers>
<Analyzer AnalyzerId="StyleCop.CSharp.SpacingRules">
<Rules>
<Rule Name="TabsMustNotBeUsed">
<RuleSettings>
<BooleanProperty Name="Enabled">False</BooleanProperty>
</RuleSettings>
</Rule>
</Rules>
<AnalyzerSettings />
</Analyzer>
</Analyzers>
</StyleCopSettings>
有线索吗?
干杯!
最佳答案 我假设您正在使用最新版本的StyleCop(4.7.41.0)或接近该版本的版本. 4.7版本系列中有很多更改和修复,并且已经发布了相当规律的更新.
我猜测文件夹层次结构中必须有另一个Settings.StyleCop文件(在子文件夹中),该文件将文化设置回en-US.修改此特定设置文件中的其他规则(如TabsMustNotBeUsed)仍将按预期运行,只要您不在其他设置文件中再次设置它.可能的原因可能是正在运行StyleCop的工作文件夹.
我建议您在文件系统中进行快速扫描,看看是否可以找到任何其他设置文件,如果找到,请检查他们的文化设置.
我做的另一个技巧是停止在解决方案根目录下合并设置文件.这可以通过添加以下设置来完成:
<GlobalSettings>
<StringProperty Name="MergeSettingsFiles">NoMerge</StringProperty>
</GlobalSettings>
这将确保StyleCop在所有开发和构建计算机上的行为相同,无论在层次结构的更高层配置的设置如何(例如StyleCop应用程序文件夹中的设置).但是,如果执行此操作,请确保从不再合并的文件中复制所有必需的设置.从您的描述中我怀疑这将解决这个特定问题,但我发现它有助于保持规则一致性.