StyleCop

StyleCop 中文環境設定

Stylecop使用一段時間後,感覺有兩個預設規則不太適合中文環境,所以個人會在專案中取消這兩條規則 首先在專案上按右鍵,選擇StyleCop Settings [![](http://3.bp.blogspot.com/-34eXH7WWiD0/U7pdzXekbgI/AAAAAAAABgs/bnrXu5C4jkk/s1600/01.%E8%A8%AD%E5%AE%9A.png)](http://3.bp.blogspot.com/-34eXH7WWiD0/U7pdzXekbgI/AAAAAAAABgs/bnrXu5C4jkk/s1600/01.%E8%A8%AD%E5%AE%9A.png) 在Rules中的Documentation Rules中,再打開Element Documentation [![](http://1.bp.blogspot.com/-cs3042c1How/U7pdzXgvvJI/AAAAAAAABhI/_83uHNC8X2A/s1600/02.%25E9%25A0%2585%25E7%259B%25AE.png)](http://1.bp.blogspot.com/-cs3042c1How/U7pdzXgvvJI/AAAAAAAABhI/_83uHNC8X2A/s1600/02.%25E9%25A0%2585%25E7%259B%25AE.png) 取消SA1630 DocumentationTextMustContainWhitespace [![](http://3.bp.blogspot.com/-81-MVHrilwI/U7pehwbCa6I/AAAAAAAABhM/CqJfG8KK2nk/s1600/03.SA1630.png)](http://3.bp.blogspot.com/-81-MVHrilwI/U7pehwbCa6I/AAAAAAAABhM/CqJfG8KK2nk/s1600/03.SA1630.png) 取消SA1650 ElementDocumentationMustBeSpelledCorrectly [![](http://1.bp.blogspot.com/-MqmnKPxdPvI/U7peqPbdq_I/AAAAAAAABhU/K6hrfHfMCs0/s1600/04.SA1650.png)](http://1.bp.blogspot.com/-MqmnKPxdPvI/U7peqPbdq_I/AAAAAAAABhU/K6hrfHfMCs0/s1600/04.SA1650.png) 設定好按OK後,專案下面就會多出一個隱藏檔,檔名為Settings.StyleCop [![](http://2.bp.blogspot.com/-FdbCL8bUzX8/U7pe2nDlO-I/AAAAAAAABhc/rvkpRQFm3Ls/s1600/05.%E9%9A%B1%E8%97%8F%E6%AA%94.png)](http://2.bp.blogspot.com/-FdbCL8bUzX8/U7pe2nDlO-I/AAAAAAAABhc/rvkpRQFm3Ls/s1600/05.%E9%9A%B1%E8%97%8F%E6%AA%94.png) 內容是XML格式的文件,可以看的出來,就是把那兩條規則關閉而已 <StyleCopSettings Version="105"> <Analyzers> <Analyzer AnalyzerId="StyleCop.CSharp.DocumentationRules"> <Rules> <Rule Name="DocumentationTextMustContainWhitespace"> <RuleSettings> <BooleanProperty Name="Enabled">False</BooleanProperty> </RuleSettings> </Rule> <Rule Name="ElementDocumentationMustBeSpelledCorrectly"> <RuleSettings> <BooleanProperty Name="Enabled">False</BooleanProperty> </RuleSettings> </Rule> </Rules> <AnalyzerSettings /> </Analyzer> </Analyzers> </StyleCopSettings>


TeamCity 整合 StyleCop

先打開管理頁面的Plugin List,選擇Available Plugin [![](http://3.bp.blogspot.com/-oDy7ga_ahsU/U5FaL4uSbTI/AAAAAAAABbI/bTAKqhJ56MQ/s1600/00.AvailablePlugin.png)](http://3.bp.blogspot.com/-oDy7ga_ahsU/U5FaL4uSbTI/AAAAAAAABbI/bTAKqhJ56MQ/s1600/00.AvailablePlugin.png) 找到StyleCop Runner [![](http://4.bp.blogspot.com/-Y0Omog127jg/U5FUq4nBNBI/AAAAAAAABZU/zO4XKx93Lxs/s1600/01.Download.png)](http://4.bp.blogspot.com/-Y0Omog127jg/U5FUq4nBNBI/AAAAAAAABZU/zO4XKx93Lxs/s1600/01.Download.png) 下載最新版本的StyleCop Plugin [![](http://4.bp.blogspot.com/-ivWisnEKuWc/U5FUvySNMtI/AAAAAAAABZc/aQ4RiKU-5Bo/s1600/02.DW.png)](http://4.bp.blogspot.com/-ivWisnEKuWc/U5FUvySNMtI/AAAAAAAABZc/aQ4RiKU-5Bo/s1600/02.DW.png) 把檔案解壓縮後會得到不帶版本號的Stylecop.zip [![](http://4.bp.blogspot.com/-3HndiN2ipLY/U5FU5j_9pvI/AAAAAAAABZk/01PnJvAMqqc/s1600/03.%E8%A7%A3%E5%A3%93%E7%B8%AE.png)](http://4.bp.blogspot.com/-3HndiN2ipLY/U5FU5j_9pvI/AAAAAAAABZk/01PnJvAMqqc/s1600/03.%E8%A7%A3%E5%A3%93%E7%B8%AE.png) 打開管理頁面的PluginList,點擊Upload plugin zip連結[![](http://4.bp.blogspot.com/-ZjTZdgwWpyc/U5FVDXCQCwI/AAAAAAAABZs/oZOweJhsvoU/s1600/04.PluginList.png)](http://4.bp.blogspot.com/-ZjTZdgwWpyc/U5FVDXCQCwI/AAAAAAAABZs/oZOweJhsvoU/s1600/04.PluginList.png) 選擇剛解壓縮出來的Stylecop.zip 上傳到Plugins資料夾下面[![](http://2.bp.blogspot.com/-fMJo2RjNF1U/U5FVbVB5FEI/AAAAAAAABZ0/83_2pD59O64/s1600/05.Upload.png)](http://2.bp.blogspot.com/-fMJo2RjNF1U/U5FVbVB5FEI/AAAAAAAABZ0/83_2pD59O64/s1600/05.Upload.png) 重新啟動TeamCity服務[![](http://4.bp.blogspot.com/-3pEb8Sw8AXs/U5FVrYnQCEI/AAAAAAAABZ8/EY91_ySL0WI/s1600/06.Restart.png)](http://4.bp.blogspot.com/-3pEb8Sw8AXs/U5FVrYnQCEI/AAAAAAAABZ8/EY91_ySL0WI/s1600/06.Restart.png) Plugin列表中可以看到StyleCop套件的資訊[![](http://2.bp.blogspot.com/-4boCfNRDupM/U5FVwJcK6xI/AAAAAAAABaE/NBUmGkfZgeI/s1600/07.AvailablePlugin.png)](http://2.bp.blogspot.com/-4boCfNRDupM/U5FVwJcK6xI/AAAAAAAABaE/NBUmGkfZgeI/s1600/07.AvailablePlugin.png) Build Step中就可以選擇StyleCop這個Runner [![](http://1.bp.blogspot.com/-avk9twecrxM/U5FWpaYUPoI/AAAAAAAABaQ/88_LXNHQWGE/s1600/08.BuildStep.png)](http://1.bp.blogspot.com/-avk9twecrxM/U5FWpaYUPoI/AAAAAAAABaQ/88_LXNHQWGE/s1600/08.BuildStep.png)輸入選擇要檢查的檔案路徑和StyleCop.dll的路徑[![](http://3.bp.blogspot.com/-Ei7SIMcLMug/U5FXaI7eU0I/AAAAAAAABaY/ony7YCKBOg4/s1600/09.Setting.png)](http://3.bp.blogspot.com/-Ei7SIMcLMug/U5FXaI7eU0I/AAAAAAAABaY/ony7YCKBOg4/s1600/09.Setting.png) 預設會把找到的問題當做錯誤,造成建置失敗 [![](http://4.bp.blogspot.com/-Dt_BfUwJBrY/U5FYOQXn35I/AAAAAAAABak/sLzXeq4qBFc/s1600/10.Error.png)](http://4.bp.blogspot.com/-Dt_BfUwJBrY/U5FYOQXn35I/AAAAAAAABak/sLzXeq4qBFc/s1600/10.Error.png) 可以修改Max Viloations,這是最大問題數的數量,超過就失敗,負數為不限制 另一個方法是勾選Treat errors as warnings,把錯誤當成警告 [![](http://4.bp.blogspot.com/-kcKgpBM4Egw/U5FYUjd0VXI/AAAAAAAABas/REIcyjgbnoo/s1600/11.Warn.png)](http://4.bp.blogspot.com/-kcKgpBM4Egw/U5FYUjd0VXI/AAAAAAAABas/REIcyjgbnoo/s1600/11.Warn.png) 建置結果會順利通過,但有檢查到的數量顯示 [![](http://4.bp.blogspot.com/-pR918wQlwpo/U5FYc5uSooI/AAAAAAAABa0/fL2NrOd53uQ/s1600/12.Warb.png)](http://4.bp.blogspot.com/-pR918wQlwpo/U5FYc5uSooI/AAAAAAAABa0/fL2NrOd53uQ/s1600/12.Warb.png) 點選該筆建置內容,就會看到StyleCop的詳細資料 [![](http://2.bp.blogspot.com/-NyrSWvNkOE0/U5FYgh8O-hI/AAAAAAAABa8/tpdrcCrEjww/s1600/13.Detail.png)](http://2.bp.blogspot.com/-NyrSWvNkOE0/U5FYgh8O-hI/AAAAAAAABa8/tpdrcCrEjww/s1600/13.Detail.png)


StyleCop 常見問題與修正方法

1. 單一頁面檢查方法 在空白地方按右鍵,選擇Run StyleCop,就只會檢查目前頁面 [![](http://3.bp.blogspot.com/-0l67G3vlzQ4/UO_I6oV3ySI/AAAAAAAAAqA/UEK5h8PGDpc/s1600/00.RunStyleCop.png)](http://3.bp.blogspot.com/-0l67G3vlzQ4/UO_I6oV3ySI/AAAAAAAAAqA/UEK5h8PGDpc/s1600/00.RunStyleCop.png) 2. 沒有檔頭宣告 錯誤訊息 The file has no header, the header Xml is invalid, or the header is not located at the top of the file. 修正方法 程式碼第一行加上檔頭宣告,格式如下 [![](http://2.bp.blogspot.com/-Cpp1sApPGuQ/UO_PTzM4scI/AAAAAAAAArg/aAWRAQ6UqiI/s1600/07.Header.png)](http://2.bp.blogspot.com/-Cpp1sApPGuQ/UO_PTzM4scI/AAAAAAAAArg/aAWRAQ6UqiI/s1600/07.Header.png) 如果是自動產生的檔案,可用auto-generated標籤略過 // <auto-generated /> 3. 縮排格式不正確 錯誤訊息 Tabs are not allowed. Use spaces instead. 修正方法 工具–>選項–>文字編輯器–>所有語言–>定位點 定位點和縮排大小都設定成4,並選擇插入空格的方式 開啟原始碼,使用CTRL+k, d重整程式碼即可 [![](http://2.bp.blogspot.com/-9S6GXTgtBsM/UO_JHDLoHOI/AAAAAAAAAqI/ln0-f0prpcE/s1600/01.tab.png)](http://2.bp.blogspot.com/-9S6GXTgtBsM/UO_JHDLoHOI/AAAAAAAAAqI/ln0-f0prpcE/s1600/01.tab.png) 4. Using指示詞位置 錯誤訊息 All using directives must be placed inside of the namespace. 修正方法 把所有using指示詞剪下,放到namespace下面


StyleCop 程式碼風格和一致性規則檢查工具

StyleCop是C# 程式碼風格和一致性規則檢查工具,針對原始碼來做檢查,目前已經Open Source,網址為http://stylecop.codeplex.com 首先下載msi格式的安裝檔[![](http://3.bp.blogspot.com/--jwuaUDVBfs/UNhBDnLG0eI/AAAAAAAAAhk/b_U-xXWZIcc/s1600/01.Download.png)](http://3.bp.blogspot.com/--jwuaUDVBfs/UNhBDnLG0eI/AAAAAAAAAhk/b_U-xXWZIcc/s1600/01.Download.png) 下載回來後一直按下一步就行了[![](http://1.bp.blogspot.com/-PRXONIZ_JxE/UNhBEIzkfBI/AAAAAAAAAho/VlZngd-AHbE/s1600/02.Install.png)](http://1.bp.blogspot.com/-PRXONIZ_JxE/UNhBEIzkfBI/AAAAAAAAAho/VlZngd-AHbE/s1600/02.Install.png) 等幾分鐘才能跑完[![](http://1.bp.blogspot.com/-xfr0KROUJtg/UNhBEyCSOrI/AAAAAAAAAhw/a0SoGG2XcEY/s1600/03.InstallOK.png)](http://1.bp.blogspot.com/-xfr0KROUJtg/UNhBEyCSOrI/AAAAAAAAAhw/a0SoGG2XcEY/s1600/03.InstallOK.png) 打開專案,在專案上面按右鍵,選單中就會出現StyleCop相關的功能,先選擇Run StyleCop[![](http://1.bp.blogspot.com/-M30ktUiaFUk/UNhBFYlbzQI/AAAAAAAAAh4/o7PhLu-ZA9Y/s1600/04.ContextMenu.png)](http://1.bp.blogspot.com/-M30ktUiaFUk/UNhBFYlbzQI/AAAAAAAAAh4/o7PhLu-ZA9Y/s1600/04.ContextMenu.png) 工作清單就會出現一堆不符合的警告在警告訊息上面點兩下,就會跳到引發警告的程式碼位置 [![](http://1.bp.blogspot.com/-rwafVo1cfac/UNhBGI6MfMI/AAAAAAAAAiA/Gp5JccWdtTo/s1600/05.ErrorMsgClick.png)](http://1.bp.blogspot.com/-rwafVo1cfac/UNhBGI6MfMI/AAAAAAAAAiA/Gp5JccWdtTo/s1600/05.ErrorMsgClick.png) 如果要了解引發警告的原因,可以在訊息上面按右鍵,選擇顯示錯誤說明[![](http://2.bp.blogspot.com/-xhJ2QEBbHoI/UNhBG6EP7JI/AAAAAAAAAiI/2V_wFrzpYD8/s1600/06.ShowErrorMsg.png)](http://2.bp.blogspot.com/-xhJ2QEBbHoI/UNhBG6EP7JI/AAAAAAAAAiI/2V_wFrzpYD8/s1600/06.ShowErrorMsg.png) 就會跳出StyleCop的說明手冊[![](http://1.bp.blogspot.com/-iS6TiIGAbBI/UNhBHprpkPI/AAAAAAAAAiQ/dt7cxyCK5b0/s1600/07.ErrorMsg.png)](http://1.bp.blogspot.com/-iS6TiIGAbBI/UNhBHprpkPI/AAAAAAAAAiQ/dt7cxyCK5b0/s1600/07.ErrorMsg.png) 在專案上面按右鍵,可以選擇設定[![](http://1.bp.blogspot.com/-xNiffoKWSq8/UNhBIXrQ8uI/AAAAAAAAAiY/OnDUuiUbrAI/s1600/08.Setting.png)](http://1.bp.blogspot.com/-xNiffoKWSq8/UNhBIXrQ8uI/AAAAAAAAAiY/OnDUuiUbrAI/s1600/08.Setting.png) 顯示的設定介面[![](http://2.bp.blogspot.com/-EaQfSztjdkE/UNhBJPQvZuI/AAAAAAAAAig/rwnc9ZGH9Jg/s1600/09.SettingUI.png)](http://2.bp.blogspot.com/-EaQfSztjdkE/UNhBJPQvZuI/AAAAAAAAAig/rwnc9ZGH9Jg/s1600/09.SettingUI.png) 專案下就會出現一個StyleCo的檔案,裡面就是剛設定的值 [!