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

Amazon CodeGuru 是採用機器學習技術的開發人員工具,能針對增進程式碼的品質提供智慧型建議,並且找出應用程式之中最昂貴的程式碼行。它自動執行代碼審查並提供應用程式效能建議。

Amazon CodeGuru Reviewer

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

提取請求的自動化建議

CodeGuru Reviewer 自動分析源代碼提取請求以發現關鍵問題,並提供智慧建議,以便直接在提取請求中解決程式碼缺陷。CodeGuru Reviewer 在九大類中識別程式碼品質問題:

• AWS 最佳實務:正確使用 AWS API (例如,輪詢、編頁)
• Java and Python (提供預覽版) 最佳實務:正確使用熱門的 Java 和 Python 語言與程式庫功能
• 並行:偵測缺少的同步,導致功能不正確或過多同步,從而引起效能問題。
• 鎖死:檢查並行執行緒之間的協調
• 資源洩漏:正確處理資源 (例如,釋放資料庫連線)
• 敏感資訊洩漏:個人身份資訊洩漏 (例如,記錄信用卡詳細資訊)
• 常見的程式碼錯誤:難以發現缺陷,例如沒有針對每次 lambda 叫用建立用戶端
• 程式碼複製:識別可以合併以提高程式碼可維護性的重複程式碼
• 輸入驗證:檢查不受信任來源的格式錯誤或惡意資料

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

簡而言之,CodeGuru 為您的開發團隊提供在軟體開發過程中維護高編碼標準的工具。

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

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

藉助 CodeGuru,您可以在指定的程式碼分支下,獲得所有程式碼 (不只是透過提取請求進行的遞增變更) 關聯儲存庫的自動程式碼審查建議。使用案例包括在程式碼遷移、程式碼盡職調查和定期程式碼可維護性計劃期間提供程式碼審查建議。您可以瀏覽到「程式碼審查」頁面中的「儲存庫分析」標籤,在完整儲存庫上觸發新分析。

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

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

安全偵測

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 主控台,透過上傳來源和建置成品來觸發針對整個儲存庫或程式碼庫的安全性分析。
安全偵測
安全偵測
 按一下以放大

Amazon CodeGuru Profiler

Amazon CodeGuru Profiler 會一直尋求應用程式效能最佳化,識別最「昂貴」的程式碼行並建議修復方法以降低 CPU 使用率,降低運算成本,以及提升應用程式效能。例如,CodeGuru Profiler 可識別您的應用程式何時在日誌記錄常式上消耗過多的 CPU 容量,而不是執行核心業務邏輯。

始終啟用的生產中應用程式分析

CodeGuru Profiler 旨在於生產環境中連續執行并具備最小的開銷,意即可以保持執行狀態。該工具可讓您使用真實的客戶流量模式來對應用程式進行概要分析和故障排除,同時輕鬆發現效能問題。如果生產應用程式遇到任何問題,則可使用此分析工具提供的資料和建議快速修正此類問題。 CodeGuru Profiler 還提供堆積摘要,這樣您就可識別任意給定時間內哪些物件用盡記憶體

了解應用程式的執行階段行為

CodeGuru Profiler 可持續分析應用程式的 CPU 使用率、堆積用量和延遲特徵,以向您顯示在應用程式中花費最多週期或時間的位置。CPU 和延遲分析將在互動式火焰圖上顯示,該圖可協助您以視覺化方式輕鬆了解哪些程式碼路徑消耗最多的資源,驗證您的應用程式是否按預期執行,以及發現可進一步最佳化的區域。

異常映像處理
異常映像處理
 按一下以放大

火焰圖會彙總一段時間內的堆疊追蹤範例來視覺化應用程式的效能,從而準確展示該時間段內應用程式的行為。您可以利用火焰圖來了解哪些路徑消耗最多的資源,驗證您的應用程式是否按預期執行,以及發現可進一步最佳化的區域。例如,方法 UploadGreyImage 每年花費 134,868 USD,這消耗了 10.22% 的時鐘時間,因此,若您不希望花費這麼多時間,則應進行調查。

堆積摘要

堆積用量分析以堆積摘要視覺效果展示,其中顯示了在堆積上分配了哪些物件 – 無論是您自己的網域類別,還是程式庫或 JDK 擁有的類別。

發現應用程式效能方面的異常和常見問題
 按一下以放大

堆積摘要視覺化給定時間段內在堆積上分配的所有物件,以及這些物件的大小、計數和時間序列。例如,您可以在時間序列圖上看到,下午 4:20 時,兩個物件的記憶體用量開始顯著增長 (java.util.LinkedHashMap$Entry 和 java.land.UUID),這表明可能出現了記憶體洩漏。如果這種增長趨勢繼續發展,則可能引發記憶體用盡的情況 (如果未予以檢查)。

Troubleshoot performance issues
智慧建議

CodeGuru Profiler 會自動識別應用程式中的效能問題,並提供有關如何修復問題的智慧建議。這些建議可協助您識別和最佳化程式碼中最昂貴或占用資源最多的方法,而無須您成為效能工程專家。透過這些最佳化,您可以降低基礎架構的成本,減少延遲,以及改善最終使用者的整體體驗。

智慧建議
智慧建議
 按一下以放大

當 Amazon CodeGuru Profiler 認為有機會最佳化應用程式效能時,會說明其建議變更的理由、導致問題的原因、解決方法,以及該問題在程式碼中影響應用程式的位置。此建議顯示這行昂貴的程式碼成本為每年 182.16K USD,並且對 CPU 使用率產生 2.97% 的影響。若按照建議的解決步驟操作,您可以節省多達 182.16K USD。

異常偵測

Amazon CodeGuru Profiler 持續地即時分析您的應用程式描述檔,並偵測您的應用程式及其方法的行為異常。在建議報告中會追蹤每項異常,您可以看到該方法的延遲隨時間變化的時間序列,並反白顯示異常。若已設定,則在偵測到新異常時還將傳送 Amazon SNS 通知。

異常偵測
異常偵測
 按一下以放大
始終啟用的生產中應用程式分析

CodeGuru Profiler 的設計旨在以最小的開銷,在生產環境中持續執行,這意味著您可以一直保持執行狀態,而對應用程式效能影響則降至最低。這讓您可以使用實際的客戶流量模式,來對應用程式進行分析和疑難排解,並輕鬆地發現測試環境中可能未偵測到的效能問題。

Product-Page_Standard-Icons_01_Product-Features_SqInk
進一步了解 Amazon CodeGuru 定價

瀏覽 Amazon CodeGuru 定價頁面。

進一步了解 
Product-Page_Standard-Icons_02_Sign-Up_SqInk
註冊免費帳戶

立即存取 AWS 免費方案。 

註冊 
Product-Page_Standard-Icons_03_Start-Building_SqInk
開始在主控台進行建置

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

登入