微軟發布編碼風格強制工具StyleCop

2021-09-08 02:28:25 字數 1940 閱讀 1756

制編碼風格是乙個長期被熱烈爭論的話題。人們不僅為團隊應該遵循何種編碼風格而爭論不休,同時還要爭論究竟是否應該確立乙個標準的編碼風格。現在,微軟發布了stylecop,這是他們在內部使用的乙個編碼風格強制工具,微軟的這一舉措無疑將起到推波助瀾的作用。

stylecop,也即所謂的微軟c#源**分析器(microsoft source analysis for c#),用途和fxcop相似,只不過作用物件是源**。此外,它和fxcop一樣是源於微軟的內部工具,在發展到一定程度之後,微軟覺得對其他人也有 用,於是被公開發布。不過,stylecop的自定義程度不如fxcop那麼高。

source analysis的最終目標是允許你生成優雅、一致的**,讓你的團隊成員和其他檢視你**的人容易閱讀。為達到這一目的,source analysis不允許它的規則被過多的配置。source analysis使用一種統一的方式來處理**風格、布局和可讀性規則。你很可能並不認同所有的規則,甚至會發現某些規則並非如你所願。然而,在微軟內部 使用這個工具的大部分團隊在經過短暫的調整期後,都能夠欣然接受source analysis強制要求的這些規則,甚至開始認為如果不使用這種風格來編寫**,就很難閱讀。

jason allor聲稱由這個工具所強制要求的大約200條規則與visual studio的預設設定是相容的。遺憾的是,他忘記提到visual studio具有6個完全不同的預設設定集合,其中多數與這個工具互相矛盾的。

這個工具涉及的方面包括:

·支援檔案內容

·除錯文字

·編排元素頭和檔案頭中的文件格式

·元素、語句、表示式和查詢子句的布局

·行空格

·元素、欄位和變數的命名

·大括號、圓括號、方括號等的位置

·在方法宣告或方法呼叫中方法引數的位置

·關鍵字和操作符周圍的空格

·在類中元素的標準順序

·訪問修飾符的使用

·內建型別的使用

在空白的控制台應用程式上執行這些規則,會返回9個錯誤,如果你開啟「keep tabs」設定,則會出現16個錯誤。一些規則稍顯笨拙,例如要求「using」指示符必須放在命名空間內,而不是放在檔案頂部。

已經有人在抱怨這個工具缺乏校正的支援。dustin norman寫道:

在將這個工具執行在乙個較小的程式集上時,這個工具要我手動修改561個違規錯誤,而它卻不能在不影響**語義的基礎上自動為我修復錯誤——這真的要讓我崩潰了!

古老的tabs vs spaces爭論【譯者注:即**的縮排是用tabs來實現還是用spaces來實現】又被提及,而且我們還不能禁用這一規則。nick berardi寫道:

真是開玩笑。tabs居然不被允許。相反,只能使用空格。這個主意糟透了,因為它會破壞語句塊的布局,例如乙個變數使用3個空格,而其他變數則使用了4個。無論如何,應該允許禁用類似tab規則這樣毫無意義的規則。

如 果能夠禁用這些規則,這個工具就更好了。我知道你會說他們已經夠好了。但是我完全不同意使用空格來代替tab。這是毫無邏輯可言的,或許只有在vi編輯器 第一次出現從而引發了開發人員之間的「聖戰」可堪比擬吧。我喜歡用tab的方式編寫我的**,但它總是警告我,我的每行**都有tab在其中。

同時,daniel stolt也問到了關於vb的情況:

為.net開發人員提供一些額外工具總是受歡迎的——但為什麼只有c#的?**格式的強制規則對於vb開發人員來說也是非常需要的。

顯然,vb**編輯器在對關鍵字和操作符進行縮排和空格的處理中,已經具有自動格式化的一些初步支援,但還不夠接近stylecop所支援的效果。

順便說來,我完全同意nick berardi對於tabs vs spaces的觀點:使用tabs有什麼問題?難道按4-5次方向按鈕比直接指向某個位置更有某種優勢?還是在源**檔案中儲存4-5個空白字元存在著某種好處?

在支援自動校正方面確實存在一些問題,目前還沒有給出解決這個問題的時間表呢。

檢視英文原文:stylecop – microsoft's style enforcement tool for c#

譯 微軟官方的 C 編碼風格

對於c 檔案 cpp和 h 我們使用clan格式 版本3.6 來確保 樣式。在更改任何cpp或 件之後,在合併之前,必須執行src native format code.sh。此指令碼將確保所有本機 檔案都遵循編碼樣式準則。對於非 檔案 xml等 我們當前的最佳指導是一致性。編輯檔案時,保持新 和更...

微軟發布MySQL遷移工具,藉此招攬MySQL使用者

近日,微軟發布了mysql to sql server遷移工具的首個ctp。該工具支援sql server 2005 2008以及azure。u0026 xd n mysql到sql server的遷移分為3個步驟。首先需要將mysql schema轉換成sql server語法 接下來建立乙個新的...

蘋果發布企業服務工具 挑戰谷歌和微軟

鳳凰網科技訊 北京時間11月11日訊息,蘋果當地時間星期三推出一款企業服務apple business essentials,面向員工數量不超過500人的企業,幫助客戶處理遠端工作事宜。apple business essentials當前處於測試階段,正式發布時間是2022年春季。apple bu...