天天看點

代碼檢查

代碼檢查 

代碼檢查是通過桌面檢查、走查方式和代碼審查進行的檢查: 

包括: 

檢查代碼和設計是否一緻; 

代碼是否對遵循标準、是否可讀; 

代碼邏輯表達是否正确; 

代碼結構是否合理; 

程式編寫與編寫标準是否符合; 

程式中是否有不安全、不明确和模糊的部分; 

程式設計風格是否符合要求。 

檢查變量的交叉引用表:是否有未說明的變量和違反了類型規定的變量。 

檢查标号的交叉引用表:驗證所有标号是否有正确。 

檢查子程式、宏、函數:驗證每次調用與所調用位置是否正确,調用的子程式、宏、函數是否存在,參數是否一緻。 

檢查全部等價變量的類型的一緻性。 

确認常量的取值和數制、資料類型。 

選擇、激活路徑:在設計控制流圖中選擇某條路徑,到實際的程式中激活這條路徑,如果不能激活,則程式可能有錯。 

對照程式的規格說明,詳細閱讀源代碼,比較實際的代碼,從差異中發現程式的問題和錯誤。 

2. 代碼檢查方式 

桌面檢查 

對源程式代碼進行分析、檢驗,根據相關的文檔,檢驗程式中是否有錯誤的過程。 

3. 靜态結構分析 

可以檢查函數的調用關系是否正确; 

是否存在孤立的函數而沒有被調用; 

編碼的規範性; 

資源是否釋放; 

資料結構是否完整和正确; 

是否有死代碼和死循環; 

代碼本身是否存在明顯的效率和性能問題; 

代碼本身方法,類和函數的劃分是否清晰,易了解; 

代碼本身是否健壯,是否有完善的異常處理和錯誤處理。 

4. 走讀 

走讀可由開發人員和測試人員互相走讀代碼。走讀代碼主要有文檔和源程式代碼、檢查項目、檢查功能、檢查界面、檢查流程、檢查提示資訊、函數檢查、資料類型與變量檢查、條件判斷檢查、循環檢查、輸入輸出檢查、注釋檢查、程式(子產品)檢查、資料庫檢查 14大點内容。 

要求有文檔和源程式代碼 

● 一份最新的設計文檔;    

● 程式結構圖; 

● 所有的子產品源程式代碼; 

● 代碼體系結構描述; 

● 目錄檔案; 

● 代碼組織。 

檢查功能    

● 重複的功能 ; 

● 多餘的功能 ; 

● 功能實作與設計要求不相符 ; 

● 功能使用性、友善性、易用性。 

檢查界面    

● 界面美觀 ; 

● 控件排列、格式; 

● 焦點控制合理或全面性。 

檢查流程    

● 流程控制不符和要求 ; 

● 流程實作不完整。 

  檢查提示資訊    

● 提示資訊重複或出現時機合理性; 

● 提示資訊格式和要求的合理性 ; 

● 提示框傳回後停留位置的合理性。 

函數檢查        

● 函數頭清楚地描述函數和它的功能    ; 

● 代碼中有相關注解; 

● 函數名清晰的定義了它的目标以及函數的功能; 

● 函數隻做一件事情; 

● 函數的參數都被使用; 

● 函數的參數接口關系清晰; 

● 函數出口都有傳回值; 

● 函數異常處理清楚。    

資料類型與變量檢查 

● 資料有效性檢測不合理 ; 

● 資料來源正确性; 

● 資料處理過程正确性;    

● 資料處理結果不正确性; 

● 資料類型解釋;    

● 變量配置設定了正确的長度、類型和存儲空間; 

● 靜态變量明确區分; 

● 變量初始化; 

● 變量的命名不與标準庫中的命名相沖突;    

● 全局變量描述; 

● 類型轉換。 

條件判斷檢查 

● If/else 使用正确; 

● 無嵌套的if鍊 

● 數字,字元,指針和0/NULL/FLSE 判斷明确 ; 

● 不要有臃腫的判斷邏輯; 

● 所有的判斷條件邊界是否正确; 

● 判斷體足夠短。 

循環檢查 

● 循環體不為空; 

● 循環之前做好初始化代碼; 

● 有明确的多次循環操作,使用For循環 ; 

● 不明确的多次循環操作,使用while循環; 

● 循環終止的條件清晰; 

● 所有的循環邊界是否正确; 

● 循環體内的循環變量起到訓示作用。 

輸入輸出檢查 

● 所有檔案的屬性描述清楚; 

● 輸入參數的異常是否處理了; 

● 檔案結束的條件進行檢查。    

注釋檢查    

● 有一個簡單的說明,用于描述代碼的結構; 

● 每個檔案和子產品均以給予解釋; 

● 解釋說明代碼功能,準确描述代碼意義; 

● 解釋不過于簡單 ; 

● 注解清楚正确 ; 

● 代碼的注釋與代碼是否一緻?注釋是否是多餘的。 

程式(子產品)檢查 

● 程式中所有的異常是否處理了?; 

● 程式中是否存在重複的代碼? 

● 程式結構是否清晰。 

資料庫檢查 

● 資料庫命名使用小寫英語字母, 數字和下劃線,無其他字元 ; 

● 資料庫命名采用項目名或産品名稱命名 ,長度小于20位    ; 

● 資料庫中的所有表字元集統一    ; 

● 資料庫對象的命名不使用保留關鍵字; 

● 資料庫設計考慮到将來可能存在的異種資料庫遷移 ; 

● 字段與畫面項目能夠一一對應(部分辨別符字段和系統設定字段除外); 

● 索引是多值字段     ; 

● 索引是單一字段     ; 

● 字段取值符合域定義 ; 

● 字段的類型和長度能夠滿足字段的值的最大限量     ; 

● 文本字段有充足的餘量對應可能的長度變更     ; 

● 數字字段考慮了充足的餘量和精度對應可能的長度或精度變更    ; 

● 針對客戶的特定應用采用了視圖機制 。 

表達式分析; 

對表達式進行分析以發現和糾正在表達式中出現的錯誤如:在表達式中不正确的使用了括号造成錯誤、數組下标越界錯誤、除數為零、浮點數計算的誤差等。 

接口分析 

接口分析主要是對接口一緻性的分析如:各子產品之間接口一緻性;子產品與外部資料庫的接口一緻性;形參與實參在類型數量、順序、維數、使用上的一緻性;全局變量和公共資料區在使用上的一緻性。 

函數調用關系圖 

函數調用關系圖:通過應用程式各函數之間的調用關系展示了系統的結構。列出所有函數,用連線表示調用關系,作用:可以檢查函數的調用關系是否正确、是否存在孤立的函數而沒有被調用、明确函數被調用的頻繁度、對調用頻繁的函數可以重點檢查。 

子產品控制流圖 

子產品控制流圖由許多結點和連接配接結點的邊組成的圖形,其中每個結點代表一條或多條語句,邊表示控制流向,可以直覺地反映出一個函數的内部結構。 

     本文轉自阿龍哥 51CTO部落格,原文連結:http://blog.51cto.com/ililong/507637,如需轉載請自行聯系原作者