代碼審查是檢測缺陷的最古老,最可靠的方法之一。它基於在人類活動的許多其他領域中使用的簡單思想。如果有幾個人解決和討論問題,他們將能夠提供最佳解決方案並避免很多錯誤。當一個人獨自工作時,他甚至可能沒有意識到自己犯了一個明顯的錯誤或以非最佳方式實施了某些事情防止数据泄漏(data leakage prevention)。
審查包括共同仔細閱讀源代碼並提出改進建議。在閱讀代碼時,會發現將來可能會出錯的錯誤或代碼部分。人們還認為,代碼作者在審閱過程中不應對程序的這一部分或該部分的工作方式進行解釋。應該從程序文本和注釋中直接了解工作算法。如果不滿足此條件,則應最終確定代碼。
通常,代碼複查效果很好,因為程序員注意到別人代碼中的錯誤要容易得多。代碼審查還具有培訓內容。討論的參與者將學習新的編程技術,新的模式,並學習如何編寫精美的代碼。您可以在Steve McConnell的出色著作“ Perfect Code”(Steve McConnell,“ Code Complete”)[1]中了解有關代碼審查技術的更多信息。您也可以推薦Wikipedia上的文章:代碼審查 [2]网络事件响应(cyber incident response)。
協作代碼審查方法的唯一但重要的缺點是使用代碼的成本。有必要定期召集幾個程序員來審查新代碼或在提出建議後重新審查代碼。這會分散程序員的工作量,並要求他們調入新工作。在這種情況下,程序員應該定期休息一下以放松身心。如果您嘗試一次查看大量的代碼片段,那么您的注意力將很快變得乏味,而查看代碼的好處也會迅速減少。結果,在代碼審查上花費了大量的工時。
降低代碼分析成本的權衡之一是使用專用軟件工具。這些工具執行靜態代碼分析,並建議程序員將注意力轉向某些代碼段。由於靜態代碼分析程序沒有人工智能,因此它們執行的分析比程序員更糟。但是這些程序運行很快,不會感到疲勞,可以定期使用。其中一種程序就是我們正在開發的PVS-Studio靜態代碼分析器。特別有用的增量分析模式可能是,它將在編譯修改後的文件後自動啟動。結果,可以在早期檢測到許多錯誤和錯別字。