來吧!各大廠知名規范體系~ 各有特點各有側重~
Google C++ Style Guide
Google C++ Style Guide,[中文版],簡稱 GSG,谷歌的 C++ 編程規范,在國內有較大影響力,是企業級規范,對代碼的具體樣式有細致的規定,可直接采用。
由於歷史原因,GSG 較為保守,通過抑制語言特性以達到規避風險的目的。在早期尚未形成所謂“現代”編程思想的時候,此規范就已經面世並發揮作用了,其中的某些觀點可能與 C++ 官方不符,比如 C++ 創始人曾一度認為用常數 0 表示空指針比用 NULL 更好,而 GSG 的觀點與之相反,但歷史表明 GSG 的觀點是正確的,C++11 引入了專屬符號 nullptr 以表示空指針的值。
GSG 是實踐經驗的總結,也在不斷發展,目前已適應 C++17,對提升代碼可維護性有很高的參考價值。
C++ Core Guidelines
C++ Core Guidelines,[中文版],簡稱 CCG,是 C++ 創始人對 C++ 代碼編寫的宏觀指導,屬於語言級規范體系,全面地闡述了現代 C++ 編程思想,以規則條款的形式明確地指出哪些是要避免的,哪些是值得提倡的,具有權威性,適合開發者學習。
由於其篇幅宏大細節繁多,可在相應代碼審計工具的支持下作為企業的編程規范和審計依據。
SEI CERT Coding Standards
SEI CERT Coding Standards,簡稱 CERT,是 CMU(Carnegie Mellon University)軟件工程研究所(SEI)發布的 C/C++ 編碼規范,專注於安全問題,適合與其他規范配合使用。
CERT 提供了較為全面的安全措施,如敏感信息的保護、注入或劫持的預防等等是值得所有開發人員學習的。
MISRA C/C++
MISRA C/C++,是由英國汽車產業軟件可靠性協會(Motor Industry Software Reliability Association)提出的 C/C++ 語言開發標准,在嵌入式開發領域有較高認可度,是行業級規范,企業可直接采用,但需購買相關文檔或技術支持。
MISRA 調強代碼靜態結構的合規性,規則較為嚴格,梳理了標准中“未定義”、“未聲明”、“實現定義”的情況,總結可導致不良后果的代碼形式並以此為規范依據,當前發行版本遵循 C99 和 C++03 標准。
High Integrity C++ Coding Standard
High Integrity C++ Coding Standard,歷史悠久的 C/C++ 規范體系,現歸屬於 Perforce Software, Inc.,提供獨特而有效的方法提升代碼質量並規避風險,被多種知名規范參考引用,而且還提供合規性審計軟件,但並不側重於安全問題,適合與 SEI CERT 等安全類規范配合使用。
華為 C&C++ 語言安全編程規范
華為 C&C++ 語言安全編程規范,闡述了編程時必須面對的最關鍵的 8 類問題(資源、安全、敏感信息等),適合企業直接采用。
此規范較為簡練便於記憶,所以適合在 Code Review 時人工對代碼展開相關檢查和討論,由於不是以網站形式發布的,這里就不提供鏈接了,可自行搜索相關文檔。
騰訊代碼安全指南
騰訊代碼安全指南,直接面向各種庫或 API 的使用,闡明存在的安全問題和解決方法,有較高的實用價值,除了 C 和 C++ 語言,還提供對 Java、Javascript、Go、Python 等語言的編程指導。
360 安全規則集合
360 安全規則集合,[網頁版],融匯多種編程理念,提供適用於不同場景的規則供用戶選取,適用於桌面、服務端及嵌入式軟件系統,也屬於語言級規范體系。
安全規則集合側重違規代碼的量化界定,嚴格遵循 C11 和 C++11 標准,並兼顧 C18、C++17 以及歷史標准,可為不同方向的開發團隊提供靈活而統一的規范指導。