Amazon CodeGuru Reviewer
Amazon CodeGuru Reviewer 可發現 Java 和 Python 程式碼中的問題,並提供程式碼改進建議。例如,CodeGuru Reviewer 可偵測安全漏洞、機密、資源洩漏、並行問題、不正確的輸入驗證,以及與使用 AWS API 和 SDK 之最佳實務的偏差。若要開始審查程式碼,您可以在 GitHub、GitHub Enterprise、Bitbucket 或 AWS CodeCommit 上將現有程式碼儲存庫與 CodeGuru 關聯。
安全偵測
CodeGuru Reviewer 可幫助您提高程式碼安全性,並根據常見漏洞 (OWASP Top 10) 和 AWS 內部安全最佳實務提供建議。它使用自動推理來分析從來源到匯點以及多個函數之間的資料流,以偵測難以發現的安全漏洞。CodeGuru Reviewer Security Detector 支援從 Java 8 至 Java 11 的各版本 Java 和 Python 3 及以上版本。您可以使用它來偵測程式碼安全問題,例如:
- OWASP Top 10:檢查最常見 Web 應用程式安全風險,例如存取控制中斷、注入,以及資料完整性受到損壞
- AWS API 安全最佳實務:檢查 Amazon Elastic Compute Cloud 和 AWS Key Management Service 的 API 安全性
- AWS 安全最佳實務 (AWS 加密依據 Amazon 的標準實作):對您的程式碼套用 Amazon 的內部安全專業知識
- Java 加密程式庫最佳實務:您可以檢查 Javax.Crypto.Cipher 是否已初始化並得到正確叫用
- Python 加密程式庫最佳實務:檢查是否使用了正確版本的 Python 雜湊和加密演算法
- 安全的 Web 應用程式:檢查與應用程式相關的安全問題,例如 LDAP 注入
- 敏感資訊洩漏:檢查是否出現個人或敏感資訊洩漏 (範例:以純文字記錄 AWS 帳戶憑證)
- 輸入驗證:檢查是否存在來自不受信任來源的格式錯誤或惡意的資料
- 日誌注入:透過檢查程式碼是否正確防止偽造日誌項目或將惡意內容注入日誌,來防止 Log4j 類型的漏洞
您可以前往 Amazon CodeGuru 主控台並對整個儲存庫進行安全分析,或者透過 GitHub Actions 與 CI/CD 整合。

機密偵測
CodeGuru Reviewer Secrets Detector 使用以機器學習為基礎的分析技術來幫助您偵測儲存庫或組態檔中硬編碼的機密,包括密碼、API 金鑰、SSH 金鑰、存取字符、資料庫連線字串和 JSON Web 字符。作為 CodeGuru Reviewer 的一部分,Secrets Detector 是一種自動化機制,可檢查這些機密的程式碼並提供點選式步驟以使用 AWS Secrets Manager 保護這些程式碼。它還可以識別最常見的 API 供應商產生的特定金鑰,包括 AWS、Atlassian、GitHub、Salesforce、HubSpot 和 Stripe。如需機密清單,請造訪文件。

程式碼品質
CodeGuru Reviewer 可識別程式碼品質問題,並讓您的開發團隊在軟體開發程序中保持較高的編碼標準:
- AWS 最佳實務:正確使用 AWS API (例如,輪詢、分頁)
- Java 和 Python 最佳實務:正確使用熱門的 Java 和 Python 語言與程式庫功能
- 並行:偵測缺少的同步,導致功能不正確或同步過多,從而引起效能問題
- 不一致:分析儲存庫中的編碼模式並幫助偵測何時存在偏離標準模式的異常
- 程式碼可維護性:識別程式碼複雜性或來源程式碼中的任何特徵,這會使程式碼難以運作
- 資源洩漏:正確處理資源 (例如,釋放資料庫連線)
- 常見的編碼最佳實務:檢查參數並尋找可能會產生錯誤的程式碼行 (例如:忘記在設定物件之前檢查其是否為 Null,重新指派同步物件,或忘記沿異常路徑初始化變數)
- 程式碼複製:識別可以合併以提高程式碼可維護性的重複程式碼

自動化建議
CodeGuru Reviewer 可以執行兩種不同類型的程式碼審查來提供建議:儲存庫程式碼增量改進審查和完整審查
增量改進程式碼審查
當您從關聯的儲存庫建立提取請求時,會自動建立增量改進程式碼審查。這些程式碼審查會掃描提取請求中變更的程式碼。CodeGuru Reviewer 還提供了一個提取請求儀表板,其中會列示所有程式碼審查的資訊 (例如:程式碼審查的狀態、分析的程式碼行數以及建議的數量)。CodeGuru Reviewer 的標準每月定價包含所有布設儲存庫的增量改進程式碼審查分析。

完整儲存庫分析程式碼審查
藉助 CodeGuru Reviewer,您可以在指定的程式碼分支下,獲得關聯儲存庫中所有程式碼行採用機器學習 (ML) 技術的程式碼審查建議。您可以執行完整的儲存庫掃描,以在程式碼遷移、程式碼盡職調查和定期程式碼可維護性計劃期間獲取程式碼審查建議。在 CodeGuru 主控台中,您可以導覽到「Code Reviews」(程式碼審查) 頁面中的「Repository Analysis」(儲存庫分析) 標籤,在完整儲存庫上開始新分析。新的以儲存庫大小為基礎的定價模型包括兩項完整的儲存庫掃描。如需更多詳細資訊,請瀏覽 CodeGuru 定價頁面。

