使用 Amazon CodeGuru 找出最昂貴的程式碼行

Amazon CodeGuru 是一種開發人員工具,其利用機器學習的強大功能,協助您改善程式碼可維護性並找到最昂貴的程式碼行。該工具自動執行程式碼審查並提供應用程式效能建議。

Amazon CodeGuru Reviewer

Amazon CodeGuru Reviewer 可找出您的 Java 和 Python 程式碼存在的問題,並建議如何進行修復。例如,CodeGuru Reviewer 可偵測與使用 AWS API 和軟體開發套件的最佳實務的偏差,還可以識別並行問題、資源洩漏、安全漏洞,以及不正確的輸入驗證。若要開始審查程式碼,您可以在 GitHub、GitHub Enterprise、Bitbucket 或 AWS CodeCommit 上將現有程式碼儲存庫與 CodeGuru 關聯。

提取請求的自動化建議

CodeGuru Reviewer 透過自動分析來源程式碼提取請求來發現關鍵問題,從而識別程式碼可維護性問題和安全風險 (包括 OWASP 10 大類別)。然後提供直接在提取請求中解決程式碼缺陷方面的智慧建議。 CodeGuru Reviewer 可識別九個大類的程式碼可維護性問題,並讓您的開發團隊在軟體開發程序中保持較高的程式碼標準:

• AWS 最佳實務:正確使用 AWS API (例如,輪詢、編頁)
• Java and Python 最佳實務:正確使用熱門的 Java 和 Python 語言與程式庫功能
• 並行:偵測缺少的同步,導致功能不正確或過多同步,從而引起效能問題。
• 程式碼可維護性:識別程式碼複雜性或來源程式碼中的任何特徵,這會使程式碼難以超時運作
• 資源洩漏:正確處理資源 (例如,釋放資料庫連線)
• 敏感資訊洩漏:敏感資訊洩漏 (範例:以純文字記錄 AWS 帳戶登入資料)
• 常見的編碼最佳實務:檢查參數並尋找可能會產生錯誤的程式碼行 (例如:忘記在設定物件之前檢查其是否為 Null,重新指派同步物件,或忘記沿異常路徑初始化變數)。
• 程式碼複製:識別可以合併以提高程式碼可維護性的重複程式碼
• 輸入驗證:檢查不受信任來源的格式錯誤或惡意資料

提取請求的自動化建議
 按一下以放大

安全偵測
Codeguru Reviewer 可協助您提高程式碼安全性並提供最佳實務建議。該工具使用自動推理來分析從來源到匯點以及多個函數之間的資料流,以偵測難以發現的安全漏洞。Security Detector 支援各種版本的 Java (最高版本為 Java 11),並且辨識多種類別的問題,例如:

1.AWS API 安全性最佳實務:您可檢查 AWS EC2 和 KMS 的 API 安全性
2.Java 加密程式庫最佳實務:您可檢查 Javax.Crypto.Cipher 是否已初始化并得到正確叫用
3.安全的 Web 應用程式:您可將與 Web 應用程式相關的安全問題,例如 LDAP 插入
4.敏感資訊洩漏:您可檢查個人或敏感資訊是否存在洩漏
5.AWS 安全性最佳實務 (例如 AWS 加密建議):您可檢查自己的程式碼是否符合 AWS 最佳實務

您可前往 CodeGuru 主控台,透過上傳來源和建置成品來觸發針對整個儲存庫或程式碼庫的安全性分析。

建議

可在「程式碼審查」主控台頁面 (Reviewer 部分) 中檢視所有程式碼審查。此頁面會列出所有程式碼審查資訊,例如程式碼審查狀態、儲存庫及建議的數量等。您可按一下已成功完成的程式碼審查,即可檢視詳細的建議內容、搜尋建議,以及已分析的行數。您也能按一下建議下方的豎起大拇指或大拇指朝下的圖示,對 CodeGuru 建議提供回饋意見。

提取請求
 按一下以放大
完整儲存庫分析

藉助 CodeGuru,您可以在指定的程式碼分支下,獲得關聯儲存庫 (不只是透過提取請求進行的遞增變更) 所有程式碼行採用 ML 技術的程式碼審查建議。您可以執行完整的儲存庫掃描,以在程式碼遷移、程式碼盡職調查和定期程式碼可維護性計劃期間獲取程式碼審查建議。在 CodeGuru 主控台種,您可以瀏覽到「程式碼審查」頁面中的「儲存庫分析」標籤,在完整儲存庫上觸發新分析。新的以儲存庫大小為基礎的定價模型包括兩項完整的儲存庫掃描。如需更多詳細資訊,請瀏覽 CodeGuru 定價頁面。

完整儲存庫分析
 按一下以放大

透過可用的提取請求和完整儲存庫分析,採用 CodeGuru Reviewer 可以協助您 1) 與儲存庫建立關聯、2) 啟動完整儲存庫分析、3) 針對遞增程式碼變更持續分析提取請求,以及 4) 定期重新掃描完整儲存庫以確保程式碼可維護性。

安全偵測
 按一下以放大

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 通知。

異常偵測
 按一下以放大
Standard Product Icons (Features) Squid Ink
進一步了解 Amazon CodeGuru 定價

瀏覽 Amazon CodeGuru 定價頁面。

進一步了解 
Sign up for a free account
註冊免費帳戶

立即存取 AWS 免費方案。 

註冊 
Standard Product Icons (Start Building) Squid Ink
開始在主控台進行建置

開始在 AWS 管理主控台使用 Amazon CodeGuru 進行建置。

登入