代碼檢查可以采用不同的形式。有些企業(yè)使用正式的同級評審(peer review),在該評審過(guò)程中,開(kāi)發(fā)人員要為代碼提供同級評價(jià),并提供改進(jìn)意見(jiàn);其他一些企業(yè)使用結對編程;還有一些人則考慮使用高級設計決策和推薦的代碼改進(jìn)。有些團隊會(huì )在將代碼提交到版本控制存儲庫之前,讓其他開(kāi)發(fā)人員用 “桌面檢查” 的形式審查他們的代碼。
不論企業(yè)采用哪種方式進(jìn)行代碼檢查,有一件事是肯定的:它們幾乎都是手工過(guò)程。正如我多年所觀(guān)察到的,手工過(guò)程很容易出錯,如果工作緊張,就會(huì )忘記自己正在做什么。但是,軟件檢查不必總是手工完成;實(shí)際上,有一大堆開(kāi)源工具和商業(yè)工具(我稱(chēng)之為軟件檢查器),可以用它們很方便地對代碼進(jìn)行靜態(tài)分析(這些工具也稱(chēng)為靜態(tài)分析工具)。
使用軟件檢查器,代碼檢查可以通過(guò) Ant 或 Maven 這樣的構建工具來(lái)自動(dòng)完成。通過(guò)使用這種自動(dòng)化,一些低級的源代碼細節(如編碼標準、復雜性和重復程度等)的處理成為了機器的職責。這種職責轉移通過(guò)將重點(diǎn)轉向更高級的開(kāi)發(fā)方面(比如設計和長(cháng)期維護問(wèn)題)提高了人們手工檢查的效率。
![]() |
|
軟件檢查器有很多,范圍從復雜的商業(yè)工具到簡(jiǎn)單的開(kāi)源替代工具。但是,我發(fā)現其中三個(gè)特別有用,它們是 CheckStyle、CPD 和 JavaNCSS (請參閱 參考資料):
- CheckStyle 報告與項目預定的編碼標準的偏離度。
- CPD 報告代碼重復。
- JavaNCSS 可以幫助團隊專(zhuān)注于更高級的代碼復雜性領(lǐng)域。
![]() |
|
我參與了幾家公司的委員會(huì ),花了很多時(shí)間來(lái)定義編碼標準。有一次,我們定義了幾乎沒(méi)人 遵守的 25 頁(yè)的編碼標準文檔。結果,我們的代碼審查非常痛苦,因為團隊要花時(shí)間來(lái)挑錯,看看開(kāi)發(fā)人員是否使用了兩個(gè)空格規則(與四個(gè)空格規則相對),以及是否將參數聲明為 final
。如果把這些低級檢查工作交給軟件檢查器,我們會(huì )節省許多寶貴的時(shí)間。
使用自動(dòng)的源代碼檢查工具(如 CheckStyle)可以提供執行可配置規則集的簡(jiǎn)單途徑,規則集可以根據項目的編碼標準而定。此外,可以通過(guò) CheckStyle 插件在 IDE 中運行 CheckStyle,CheckStyle 通過(guò)它的 Ant 任務(wù)或 Maven 插件直接集成到構建腳本中。CheckStyle 發(fā)現的所有規則偏離都會(huì )以報告的形式顯示,清楚地指出哪一個(gè)文件違規。除此之外,還可以將 Ant 和 Maven 配置成與 CheckStyle 相呼應,這樣,在違反規則時(shí),構建工作就會(huì )失敗。
例如,清單 1 演示了 Ant 構建腳本的一個(gè)代碼段,它運行 CheckStyle 生成 HTML 報告。請注意 failOnViolation
屬性,在這里它被設為 false
。如果將該屬性設為 true
,則在發(fā)現任何 源代碼違規時(shí),構建都會(huì )失敗。
文章來(lái)源于領(lǐng)測軟件測試網(wǎng) http://kjueaiud.com/