背景#
在 Visual Studio 中,一般通過預設的快捷鍵 Ctrl + K + D
來格式化當前檔案中的所有內容。
與我自己而言,程式碼的格式化非常重要,它影響著我的閱讀體驗。但是,與我工作的一些同事和一些公司老人,他們並不會特別在意程式碼的格式問題,這就讓我有點無語了,我看到之後雖然會修復,但這會造成一些多餘的 git commit 記錄,浪費我的時間。
所以,我需要找到一個類似 Prettier 的自動格式化工具,來幫助我在閱讀程式碼前,自動的格式化整個專案裡面的所有程式碼。
偶然間我發現了 CSharpier,我只能說 Good!關於他的介紹,可以在官網中清晰的看到。
接下來,我們來看看怎麼安裝。
安裝 CSharpier CLI#
為單個專案安裝#
這樣做的好處是,可以宣告當前專案依賴的 dotnet tool,方便他人還原依賴。
- 新建 .config/dotnet-tools.json:
dotnet new tool-manifest
- 為當前專案安裝 CLI:
dotnet tool install csharpier
更新:
dotnet tool update csharpier
全域安裝#
全域安裝:
dotnet tool install --global csharpier
更新:
dotnet tool update csharpier -g
安裝 Visual Studio 插件#
下載插件:https://marketplace.visualstudio.com/items?itemName=csharpier.CSharpier
然後就可以在程式碼中右鍵點擊 Reformat with CSharpier
按鈕來格式化當前檔案:
也可以自定義快捷鍵,或者在儲存時自動格式化,參考插件主頁:https://marketplace.visualstudio.com/items?itemName=csharpier.CSharpier
使用#
在解決方案根目錄或者指定專案目錄中執行:
dotnet csharpier .
格式化配置#
如果需要修改預設的格式化參數,就需要在專案中添加配置檔案,目前支援的格式有 3 種:
.csharpierrc
: 內容可以是 JSON or YAML..csharpierrc.json
or.csharpierrc.yaml
檔案..editorconfig
file. 參考 https://csharpier.com/docs/Configuration#editorconfig。
我採用 YAML 檔案,也就是在根目錄創建一個 .csharpierrc
,然後把以下配置複製進去:
printWidth: 140
useTabs: false
tabWidth: 4
endOfLine: auto
更多配置可以查看 https://csharpier.com/docs/Configuration
忽略檔案配置#
通過添加一個 .csharpierignore
檔案來忽略特定檔案和資料夾,也就是不對它們執行格式化行為。檔案內容採用 gitignore 語法,比如:
Uploads/
**/App_Data/*.cs
當然,CSharpier CLI 內部會有一些預設忽略配置,參考:https://csharpier.com/docs/Ignore#files-ignored-by-default
如果想忽略格式化檔案中某一段程式碼,就添加以下註釋(參考):
// csharpier-ignore
它還可以通過安裝 Nuget 套件來呼叫 API 編寫一個格式化程式碼的程式,參考:https://csharpier.com/docs/API
和 IDE 整合#
官方還提供了一些 IDE 的插件,參考:https://csharpier.com/docs/Editors
其他#
CSharpier 功能太多了,還支援 MsBuild Package、Pre-commit Hook、Continuous Integration 等等功能,時間有限,我就介紹到此了。
已知問題#
- 無法刪除多餘的換行符