[英]C# + StyleCop + MSBuild + Global culture settings failing to be picked up
我已經設置了C#項目文件,以導入在構建時運行所有StyleCop規則的StyleCop.Targets項目。 太好了,通過Visual Studio進行編譯時,我將項目的錯誤降至零。
但是,當我通過MSBuild編譯(在同一台計算機上)時,出現以下錯誤:
The documentation text within the constructor's summary tag must begin with the text: Initializes a new instance of the <see cref="MyClass" /> class.
專注於初始化中的“ Z” ...我已經為我的Settings.StyleCop配置了en-GB全局設置,這樣我就不會在代碼內出現關於美洲主義的錯誤。 但是我無法弄清楚為什么這會導致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應用程序文件夾中的設置)。 但是,如果執行此操作,請確保從不再合並的文件中復制所有必需的設置。 從您的描述中,我懷疑這是否可以解決此特定問題,但是我發現它有助於保持規則的一致性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.