代碼檢查
代碼檢查是通過桌面檢查、走查方式和代碼審查進行的檢查:
包括:
檢查代碼和設計是否一緻;
代碼是否對遵循标準、是否可讀;
代碼邏輯表達是否正确;
代碼結構是否合理;
程式編寫與編寫标準是否符合;
程式中是否有不安全、不明确和模糊的部分;
程式設計風格是否符合要求。
檢查變量的交叉引用表:是否有未說明的變量和違反了類型規定的變量。
檢查标号的交叉引用表:驗證所有标号是否有正确。
檢查子程式、宏、函數:驗證每次調用與所調用位置是否正确,調用的子程式、宏、函數是否存在,參數是否一緻。
檢查全部等價變量的類型的一緻性。
确認常量的取值和數制、資料類型。
選擇、激活路徑:在設計控制流圖中選擇某條路徑,到實際的程式中激活這條路徑,如果不能激活,則程式可能有錯。
對照程式的規格說明,詳細閱讀源代碼,比較實際的代碼,從差異中發現程式的問題和錯誤。
2. 代碼檢查方式
桌面檢查
對源程式代碼進行分析、檢驗,根據相關的文檔,檢驗程式中是否有錯誤的過程。
3. 靜态結構分析
可以檢查函數的調用關系是否正确;
是否存在孤立的函數而沒有被調用;
編碼的規範性;
資源是否釋放;
資料結構是否完整和正确;
是否有死代碼和死循環;
代碼本身是否存在明顯的效率和性能問題;
代碼本身方法,類和函數的劃分是否清晰,易了解;
代碼本身是否健壯,是否有完善的異常處理和錯誤處理。
4. 走讀
走讀可由開發人員和測試人員互相走讀代碼。走讀代碼主要有文檔和源程式代碼、檢查項目、檢查功能、檢查界面、檢查流程、檢查提示資訊、函數檢查、資料類型與變量檢查、條件判斷檢查、循環檢查、輸入輸出檢查、注釋檢查、程式(子產品)檢查、資料庫檢查 14大點内容。
要求有文檔和源程式代碼
● 一份最新的設計文檔;
● 程式結構圖;
● 所有的子產品源程式代碼;
● 代碼體系結構描述;
● 目錄檔案;
● 代碼組織。
檢查功能
● 重複的功能 ;
● 多餘的功能 ;
● 功能實作與設計要求不相符 ;
● 功能使用性、友善性、易用性。
檢查界面
● 界面美觀 ;
● 控件排列、格式;
● 焦點控制合理或全面性。
檢查流程
● 流程控制不符和要求 ;
● 流程實作不完整。
檢查提示資訊
● 提示資訊重複或出現時機合理性;
● 提示資訊格式和要求的合理性 ;
● 提示框傳回後停留位置的合理性。
函數檢查
● 函數頭清楚地描述函數和它的功能 ;
● 代碼中有相關注解;
● 函數名清晰的定義了它的目标以及函數的功能;
● 函數隻做一件事情;
● 函數的參數都被使用;
● 函數的參數接口關系清晰;
● 函數出口都有傳回值;
● 函數異常處理清楚。
資料類型與變量檢查
● 資料有效性檢測不合理 ;
● 資料來源正确性;
● 資料處理過程正确性;
● 資料處理結果不正确性;
● 資料類型解釋;
● 變量配置設定了正确的長度、類型和存儲空間;
● 靜态變量明确區分;
● 變量初始化;
● 變量的命名不與标準庫中的命名相沖突;
● 全局變量描述;
● 類型轉換。
條件判斷檢查
● If/else 使用正确;
● 無嵌套的if鍊
● 數字,字元,指針和0/NULL/FLSE 判斷明确 ;
● 不要有臃腫的判斷邏輯;
● 所有的判斷條件邊界是否正确;
● 判斷體足夠短。
循環檢查
● 循環體不為空;
● 循環之前做好初始化代碼;
● 有明确的多次循環操作,使用For循環 ;
● 不明确的多次循環操作,使用while循環;
● 循環終止的條件清晰;
● 所有的循環邊界是否正确;
● 循環體内的循環變量起到訓示作用。
輸入輸出檢查
● 所有檔案的屬性描述清楚;
● 輸入參數的異常是否處理了;
● 檔案結束的條件進行檢查。
注釋檢查
● 有一個簡單的說明,用于描述代碼的結構;
● 每個檔案和子產品均以給予解釋;
● 解釋說明代碼功能,準确描述代碼意義;
● 解釋不過于簡單 ;
● 注解清楚正确 ;
● 代碼的注釋與代碼是否一緻?注釋是否是多餘的。
程式(子產品)檢查
● 程式中所有的異常是否處理了?;
● 程式中是否存在重複的代碼?
● 程式結構是否清晰。
資料庫檢查
● 資料庫命名使用小寫英語字母, 數字和下劃線,無其他字元 ;
● 資料庫命名采用項目名或産品名稱命名 ,長度小于20位 ;
● 資料庫中的所有表字元集統一 ;
● 資料庫對象的命名不使用保留關鍵字;
● 資料庫設計考慮到将來可能存在的異種資料庫遷移 ;
● 字段與畫面項目能夠一一對應(部分辨別符字段和系統設定字段除外);
● 索引是多值字段 ;
● 索引是單一字段 ;
● 字段取值符合域定義 ;
● 字段的類型和長度能夠滿足字段的值的最大限量 ;
● 文本字段有充足的餘量對應可能的長度變更 ;
● 數字字段考慮了充足的餘量和精度對應可能的長度或精度變更 ;
● 針對客戶的特定應用采用了視圖機制 。
表達式分析;
對表達式進行分析以發現和糾正在表達式中出現的錯誤如:在表達式中不正确的使用了括号造成錯誤、數組下标越界錯誤、除數為零、浮點數計算的誤差等。
接口分析
接口分析主要是對接口一緻性的分析如:各子產品之間接口一緻性;子產品與外部資料庫的接口一緻性;形參與實參在類型數量、順序、維數、使用上的一緻性;全局變量和公共資料區在使用上的一緻性。
函數調用關系圖
函數調用關系圖:通過應用程式各函數之間的調用關系展示了系統的結構。列出所有函數,用連線表示調用關系,作用:可以檢查函數的調用關系是否正确、是否存在孤立的函數而沒有被調用、明确函數被調用的頻繁度、對調用頻繁的函數可以重點檢查。
子產品控制流圖
子產品控制流圖由許多結點和連接配接結點的邊組成的圖形,其中每個結點代表一條或多條語句,邊表示控制流向,可以直覺地反映出一個函數的内部結構。
本文轉自阿龍哥 51CTO部落格,原文連結:http://blog.51cto.com/ililong/507637,如需轉載請自行聯系原作者