在上篇介紹了如何透過使用Code Analysis來達到程式碼品質的分析。
在這一篇將會從另外一個層面介紹使用靜態程式碼分析來達到程式碼風格的一致性 - Stylecop。
sample 程式在 github devops-psake sample/chapter20
同步發表於我的部落格:http://blog.alantsai.net/2017/01/devopsSeries-stylecop.html (部落格的格式會漂亮一些)
Stylecop才是比較符合俗稱的程式碼靜態分析工具。概念和Code Analysis一樣,差別在於Stylecop是分析程式碼的風格,而Code Analysis則是分析程式碼的邏輯或寫法是否有問題。
風格可能有點抽象,舉個簡單的例子就很容易理解,例如說兩個statement之間只能空一行,如果沒空就會報錯,或者是每一個方法都要寫註解,沒有就報錯。
這些可能感覺很無聊,但是實際上非常重要,因為當開發者是多人的時候,大家習慣不同,很容易整個程式碼看起來很亂。
Stylecop分兩個部分:設定規則和執行分析。
stylecop的設定檔預設使用.stylecop作為付檔名。通常檔案名稱為setting.stylecop
可以下載設定檔編輯程式比較容易作調整 - 基本上打開就會有一個畫面能夠勾選要執行那些規則。
設定檔放在solution下,就會在執行stylecop的時候自動被引用。
有些規則其實不太符合習慣,所以也不是所有規則都要啟用,可以找一些常見的專案然後看他們都設定些什麼做參考。舉例來說,在Mvc專案的source code就可以看到啟用了那些規則: Mvc最新程式碼
執行方式有兩種:
在建制的時候執行
基本上,對於需要掃瞄stylecop的程式安裝套件StyleCop.MSBuild即可。
然後在build的時候,在Warning那邊就會看到不符合規則訊息。
同Code Analysis一樣,執行這種分析所花的時間也可能非常的久,因此這種類型的分析也最好是放在build server的時候執行。
如果要把stylecop整合到build script,需要做幾件事情:
這個要調整有要執行stylecop的專案csproj檔案 - 以這個例子是Webapplication1.csproj。
用notepad打開,然後加上:
<propertygroup>
<stylecopenabled>false</stylecopenabled>
</propertygroup>
build script加入兩個參數:
task Compile -depends Clean, Init -description "編譯程式碼" `
-requiredVariables solutionFile, buildConfiguration, buildTarget, buildTempDirectory `
{
Write-Host "開始建制檔案:$solutionFile"
$buildParam = "Configuration=$buildConfiguration" +
";Platform=$buildTarget" +
";OutDir=$buildTempDirectory"
$buildParam = $buildParam + ";GenerateProjectSpecificOutputFolder=true"
$buildParam = $buildParam + ";RunCodeAnalysis=true;CodeAnalysisRuleSet=MinimumRecommendedRules.ruleset;CodeAnalysisTreatWarningsAsErrors=true"
$buildParam = $buildParam + ";StyleCopEnabled=true;StyleCopTreatErrorsAsWarnings=false"
exec {msbuild $solutionFile "/p:$buildParam"}
}
這篇粗略了介紹如何使用Stylecop並且如何整合到build流程的一部分。
通過,Test coverage的Opencover確保了測試程式碼的涵蓋率;透過Code Analysis分析程式碼上面是否有一些不好的邏輯寫法;透過StyleCop讓整個程式碼的風格一致化,這些都是保持程式碼的 品質在一定水準的方法。
品質過關之後,就要進入發佈上線的階段。
因此,在接下去將進入到另外一個階段,到底如何準備好發佈需要的東西。