軟件工程 實驗四 代碼評審
實驗四 代碼評審
一、實驗目的
1) 了解代碼審查的含義;
2) 掌握相關編程規范檢查工具的安裝與使用;
二、實驗內容及要求
Code Review中文應該譯作“代碼審查”或是“代碼評審”或“代碼復查”,是指通過閱讀代碼來檢查源代碼與編碼標準的符合性以及代碼質量的活動。Code Review主要用來在軟件工程過程中改進代碼質量,通過代碼評審可以達到如下目的:
●在項目早期就能夠發現代碼中的BUG
●幫助初級開發人員學習高級開發人員的經驗,達到知識共享
●避免開發人員犯一些很常見,很普通的錯誤
●保證項目組人員的良好溝通
●項目或產品的代碼更容易維護
代碼評審主要內容是編程規范,重構方法,架構設計,性能安全,日志,可讀性,擴展性等問題。通過代碼評審可查找和修復引入到開發階段的應用程序的錯誤,提高軟件的整體素質和開發者的技能。代碼評審的作用和意義已在很多技術團隊內達成共識,可是很多時候并未被有效執行,甚至被認為是一項費時費力的工作。借助一些工具可以更容易,更有效率地來進行Code Review。
1、以小組形式,針對前面“實驗一”中所完成的代碼,進行代碼評審(走查),重點檢查以下情況。你也可有查詢相關材料,建立更細化的檢查清單(check list)
- 程序是否能正常工作,代碼是否實現預期的功能,邏輯是否正確。
- 代碼是否遵循的編程規范
- 代碼是否盡可能的模塊化
- 所有的數據輸入是否都進行了檢查
- 是否有注釋,并且描述了代碼的意圖
- 代碼的可理解性和可測試性
2、按“實驗二”的分組方式,兩人一組,隨機分配另一組的代碼作為本組評審和分析的對象
一些編碼規范的檢查工具如下,也可自行查找工具使用。
ava語言
- 采用使用eclipse Checkstyle插件
- CheckStyle是SourceForge下的一個項目,提供了一個幫助JAVA開發人員遵守某些編碼規范的工具。它能夠自動化代碼規范檢查過程,從而使得開發人員從這項重要但枯燥的任務中解脫出來。它可以根據設置好的編碼規則來檢查代碼。比如符合規范的變量命名,方法體的最大行數,重復代碼檢查等等。
如果你使用idea ,可以使用Alibaba Java Code Guidelines插件,參考鏈接如下:https://github.com/alibaba/p3c/wiki/IDEA%E6%8F%92%E4%BB%B6%E4%BD%BF%E7%94%A8%E6%96%87%E6%A1%A3
C++語言
- 可使用Google代碼規范工具Cpplint。
- Cpplint是一個python腳本,Google使用它作為自己的C++代碼規范檢查工具,VSCcode可配置Cpplint對C++代碼進行規范檢查。
python
- 可采用pylint
- Pylint 是一個 Python 代碼分析工具,它分析 Python 代碼中的錯誤,查找不符合代碼風格標準(Pylint 默認使用的代碼風格是 PEP 8,具體信息,請參閱參考資料)和有潛在問題的代碼。目前在 eclipse 的 pydev 插件中也集成了 Pylint,VSCcode可安裝pylint插件
當發現了項目存在的問題后,可通過Bug跟蹤系統向項目維護者反饋問題(issue),管理Issue的系統稱為BTS(Bug Tracking System,Bug跟蹤系統)。當今具有代表性的BTS有Redmine、Trac、BugZilla等。GitHub自身也加入了BTS的功能。在GitHub上,可以將它作為軟件開發者之間的交流工具。通過github的issues功能開發者可以便捷的發現軟件的BUG并報告,想向項目所有人詢問或用來追蹤各種想法探討準備實施的任務
三、實驗過程
(1)配置代碼審查工具。要求采用屏幕截圖的方式配置的過程;
1.確定所需要的代碼審工具:
在GitHub中先clone我需要進行審查的項目。根據克隆的項目,發現該工程使用的是JAVA語言,所以對應我選擇使用eclipse Checkstyle插件 。通過相關資料查詢我發現可以直接通過eclipse中進行在線下載。
打開Eclipse,選擇Help-->Eclipse Maketplace,進入搜索界面,如圖:

