代碼質量缺陷審計產品(CodePrism,簡稱CP),通過代碼靜態分析技術實現對源代碼的質量缺陷掃描審計功能。主要提供:源代碼高質量編程規范知識庫、代碼質量缺陷自動掃描、生成代碼質量缺陷審計報告。CP產品主要為開發團隊、開發質量管理團隊、項目經理、開發工程師等提供代碼的自動化質量缺陷審計功能。是開發團隊提高代碼質量,提高系統穩定運行的必備源代碼分析工具。CP產品內置幾千種專門的質量規范,集成了國內外航空、金融、汽車、大型企業、互聯網等行業高質量編程的最佳實踐規范。同時也納入了CWE、OWASP、CERT等國際安全編碼組織發布的代碼質量規范。
CP內置豐富的高質量百年城規范,可對Java、JSP、ProC、C、C++ 、Object-C、JavaScript、ASP、VisualBasic、PHP、Android-Java、PL-SQL、C#等20多種語言進行質量缺陷分析。質量規則的定義及掃描引擎均與安全規則有所不同,CP內置質量規范常規按以下方式進行分類,也可由用戶自定義分類。
運行時錯誤
可能發生潛在的運行時錯誤的相關規則。此類規則中重點偏向于代碼在開發中產生的語法生成錯誤,語法使用錯誤等,以及在編寫代碼的時候所產生的一系列錯誤。
例如:禁止使用可變參數,不要對比NULL對象等。
死代碼
在程序中的無意義的代碼,未引用參數、函數等。
死代碼可能在維護中造成混亂,漏洞修復時也可能出現異常。
性能
對系統執行性能產生影響的代碼。應在在滿足正確性、可靠性、健壯性、可讀性等質量因素的前提下,設法提高程序的效率。
例如:禁止在For語句的條件上調用函數,在while語句不要使用sleep()方法等。
資源流失
DB,File 等各種資源釋放相關規則。找到未及時釋放資源的可疑代碼,防止由代碼編寫不當引起的資源流失。
例如:檢查是否釋放file資源,檢查DB資源的釋放。
PMD
語言特有的質量規則。
例如:實現克隆、程序耦合度、 日志處理、 異常處理等等。
硬編碼
硬編碼IP地址、密碼等,可能引發嚴重的安全和質量問題。
硬編碼不僅向開發團隊內的組員暴露重要信息,而且一旦提交程序后只能通過補丁才能彌補硬編碼帶來的信息泄露。
結構化
影響性能、可讀性、可移植性、可維護性的代碼。
給出代碼結構性質量建議。
例如:FOR/WHILE循環語句中禁止使用EXIT/RETURN、存儲過程禁止使用RETURN語句。
Default
CERT規則(計算機安全應急響應組(Computer Emergency Response Team)發布的規則。
直接引用的CWE常見的質量規則。
· 增量掃描
對一套代碼多次變更的情況,實現增量掃描,大大縮短掃描分析時間。
· 可對接版本管理服務器
可直接對接大多數版本管理服務器,如SVN、CVS、GIT、FireFly等。在權限管理下,自動獲取源代碼。
· 內置報表工具
內置可自定義的報表工具,用戶可以在不編寫代碼的情況下,定義自己所需的各類圖表報告等。
· 無需安裝編譯環境
對任何語言進行分析時,無需專門安裝編譯環境。
· 自動調度分析任務
內置任務調度機制,允許用戶根據情況設定代碼分析任務的啟動時間、結束時間、分析周期等。如:每周四23點開始分析。
· 多線程設計
支持多線程管理,可根據服務器硬件資源,由用戶自己設定多任務并行分析模式,提高分析效率。
· 提供API接口,可以與DevOps流程集成
……