SlideShare a Scribd company logo
1
保哥線上講堂 (1)
多奇數位創意有限公司
技術總監 黃保翕 ( Will 保哥 )
部落格:http://blog.miniasp.com/
利用 StyleCop 撰寫一致的 C# 程式碼風格
All services from your imperative.
2
什麼是 STYLECOP
What is StyleCop
All services from your imperative.
3
什麼是 StyleCop?
 主要用途
 檢查 C# 程式碼撰寫風格符合標準規範
 StyleCop 本身建議的撰寫風格
 Microsoft's .NET Framework Design Guidelines
 注意事項
 不支援 VB.NET 或其他語言
 早期由微軟開發,April 2010 已開放原始碼
 官方網站
 http://www.stylecop.com/
 https://twitter.com/stylecopdev
All services from your imperative.
4
StyleCop 相容性
 支援 Visual Studio 版本
 Visual Studio 2008
 Visual Studio 2010
 支援 JetBrains ReSharper (R#)
 R# 5.1.3 ( 5.1.3000.12)
 R# 6.0 (6.0.2202.688)
 R# 6.1 (6.1.37.86)
 R# 6.1.1 (6.1.1000.82)
 Visual Studio 2012
 Visual Studio 2013
 R# 7.0.1 (7.0.1098.2760)
 R# 7.1.3 (7.1.3000.2254)
 R# 8.2 (8.2.0.2160)
All services from your imperative.
5
StyleCop 主要分析規則
 區分七大類,共 165 條規則
 Documentation (SA1600-) 有 51 條規則
 Layout (SA1500-) 有 19 條規則
 Maintainability (SA1400-) 有 13 條規則
 Naming (SA1300-) 有 12 條規則
 Ordering (SA1200-) 有 16 條規則
 Readability (SA1100-) 有 26 條規則
 Spacing (SA1000-) 有 28 條規則
All services from your imperative.
6
DEMO
示範 StyleCop 基本安裝與操作
All services from your imperative.
7
了解 STYLECOP 的規則如何定義
Settings.StyleCop
All services from your imperative.
8
幾種定義套用規則的方法
 手動編輯 *.StyleCop 檔案
 滑鼠雙擊 *.StyleCop 檔案
 透過內建的 StyleCopSettingsEditor.exe 工具
 StyleCopSettingsEditor.exe Settings.StyleCop
 在特定類別、方法或參數跳過規則檢查
 http://www.stylecop.com/docs/Suppressions.html
All services from your imperative.
9
DEMO
示範 StyleCop 如何定義要套用的規則
All services from your imperative.
10
如何跟 MSBUILD 組建流程整合
PM> Install-Package StyleCop.MSBuild
All services from your imperative.
11
安裝 NuGet 套件:StyleCop.MSBuild
 NuGet Package
 http://www.nuget.org/packages/StyleCop.MSBuild
 PM> Install-Package StyleCop.MSBuild
 stylecop-msbuild (Bitbucket)
 https://bitbucket.org/adamralph/stylecop-msbuild
 將 StyleCop 檢查失敗視為「錯誤」
 用 Notepad 開啟專案檔 ( *.csproj )
 在 <PropertyGroup> 加上以下 MSBuild 屬性設定
<StyleCopTreatErrorsAsWarnings>false</StyleCopTreatErrorsAsWarnings>
All services from your imperative.
12
DEMO
示範 StyleCop 如何跟 MSBuild 組建流程整合
All services from your imperative.
13
了解 STYLECOP 在實務上如何應用
StyleCop in Action
All services from your imperative.
14
StyleCop 使用經驗分享
 找尋一個可靠的 Settings.StyleCop 定義檔
 https://aspnetwebstack.codeplex.com/SourceControl/latest
 透過一個既有的專案調校定義檔
 選擇哪些是你不要的規則定義!
 放置 Settings.StyleCop 在適當的地方
 方案根目錄
 專案根目錄
 中文化 StyleCop 規則
 翻譯的過程中了解每條規則的意義
 整合 CI 建置流程 ( TFS / MSBuild )
All services from your imperative.
15
總結
Summary
All services from your imperative.
16
總結
 StyleCop 是個必備工具
 每個開發團隊都應該要有一份自己的規則集
 適當的套用在開發流程與版控流程上 ( CI )
 在公司內部分享 StyleCop 使用經驗
All services from your imperative.
17
StyleCop 相關資源
 StyleCop 官網
 http://www.stylecop.com/
 StyleCop 4.7 線上文件
http://www.stylecop.com/docs/
 StyleCop - Wikipedia, the free encyclopedia
http://en.wikipedia.org/wiki/StyleCop
 StyleCop CLI
http://sourceforge.net/projects/stylecopcli/
 StyleCop 的命令列工具版本
 StyleCopCLI.exe -?
All services from your imperative.
18
聯絡資訊
 The Will Will Web
記載著 Will 在網路世界的學習心得與技術分享
 http://blog.miniasp.com/
 Will 保哥的技術交流中心 (臉書粉絲專頁)
 http://www.facebook.com/will.fans
 ★ ★ ★ Will 保哥的噗浪 ★ ★ ★
 http://www.plurk.com/willh/invite
All services from your imperative.
19
感謝各位

More Related Content

PDF
The Business Event Bus
PPTX
Python/Flask Presentation
PPT
ASP.NET MVC Presentation
PDF
rx-java-presentation
PPTX
Kotlin Basics & Introduction to Jetpack Compose.pptx
PPTX
What is dotnet (.NET) ?
PPTX
Solid principles
PDF
PUC SE Day 2019 - SpringBoot
The Business Event Bus
Python/Flask Presentation
ASP.NET MVC Presentation
rx-java-presentation
Kotlin Basics & Introduction to Jetpack Compose.pptx
What is dotnet (.NET) ?
Solid principles
PUC SE Day 2019 - SpringBoot

What's hot (20)

PDF
Flutter beyond hello world
PPTX
Spring Boot and REST API
PDF
What is Puppet | Puppet Tutorial for Beginners | Puppet Configuration Managem...
PPT
Introduction To Dotnet
PDF
OpenShift, Docker, Kubernetes: The next generation of PaaS
PPTX
Introduction to kubernetes
PPTX
Introduction to .NET Core
PDF
NestJS
PPS
Vb.net session 01
PPTX
Intro to React
PDF
What is an IoT Agent
PPTX
Domain Driven Design
PPTX
Workshop spring session 2 - La persistance au sein des applications Java
PDF
Flutter 踩雷心得
PDF
Configuration & Routing of Clos Networks
PPTX
Tools and Platforms for OpenFlow/SDN
PPT
MVC ppt presentation
PPTX
A flight with Flutter
PDF
Why we chose Argo Workflow to scale DevOps at InVision
Flutter beyond hello world
Spring Boot and REST API
What is Puppet | Puppet Tutorial for Beginners | Puppet Configuration Managem...
Introduction To Dotnet
OpenShift, Docker, Kubernetes: The next generation of PaaS
Introduction to kubernetes
Introduction to .NET Core
NestJS
Vb.net session 01
Intro to React
What is an IoT Agent
Domain Driven Design
Workshop spring session 2 - La persistance au sein des applications Java
Flutter 踩雷心得
Configuration & Routing of Clos Networks
Tools and Platforms for OpenFlow/SDN
MVC ppt presentation
A flight with Flutter
Why we chose Argo Workflow to scale DevOps at InVision
Ad

Viewers also liked (20)

PPTX
HTML5 規格最新發展現況 (HTML5 趨勢發展與技術應用論壇)
PPTX
.Net 快速開發與 Nuget 企業應用
PPTX
Code review 的目的
PPTX
Kathmandu infosys`
DOCX
PDF
Yang_Li_PreferencesAndMaps
DOCX
grafico para la asistencia
PDF
Estadistica
PPTX
TIC APLICADA AL TRABAJO UNIVERSITARIO.
PPT
Automating C# Coding Standards using StyleCop and FxCop
PPTX
White Collar Crimes
PPTX
使用 ASP.NET 5 實戰開發雲端應用程式
PPTX
《多奇線上講堂》如何用 Outlook 和 OWA 整理聯絡人資訊
PPTX
DEV208 - ASP.NET MVC 5 新功能探索
PPTX
JavaScript 物件導向觀念入門 v.s. TypeScript 開發實戰 (微軟實戰課程日)
PPTX
簡介 Git hub 平台 ( 1.5 hrs )
PPTX
DEV305 - ASP.NET 5 開發攻略
PPTX
ASP.NET MVC 6 新功能探索
PPTX
git merge 與 rebase 的觀念與實務應用
PPTX
TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式
HTML5 規格最新發展現況 (HTML5 趨勢發展與技術應用論壇)
.Net 快速開發與 Nuget 企業應用
Code review 的目的
Kathmandu infosys`
Yang_Li_PreferencesAndMaps
grafico para la asistencia
Estadistica
TIC APLICADA AL TRABAJO UNIVERSITARIO.
Automating C# Coding Standards using StyleCop and FxCop
White Collar Crimes
使用 ASP.NET 5 實戰開發雲端應用程式
《多奇線上講堂》如何用 Outlook 和 OWA 整理聯絡人資訊
DEV208 - ASP.NET MVC 5 新功能探索
JavaScript 物件導向觀念入門 v.s. TypeScript 開發實戰 (微軟實戰課程日)
簡介 Git hub 平台 ( 1.5 hrs )
DEV305 - ASP.NET 5 開發攻略
ASP.NET MVC 6 新功能探索
git merge 與 rebase 的觀念與實務應用
TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式
Ad

Similar to 保哥線上講堂:利用 StyleCop 撰寫一致的 C# 程式碼風格 (20)

PPTX
极速 Angular 开发:效能调校技巧 (ngChina 2019)
PPTX
從頭打造 C#、.NET 與 ASP.NET Core 開發環境
PPTX
ASP.NET MVC 5線上課程(入門前三天)
PPTX
twMVC#01 | ASP.NET MVC 的第一次親密接觸
PDF
twMVC#02 | ASP.NET MVC 從無到有
PDF
Asp.net mvc 從無到有 -twMVC#2
PPTX
使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例
PDF
與 Asp.net mvc 的第一次親密接觸 - twMVC#1
PDF
Csharp基礎程式設計課程...........................
PDF
rebar erlang 2
PDF
CICD Workshop 20180922
PDF
twMVC#28 | visual studio 2017 新功能介紹
PDF
Continuous Delivery Workshop with Ansible x GitLab CI (3rd)
PDF
Laradebut #5 - 關於 CRUD 外的一點小事
PPTX
Angular.js & ASP.NET in Study4
PPTX
2021 ee大会-旷视ai产品背后的研发效能工具建设
PDF
Asp.net mvc網站的從無到有
PDF
用 C# 與 .NET 也能打造機器學習模型:你所不知道的 ML.NET 初體驗
ODP
GNU Autoconf / Automake #4
PPTX
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天
极速 Angular 开发:效能调校技巧 (ngChina 2019)
從頭打造 C#、.NET 與 ASP.NET Core 開發環境
ASP.NET MVC 5線上課程(入門前三天)
twMVC#01 | ASP.NET MVC 的第一次親密接觸
twMVC#02 | ASP.NET MVC 從無到有
Asp.net mvc 從無到有 -twMVC#2
使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例
與 Asp.net mvc 的第一次親密接觸 - twMVC#1
Csharp基礎程式設計課程...........................
rebar erlang 2
CICD Workshop 20180922
twMVC#28 | visual studio 2017 新功能介紹
Continuous Delivery Workshop with Ansible x GitLab CI (3rd)
Laradebut #5 - 關於 CRUD 外的一點小事
Angular.js & ASP.NET in Study4
2021 ee大会-旷视ai产品背后的研发效能工具建设
Asp.net mvc網站的從無到有
用 C# 與 .NET 也能打造機器學習模型:你所不知道的 ML.NET 初體驗
GNU Autoconf / Automake #4
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天

More from Will Huang (20)

PPTX
深入理解 CVE-2022-24765 漏洞的攻擊與防護策略 (Git v2.35.2)
PPTX
ASP.NET Core 6.0 全新功能探索
PPTX
進擊的前端工程師:今天就用 JSON Server 自己打造 API 吧!
PPTX
你一定不能不知道的 Markdown 寫作技巧
PPTX
使用 .NET 5 實現美股期貨的量化交易策略 (.NET Conf 2020)
PPTX
實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)
PPTX
Micro-frontends with Angular 10 (Modern Web 2020)
PPTX
從實戰經驗看到的 K8S 導入痛點
PPTX
RxJS 6 新手入門
PPTX
你不可不知的 ASP.NET Core 3 全新功能探索 (.NET Conf 2019)
PPTX
Protractor: The Hacker way (NG-MY 2019)
PPTX
邁向 Windows Server 應用程式現代化 (Windows Server Application Modernization)
PPTX
Angular 开发技巧 (2018 ngChina 开发者大会)
PPTX
Angular 7 全新功能探索 (Angular Taiwan 2018)
PPTX
利用.NET Core 與 Azure Kubernetes Service (AKS) 建立高彈性 Microservices (Azure TechDay)
PPTX
AKS 與開發人員體驗 (Kubernetes 大講堂)
PPTX
使用 ASP.NET Blazor 開發 SPA 網頁應用程式 (.NET Conf 2018)
PPTX
全新 Windows Server 2019 容器技術 及邁向與 Kubernetes 整合之路 (Windows Server 高峰會)
PPTX
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
PPTX
以敏捷架構打造美國軟體外包專案的經驗談
深入理解 CVE-2022-24765 漏洞的攻擊與防護策略 (Git v2.35.2)
ASP.NET Core 6.0 全新功能探索
進擊的前端工程師:今天就用 JSON Server 自己打造 API 吧!
你一定不能不知道的 Markdown 寫作技巧
使用 .NET 5 實現美股期貨的量化交易策略 (.NET Conf 2020)
實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)
Micro-frontends with Angular 10 (Modern Web 2020)
從實戰經驗看到的 K8S 導入痛點
RxJS 6 新手入門
你不可不知的 ASP.NET Core 3 全新功能探索 (.NET Conf 2019)
Protractor: The Hacker way (NG-MY 2019)
邁向 Windows Server 應用程式現代化 (Windows Server Application Modernization)
Angular 开发技巧 (2018 ngChina 开发者大会)
Angular 7 全新功能探索 (Angular Taiwan 2018)
利用.NET Core 與 Azure Kubernetes Service (AKS) 建立高彈性 Microservices (Azure TechDay)
AKS 與開發人員體驗 (Kubernetes 大講堂)
使用 ASP.NET Blazor 開發 SPA 網頁應用程式 (.NET Conf 2018)
全新 Windows Server 2019 容器技術 及邁向與 Kubernetes 整合之路 (Windows Server 高峰會)
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
以敏捷架構打造美國軟體外包專案的經驗談

