加快MISRA,CERT與專用報告工作流程的合規性
在開發人員的日常工作流程中引入諸如MISRA或CERT之類的編碼標準可能既費時又麻煩。在本文中,我們將探討如何加快工具自動化、專用報告和工作流管理的合規性。
在主動軟件開發過程中,典型的開發人員工作流程包括編碼(新代碼、重構或修復現有代碼)、本地單元測試、將代碼提交至源代碼控制、發起持續集成(CI)構建以及從此類代碼接收反饋。構建、修復錯誤,然后繼續執行下一個功能。
在本文中,我將介紹如何通過將自動靜態分析與專用報告和工作流管理一起利用,來成功地將編碼標準引入到日常流程中。這將幫助您介紹編碼標準合規性過程及其帶來的所有好處,而又不會犧牲您的工作效率并使開發人員感到沮喪。
通過專用的合規性和編碼標準報告,您還可以確保:
- 流程的有效性(減輕開發人員的負擔)
- 政策的一致性(并監視團隊進度)
- 合規的正式方面(包括自動生成承包商或認證機構可能需要的合規文檔)
讓我們開始吧!我們將從測試配置開始。
定義測試配置
將靜態分析應用于工作流時,您要做的第一件事是定義與您的項目相關的靜態代碼分析檢查器的配置。團隊負責人、架構師或功能安全員應定義測試配置,并帶有一組靜態分析檢查程序以執行編碼標準。這可能是一次性的過程,也可能是整個項目生命周期中的重復性行動。
如果您沒有遵循特定編碼標準的外部義務,我們仍然建議選擇要遵循的主要標準,例如CERT或MISRA,并使用其他標準中的附加指南對其進行擴展,這可能對我們的開發很有價值。我們通常會看到依賴MISRA C 2012的用戶將選定的CERT C準則包括在流程中,反之亦然。
在IDE中發布測試配置
一旦準備好測試配置,就可以直接在其IDE中將其自動提供給所有團隊成員,以便在軟件開發期間繼續使用。
為了加快合規性流程并利用自動靜態分析的早期缺陷和安全漏洞檢測的優勢,工作流中的這一點至關重要。開發人員在代碼創建后立即對其進行掃描。根據我們的觀察,提供合規性掃描結果的延遲甚至10到20分鐘也足夠使開發人員失去注意力并繼續進行其他工作。
簽入代碼以進行其他合規性掃描
下一步,開發人員檢入他們的代碼,這將觸發CI構建,并在其中進行其他合規性掃描。
(如果有必要將靜態分析掃描設置為代碼簽入的門,從而拒絕不符合標準的源代碼簽入,則經常會出現這些問題。根據我們的經驗,這種方法不能很好地起作用。開發人員可以輕松地獲得可以阻止因拒絕提交而造成的挫敗感和團隊合作精神,而相關的代碼則無法按時集成;更好的工作流程不會阻止代碼簽入,而是假定會發現任何將其放入源存儲庫的違規行為CI級別。)
在配置項構建期間,將對源存儲庫進行全面掃描。如果已經在IDE中掃描了代碼,為什么還要執行其他掃描?集成級別的掃描提供了一個安全網,這是必需的,因為某些準則只能在系統級別上被檢測到,或者只是被忽略。此外,需要更完整的源系統視圖來進行更復雜的靜態分析(流分析),以幫助檢測缺陷和安全漏洞。
用戶IDE中的本地掃描和CI服務器中的中央掃描的結合確保了準確性和效率。
查看結果并確定操作
使用Parasoft C/C++test時,CI掃描的結果將發布到集中的報告和分析中心,可在Web瀏覽器中訪問該中心、該瀏覽器存儲和分析數據。
團隊負責人可以使用Web門戶來訪問結果,了解合規性的當前狀態以及深入研究特定的關注領域。然后,他們可以將任務分配給開發人員,以跟進分析過程中發現的違規行為。
解決問題
然后,開發人員解決這些問題,在本地掃描代碼,并進行更正,從而啟動另一個周期。
生成報告和文檔
當項目接近完成并且團隊接近其合規目標時,將自動生成合規報告,包括所使用的主要編碼標準所需的所有文檔。這些專用于該標準的專用報告可節省大量時間,從而減少了與創建和維護合規性文檔有關的繁瑣的手工工作。
下面是MISRA和CERT的示例。
MISRA合規報告
Parasoft C/C++test提供了專用報告,用于記錄對MISRA C的遵從性。Parasoft Web門戶上的儀表板提供了有關項目當前狀態的概覽視圖,例如:
這些儀表板小部件均可以鏈接到更詳細的視圖,其中包含詳細的違規報告,文件和源代碼。
從這里,您可以自動創建記錄MISRA合規性所需的報告,如《MISRA Compliance 2016:實現MISRA編碼準則的合規性》中所述。自動化這些報告可以節省大量時間,從而大大減少了記錄項目合規性所需的手動工作量。
SEI CERT C合規報告
盡管SEI CERT C標準不需要特定的合規性報告,但確實需要一個項目來記錄對規則集的符合性(例如L1,L2和完全合規性。)Parasoft C/C++test包括一個專用的儀表板,以確保CERT C的符合性,看起來像這樣:
團隊負責人可以使用該儀表板視圖來更深入地研究特定的關注領域,并為開發人員分配任務,以隨著時間的推移提高合規性。在編碼標準本身使用的風險評估框架的背景下查看結果(例如,看到特定的違反L1準則的行為),極大地簡化了流程。自動執行此報告可以減少團隊負責人和架構師為實現CERT C合規性而需要執行的分析量。
總結
為了加快合規性,三個要素是必不可少的:合規性策略的集中管理、針對使用IDE的開發人員的短反饋循環以及用于過程管理和報告生成的CI/CD掃描。通過靜態分析實現自動化不僅是實現對規則集合規性的關鍵,而且還可以減少為審核員和評估員記錄和報告合規性的手動工作。通過使用以Parasoft C/C++test為中心的以開發人員為中心的工作流程,團隊可以使用專用的報告工具每天有效地評估和監視合規性,以幫助團隊領導者管理和實現合規性。