在搜索框輸入checkstyle,如圖所示,點擊安裝即可

安裝成功后,選中工程,右鍵可以看見:checkstyle。 點擊Check Code with Checkstyle 可以進行代碼審查。
(2)使用工具對原始代碼進行評審和分析,記錄結果,期間不要有任何修改;
1.首先在導入項目過程中該組的項目讓我很疑惑,我無論怎么導入該組項目都不成功,導入不進去。我用eclipse中git功能
直接在GitHub上面clone下來也無法導入。

在詢問同學后的確能將項目導入,我試了也能成功運行,但是無法采用checkstyle進行分析,因為點擊分析的按鈕后沒有任何反應


沒有辦法只能新建一個項目,手動將該組項目拖入eclipse中,然后發現如圖所示:


包的名字與程序中的不符,我不知道是自己操作失誤還是什么情況,為了能進行代碼審查,我只能修改了包的名字,才能
使實驗進行下去。
分析成功:

對于該組代碼的理解因為我發現與我采用的方法并不一致,而且缺少注釋,甚至沒有。盡管我將注釋的編碼從GKB改為UTF-8
還是有亂碼的現象,導致我更難看懂每一部分是用來干什么的,所以在這里就不談我對該組項目的理解了。
(3)對工具執行結果進行人工分析,結合檢查清單和人工走查的出代碼修改建議;
使用checkstyle進行分析后結果如下:



人工分析:
1.從上述檢查清單中可以發現,審查出現大量的空格和縮進不正確的問題。
2.參考Ckeckstyle常見報錯的問題,相比較而言此代碼出現的問題還不是很多,而且很多都不在常見問題之中。很多都是小問題,比如符號之間留有空格等。
修改意見:
1.'=' '<'等前面沒有空格,’}‘等后面沒有空格;
2.對注釋和代碼要有正確的縮進;
3.注意大括號的使用。在大括號與其他符號相鄰時,中間要留有空格;for' 和';'結構必須使用大括號 '{}';
4.對自定義的變量,添加對應的javadoc注釋;
(4)通過github issues向項目維護者提交問題(issue),注意一個issue 只報告一個問題,多個問題需放在多個issue中,以便跟蹤。





(5)記錄總結實驗過程中遇到的問題和解決過程
實驗中的問題在實驗過程中基本都提到了
1.將其他組項目導入時遇到的問題,通過網上查詢的方法無法導入。在詢問同學的幫助下,成功的將項目導入了,但是不知道為什么項目無法被分析。
所以為了使實驗進行下去,我只能新建項目,手動的將其導入,中間也出現了錯誤,只好將其修改。
2.部分注釋出現亂碼的現象,將ecplise中GKB編碼改為UTF-8。
四、實驗小結
1.通過本次此實驗,我了解了代碼審查工具的使用方法及功能,在eclipse中正確安裝了Checkstyle工具,完成了對代碼的審查與分析。
2.在利用CheckStyle對Java代碼審查,并匯總了錯誤后,我在其中也對編碼規范有了更多的了解。雖然本次實驗中出現的錯誤類型并不是很多,但在總結錯誤類型中查閱了相關資料了解到checkstyle常見報錯的問題及解決。這次實驗給我留下了很深的印象因為我注意到了平時不認為是錯誤的地方也有代碼規范問題。
3.我自身的代碼方面肯定還存在相關問題,在此次學習中,希望能在日后的編碼中修改,逐漸規范起來。

浙公網安備 33010602011771號