.3e88bd7e2e94cea5a28671f957e6d9bc3ba7b808.png)
可在「Code reviews」(程式碼審查) 主控台頁面 (Reviewer 部分) 中檢視所有程式碼審查。此頁面會列出所有程式碼審查資訊,例如程式碼審查狀態、儲存庫及建議的數量等。您按一下已成功完成的程式碼審查,即可檢視詳細的建議內容、搜尋建議,以及已分析的行數。您也可以按一下建議下方豎起大拇指或大拇指朝下的圖示,對 CodeGuru 建議提供回饋意見。
CI/CD 與 GitHub Actions 整合
CI/CD 與 CodeGuru Reviewer 整合之後,您可以叫用程式碼品質和安全性分析,作為使用 GitHub Actions 的 CI 工作流程中的一個步驟。您可以將其設定為執行並針對管道提取、推送或排程執行提供建議。透過 CI/CD 叫用 CodeGuru Reviewer 掃描後,您可以在 CodeGuru Reviewer 主控台或 GitHub 的使用者介面內檢視程式碼品質和安全建議。 透過 CI/CD 整合,您可以持續監控程式碼的品質與安全性,以確保不會錯過任何建議。 在 CodeGuru Reviewer 中,您可以使用 GitHub Marketplace 上的 GitHub Action,直接在 GitHub 使用者介面中執行安全審查並接收建議。在您上線後,建議將直接顯示在 GitHub Security (GitHub 安全) 標籤中。

提取請求和 AWS 主控台中也提供了建議。如果按一下 GitHub 中的建議,您會更深入了解有關此問題清單的資訊,例如它在您的應用程式中建立的問題、解決方案的途徑、與之連結的任何 CWE (常見弱點枚舉) 及其嚴重性。

Amazon CodeGuru Profiler
Amazon CodeGuru Profiler 會一直尋求應用程式效能最佳化,識別最「昂貴」的程式碼行並建議修復方法以降低 CPU 使用率,降低運算成本,以及提升應用程式效能。例如,CodeGuru Profiler 可識別您的應用程式何時在日誌記錄常式上消耗過多的 CPU 容量,而不是執行核心業務邏輯。
始終啟用的生產中應用程式分析
CodeGuru Profiler 的設計旨在以最小的開銷,在生產環境中持續執行,這意味著您可以一直保持執行狀態,而對應用程式效能影響則降至最低。該工具可讓您使用真實的客戶流量模式來對應用程式進行概要分析和故障排除,同時輕鬆發現效能問題。藉助 Profiler 資料和採用 ML 技術的建議,您可以針對生產中的應用程式識別和修復效能問題。 CodeGuru Profiler 還提供堆積摘要,這樣您就可識別任意給定時間內哪些物件用盡記憶體。
了解應用程式的執行階段行為
CodeGuru Profiler 可持續分析應用程式的 CPU 使用率、堆積用量和延遲特徵,以向您顯示在應用程式中花費最多週期或時間的位置。CPU 和延遲分析將在互動式火焰圖上顯示,該圖可協助您以視覺化方式輕鬆了解哪些程式碼路徑消耗最多的資源,驗證您的應用程式是否按預期執行,以及發現可進一步最佳化的區域。

火焰圖會彙總一段時間內的堆疊追蹤範例來視覺化應用程式的效能,從而準確展示該時間段內應用程式的行為。您可以利用火焰圖來了解哪些路徑消耗最多的資源,驗證您的應用程式是否按預期執行,以及發現可進一步最佳化的區域。例如,方法 UploadGreyImage 每年花費 134,868 USD,這消耗了 10.22% 的時鐘時間,因此,若您不希望花費這麼多時間,則應進行調查。
堆積摘要
堆積用量分析以堆積摘要視覺效果展示,其中顯示了在堆積上分配了哪些物件 – 無論是您自己的網域類別,還是程式庫或 JDK 擁有的類別。

堆積摘要視覺化給定時間段內在堆積上分配的所有物件,以及這些物件的大小、計數和時間序列。例如,您可以在時間序列圖上看到,下午 4:20 時,兩個物件的記憶體用量開始顯著增長 (java.util.LinkedHashMap$Entry 和 java.land.UUID),這表明可能出現了記憶體洩漏。如果這種增長趨勢繼續發展,則可能引發記憶體用盡的情況 (如果未予以檢查)。
智慧建議
CodeGuru Profiler 會自動識別應用程式中的效能問題,並提供有關如何修復問題的採用 ML 技術的智慧建議。這些建議可協助您識別和最佳化程式碼中最昂貴或占用資源最多的方法,而無須您成為效能工程專家。透過這些最佳化,您可以降低基礎架構的成本,減少延遲,以及改善最終使用者的整體體驗。

當 Amazon CodeGuru Profiler 認為有機會最佳化應用程式效能時,會說明其建議變更的理由、導致問題的原因、解決方法,以及該問題在程式碼中影響應用程式的位置。此建議顯示這行昂貴的程式碼成本為每年 182.16K USD,並且對 CPU 使用率產生 2.97% 的影響。若按照建議的解決步驟操作,您可以節省多達 182.16K USD。
異常偵測
Amazon CodeGuru Profiler 持續地即時分析您的應用程式描述檔,並偵測您的應用程式及其方法的行為異常。在 CodeGuru Profiler 主控台的建議報告中會追蹤每項異常,您可以看到該方法的延遲隨時間變化的時間序列,並反白顯示異常。若已設定,則在偵測到新異常時還將傳送 Amazon SNS 通知。
