代碼檢查

代碼檢查

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

包括:

★ 檢查代碼和設計是否一致;

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

★ 代碼邏輯表達是否正確;

★ 代碼結構是否合理;

★ 程序編寫與編寫標準是否符合;

★ 程序中是否有不安全、不明確和模糊的部分;

★ 編程風格是否符合要求。

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

★ 檢查標號的交叉引用表:驗證全部標號是否有正確。

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

★ 檢查所有等價變量的類型的一致性。

★ 確認常量的取值和數制、數據類型。

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

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

        

2. 代碼檢查方式

桌面檢查

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

    

3. 靜態結構分析

★ 能夠檢查函數的調用關係是否正確;

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

★ 編碼的規範性;

★ 資源是否釋放;

★ 數據結構是否完整和正確;

★ 是否有死代碼和死循環;

★ 代碼自己是否存在明顯的效率和性能問題;

★ 代碼自己方法,類和函數的劃分是否清晰,易理解;

★ 代碼自己是否健壯,是否有完善的異常處理和錯誤處理。

    

4. 走讀

走讀可由開發人員和測試人員相互走讀代碼。走讀代碼主要有文檔和源程序代碼、檢查項目、檢查功能、檢查界面、檢查流程、檢查提示信息、函數檢查、數據類型與變量檢查、條件判斷檢查、循環檢查、輸入輸出檢查、註釋檢查、程序(模塊)檢查、數據庫檢查 14大點內容。

    

★ 要求有文檔和源程序代碼

● 一份最新的設計文檔;    

● 程序結構圖;

● 全部的模塊源程序代碼;

● 代碼體系結構描述;

● 目錄文件;

● 代碼組織。

★ 檢查功能    

● 重複的功能 ;

● 多餘的功能 ;

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

● 功能使用性、方便性、易用性。

★ 檢查界面    

● 界面美觀 ;

● 控件排列、格式;

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

★ 檢查流程    

● 流程控制不符和要求 ;

● 流程實現不完整。

★ 檢查提示信息    

● 提示信息重複或出現時機合理性;

● 提示信息格式和要求的合理性 ;

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

★ 函數檢查        

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

● 代碼中有相關注解;

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

● 函數只作一件事情;

● 函數的參數都被使用;

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

● 函數出口都有返回值;

● 函數異常處理清楚。    

★ 數據類型與變量檢查

● 數據有效性檢測不合理 ;

● 數據來源正確性;

● 數據處理過程正確性;    

● 數據處理結果不正確性;

● 數據類型解釋;    

● 變量分配了正確的長度、類型和存儲空間;

● 靜態變量明確區分;

● 變量初始化;

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

● 全局變量描述;

● 類型轉換。

★ 條件判斷檢查

● If/ else 使用正確;

● 無嵌套的 if

● 數字,字符,指針和0/NULL/FLSE 判斷明確 ;

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

● 全部的判斷條件邊界是否正確;

● 判斷體足夠短。

★ 循環檢查

● 循環體不爲空;

● 循環以前作好初始化代碼;

● 有明確的屢次循環操做,使用For循環 ;

● 不明確的屢次循環操做,使用 while循環;

● 循環終止的條件清晰;

● 全部的循環邊界是否正確;

● 循環體內的循環變量起到指示做用。

★ 輸入輸出檢查

● 全部文件的屬性描述清楚;

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

● 文件結束的條件進行檢查。    

★ 註釋檢查    

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

● 每一個文件和模塊均以給予解釋;

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

● 解釋不過於簡單 ;

● 註解清楚正確 ;

● 代碼的註釋與代碼是否一致?註釋是不是多餘的。

★ 程序(模塊)檢查

● 程序中全部的異常是否處理了?;

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

● 程序結構是否清晰。

★ 數據庫檢查

● 數據庫命名使用小寫英語字母, 數字和下劃線,無其餘字符 ;

● 數據庫命名採用項目名或產品名稱命名 ,長度小於20位    ;

● 數據庫中的全部表字符集統一    ;

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

● 數據庫設計考慮到未來可能存在的異種數據庫遷移 ;

● 字段與畫面項目可以一一對應(部分標識符字段和系統設定字段除外);

● 索引是多值字段     ;

● 索引是單一字段     ;

● 字段取值符合域定義 ;

● 字段的類型和長度可以知足字段的值的最大限量     ;

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

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

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

★ 表達式分析;

對錶達式進行分析以發現和糾正在表達式中出現的錯誤如:在表達式中不正確的使用了括號形成錯誤、數組下標越界錯誤、除數爲零、浮點數計算的偏差等。

★ 接口分析

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

★ 函數調用關係圖

函數調用關係圖:經過應用程序各函數之間的調用關係展現了系統的結構。列出全部函數,用連線表示調用關係,做用:能夠檢查函數的調用關係是否正確、是否存在孤立的函數而沒有被調用、明確函數被調用的頻繁度、對調用頻繁的函數能夠重點檢查。

★ 模塊控制流圖

模塊控制流圖由許多結點和鏈接結點的邊組成的圖形,其中每一個結點表明一條或多條語句,邊表示控制流向,能夠直觀地反映出一個函數的內部結構。
相關文章
相關標籤/搜索