保哥線上講堂:利用 StyleCop 撰寫一致的 C# 程式碼風格

  • 1. 1 保哥線上講堂 (1) 多奇數位創意有限公司 技術總監 黃保翕 ( Will 保哥 ) 部落格:http://blog.miniasp.com/ 利用 StyleCop 撰寫一致的 C# 程式碼風格
  • 2. All services from your imperative. 2 什麼是 STYLECOP What is StyleCop
  • 3. All services from your imperative. 3 什麼是 StyleCop?  主要用途  檢查 C# 程式碼撰寫風格符合標準規範  StyleCop 本身建議的撰寫風格  Microsoft's .NET Framework Design Guidelines  注意事項  不支援 VB.NET 或其他語言  早期由微軟開發,April 2010 已開放原始碼  官方網站  http://www.stylecop.com/  https://twitter.com/stylecopdev
  • 4. All services from your imperative. 4 StyleCop 相容性  支援 Visual Studio 版本  Visual Studio 2008  Visual Studio 2010  支援 JetBrains ReSharper (R#)  R# 5.1.3 ( 5.1.3000.12)  R# 6.0 (6.0.2202.688)  R# 6.1 (6.1.37.86)  R# 6.1.1 (6.1.1000.82)  Visual Studio 2012  Visual Studio 2013  R# 7.0.1 (7.0.1098.2760)  R# 7.1.3 (7.1.3000.2254)  R# 8.2 (8.2.0.2160)
  • 5. All services from your imperative. 5 StyleCop 主要分析規則  區分七大類,共 165 條規則  Documentation (SA1600-) 有 51 條規則  Layout (SA1500-) 有 19 條規則  Maintainability (SA1400-) 有 13 條規則  Naming (SA1300-) 有 12 條規則  Ordering (SA1200-) 有 16 條規則  Readability (SA1100-) 有 26 條規則  Spacing (SA1000-) 有 28 條規則
  • 6. All services from your imperative. 6 DEMO 示範 StyleCop 基本安裝與操作
  • 7. All services from your imperative. 7 了解 STYLECOP 的規則如何定義 Settings.StyleCop
  • 8. All services from your imperative. 8 幾種定義套用規則的方法  手動編輯 *.StyleCop 檔案  滑鼠雙擊 *.StyleCop 檔案  透過內建的 StyleCopSettingsEditor.exe 工具  StyleCopSettingsEditor.exe Settings.StyleCop  在特定類別、方法或參數跳過規則檢查  http://www.stylecop.com/docs/Suppressions.html
  • 9. All services from your imperative. 9 DEMO 示範 StyleCop 如何定義要套用的規則
  • 10. All services from your imperative. 10 如何跟 MSBUILD 組建流程整合 PM> Install-Package StyleCop.MSBuild
  • 11. All services from your imperative. 11 安裝 NuGet 套件:StyleCop.MSBuild  NuGet Package  http://www.nuget.org/packages/StyleCop.MSBuild  PM> Install-Package StyleCop.MSBuild  stylecop-msbuild (Bitbucket)  https://bitbucket.org/adamralph/stylecop-msbuild  將 StyleCop 檢查失敗視為「錯誤」  用 Notepad 開啟專案檔 ( *.csproj )  在 <PropertyGroup> 加上以下 MSBuild 屬性設定 <StyleCopTreatErrorsAsWarnings>false</StyleCopTreatErrorsAsWarnings>
  • 12. All services from your imperative. 12 DEMO 示範 StyleCop 如何跟 MSBuild 組建流程整合
  • 13. All services from your imperative. 13 了解 STYLECOP 在實務上如何應用 StyleCop in Action
  • 14. All services from your imperative. 14 StyleCop 使用經驗分享  找尋一個可靠的 Settings.StyleCop 定義檔  https://aspnetwebstack.codeplex.com/SourceControl/latest  透過一個既有的專案調校定義檔  選擇哪些是你不要的規則定義!  放置 Settings.StyleCop 在適當的地方  方案根目錄  專案根目錄  中文化 StyleCop 規則  翻譯的過程中了解每條規則的意義  整合 CI 建置流程 ( TFS / MSBuild )
  • 15. All services from your imperative. 15 總結 Summary
  • 16. All services from your imperative. 16 總結  StyleCop 是個必備工具  每個開發團隊都應該要有一份自己的規則集  適當的套用在開發流程與版控流程上 ( CI )  在公司內部分享 StyleCop 使用經驗
  • 17. All services from your imperative. 17 StyleCop 相關資源  StyleCop 官網  http://www.stylecop.com/  StyleCop 4.7 線上文件 http://www.stylecop.com/docs/  StyleCop - Wikipedia, the free encyclopedia http://en.wikipedia.org/wiki/StyleCop  StyleCop CLI http://sourceforge.net/projects/stylecopcli/  StyleCop 的命令列工具版本  StyleCopCLI.exe -?
  • 18. All services from your imperative. 18 聯絡資訊  The Will Will Web 記載著 Will 在網路世界的學習心得與技術分享  http://blog.miniasp.com/  Will 保哥的技術交流中心 (臉書粉絲專頁)  http://www.facebook.com/will.fans  ★ ★ ★ Will 保哥的噗浪 ★ ★ ★  http://www.plurk.com/willh/invite
  • 19. All services from your imperative. 19 感謝各位