March 9, 2014

SA1208 : CSharp.Ordering : System using directives must be placed before all other using directives.

專案上使用了StyleCop來對coding style做檢測,出現了以下警告


這個警告出現於在宣告using指示詞時,若.NET Framework內建using指示詞放在非內建using指示詞下方,StyleCop則會出現警告訊息。如下面範例的using NUnit.Framework放在using System上方。


通常我使用Visual Studio內建的工具來對using指示詞做清理加排序,如Remove and Sort


或是用CodeMaid執行Cleanup也可以順便將using指示詞做清理加排序。


之前在Visual Studio 2010使用以上兩個方式,我就能順利將using指示詞重新排序,內建的using指示詞便會移到上方去。但在Visual Studio 2013上,不管是使用內建的Remove and Sort或是使用CodeMaid,內建的using指示詞卻會被放在下方。比對了一下VS 2010和VS 2013的設定發現,在VS 2010中,Place 'System' directives first when sorting usings預設是勾選的。


而VS 2013中,這選項預設是未勾選的。


將此選項勾選後重新執行Remove and Sort或CodeMaid的Cleanup,可以看到內建的using指示詞便會排在上方了。

No comments: