運用數十年的知識和經驗進行訓練
CodeGuru 的機器學習模型在 Amazon 的程式碼庫上進行訓練,其中包含數十萬個內部專案,以及 GitHub 中的 10,000 多個開放原始碼專案。成千上萬的 Amazon 開發人員,憑藉數十年來的程式碼審查和應用程式分析經驗,為 CodeGuru 的訓練做出貢獻。例如,CodeGuru Reviewer 使用規則採擷和受監督的機器學習模型進行訓練,這些模型採用邏輯迴歸和神經網路的組合。在偵測與最佳實務偏差的訓練期間,它會為包含 AWS API 叫用的提取請求採擷 Amazon 程式碼庫。它會查看程式碼變更,並將其與文件資料進行交叉引用,同時進行採擷。如此便可建立最佳實務新模型,以便 Reviewer 在審查程式碼時使用以提供建議。CodeGuru Profiler 還經過 Amazon 效能工程師的訓練,可用於分析 Amazon 內部使用的成千上萬的服務。您可以決定是否接受 CodeGuru 提供的每個建議,您給它的回饋越多,它的建議就會越好。
找出最昂貴的程式碼行
CodeGuru Profiler 會一直尋求應用程式效能最佳化,識別最「昂貴」的程式碼行並建議修復方法以降低 CPU 使用率,降低運算成本,以及提升應用程式效能。CodeGuru Profiler 將提供具體的建議,因此您可以針對過度重新建立昂貴的物件、昂貴的還原序列化、使用效率底下的程式庫,以及過度記錄等問題,立即採取行動。CodeGuru Profiler 會持續在生產中執行,耗用最低的 CPU 容量,因此不會顯著影響應用程式效能。您可以透過安裝使用 CodeGuru 所提供程式碼的小型代理程式,並在 CodeGuru 主控台中進行設定,來開始分析應用程式。
Amazon CodeGuru Reviewer 將掃描您的提取請求,並針對您在 Github 或 AWS CodeCommit 中的原始碼提供建議,包括導致問題的原因,以及如何補救的說明。
立即發現程式碼問題 – 不要等待分頁結果
CodeGuru Reviewer 將會尋找讓您徹夜難眠的問題,並建議如何修復它們。它能偵測偏離使用 AWS API 和 SDK 的最佳實務的情況,標記會導致生產問題的常見問題,例如偵測分頁缺失,或錯誤處理批次操作。它還能偵測並行問題,例如原子性違規,以及使用非執行緒安全的類,即使是有經驗的程式設計人員,也很難找出這些問題。它可偵測資源何時被錯誤關閉,從而導致延遲問題和中斷。它還能識別正確的輸入驗證,其中未經處理的輸入可能導致插入式攻擊或拒絕服務等問題。您可以在 GitHub 或 AWS CodeCommit 上將現有程式碼儲存庫與 CodeGuru 關聯,以便開始審查程式碼。
價格非常實惠,適用於每個程式碼審查和應用程式
CodeGuru 經濟實惠,適用於您執行每個程式碼審查和應用程式。它採用簡單的按用量付費月度定價,根據審查的程式碼行數和每個應用程式描述檔的取樣時間來計價。例如,若您有一個典型的提取請求,其中包含 500 行程式碼,則在其上執行 CodeGuru Reviewer 只需 3.75 USD。前 90 天免費試用。之後,每個應用程式描述檔每個取樣小時的 CodeGuru 費用為 0.005 USD,每月每 100 行程式碼為 0.75 USD。請參閱定價
透過
開發人員對 Amazon CodeGuru 的看法
Chris Butterfield,軟體開發工程師,他致力於為 Amazon.in 上的賣家提供排程服務︰
「執行 CodeGuru Profiler 並查看其建議後,我意識到我們需要更新服務,以修復與 CPU 鎖定有關的錯誤。推薦的修復程式運作出色,並消除了佔用 55.97% CPU 時間的執行緒爭用警告。修復之後,我完成了負載測試,發現單一主機現在可以提供 700 TPS 的服務,相較於單一主機過去可處理的流量約提升了 7.5 倍。在負載測試之後,我們能夠將執行個體數量減少了約 75%,同時仍然處理相同的流量。」
Rajesh Konatham,一名高級軟體開發工程師,負責 Amazon.com 的型錄管理服務︰
「我們剛剛停用了一些與軟體相關的組態,以縮短伺服器啟動時間並減少描述檔混亂。我們使用 CodeGuru Profiler 來了解此變更的影響,並意識到我們的工作流程系統每次執行分支時都會複製文件,即使不需要時也是如此。因此,我們不必花費 15% 的 CPU 容量來複製值。「遵循 CodeGuru Profiler 的建議刪除這些複製值之後,我們發現 CPU 使用率大幅降低,同步機群減少了 40%,非同步佇列減少了 67%。遠遠超過我們預期的降低 15% 的 CPU 使用率! 額外降低是由於廢棄項目收集活動減少,因為複製不再佔用堆積記憶體。」
Neeraj Kumar,負責 Amazon CloudWatch 的高級軟體開發工程師
「我們執行了 CodeGuru Profiler,發現我們的大部分 CPU 容量都用於使用 SHA-2 簽署 Amazon S3 請求。我們正在使用 JDK 提供的 SHA-2 實作,但 CodeGuru Profiler 建議我們改用 Amazon Corretto Crypto Provider。我們採用了建議,這讓我們能夠更快地實作其中一些加密演算法。Corretto Crypto Provider 符合 JDK 的行為,因此布設很簡單。部署後,我們發現幾個 AWS 區域的 CPU 使用降低了約 30%。」
Mike Thompson,負責 AWS 建立器工具的高級軟體開發工程師:
「CodeGuru Reviewer 讓我們能夠擷取潛伏在關鍵程式碼段中的長期競爭狀況。人工審查者會錯過它,因為它不在我變更的程式碼範圍內。CodeGuru Reviewer 提供了有關該錯誤的足夠內容、錯誤原因的清晰說明,以及如何修復該錯誤的範例。進行所需變更非常容易,只需幾分鐘即可。能在不設定或處理的情況下改善我們的程式碼品質真是太好了。」
Danish Bashar,負責 AWS DynamoDB 的軟體開發工程師︰
「我正在從 Amazon S3 下載檔案,但沒有意識到它是串流,這造成了資源洩漏。因為執行良好,所以單元測試不會發現此問題。由於我沒有明確編寫物件類型,因此我也沒有註意到它,而且我很確定,任何審查過我的程式碼也不會注意到它。CodeGuru Reviewer 花了幾分鐘查看程式碼的語義,並較快地發現了資源洩漏。CodeGuru Reviewer 建議我使用 try-with-resources 來關閉資源,我立即進行了實作。 +1。」
Geetika Vasudeo,負責 AWS DynamoDB 的軟體開發工程師︰
「我們以一種非典型的方式來使用 Amazon DynamoDB 資料表,並且在程式碼審查中錯過了這一點。CodeGuru Reviewer 識別該操作返回的是分頁結果,而不是所有結果。我們正在進行掃描,只在第一頁擷取結果,現在這不是問題,但是隨著資料表的增長,我們最終只會看到第一頁並錯過其餘結果。如果處理不正確,這可能已成為我們程式碼中的主要錯誤。它的擷取和建議都非常出色。」