一般問題
問:什麼是 Amazon CodeGuru?
Amazon CodeGuru 是一種開發人員工具,能針對增進程式碼的品質提供智慧型建議,並且找出應用程式之中最昂貴的程式碼行。
問:Amazon CodeGuru 可以用來做什麼?
Amazon CodeGuru 有兩個元件:Amazon CodeGuru Reviewer 和 Amazon CodeGuru Profiler。Amazon CodeGuru Reviewer 使用機器學習和自動推理來識別應用程式開發過程中的關鍵問題和難以發現的錯誤,以提高程式碼品質。Amazon CodeGuru Profiler 可最佳化生產環境中執行的應用程式效能,並識別最昂貴的程式碼行,從而顯著降低營運成本。
問:如何開始使用 Amazon CodeGuru?
Amazon CodeGuru 現在已正式上市。您可以在 Amazon CodeGuru 主控台中立即開始使用。
若要開始使用 Amazon CodeGuru Reviewer,請登入 Amazon CodeGuru Reviewer 主控台,您可以在其中關聯 GitHub、GitHub Enterprise、Bitbucket 或 AWS CodeCommit 上的現有程式碼儲存庫。一次設定之後,Amazon CodeGuru Reviewer 即可開始分析程式碼,並直接在提取請求或程式碼儲存庫內提供程式碼改進建議。
您也可以在幾分鐘內開始對應用程式進行效能分析。若要開始使用 Amazon CodeGuru Profiler,請登入 Amazon CodeGuru Profiler 主控台,您可在此設定應用程式的分析群組。在命令列上使用分析代理程式啟動您的應用程式,或按照下列步驟使用描述的自訂方法之一。您可以讓 Amazon CodeGuru Profiler 持續執行,以便其可以主動擷取即時應用程式中的效能問題。
問︰Amazon CodeGuru 可在哪些 AWS 區域使用?
若要查看支援的 AWS 區域,請瀏覽所有 AWS 全球基礎架構的 AWS 區域表。如需詳細資訊,請參閱 AWS 一般參考中的區域和端點。
Amazon CodeGuru Reviewer
問:什麼是 Amazon CodeGuru Reviewer?
Amazon CodeGuru Reviewer 是一種自動化程式碼審查服務,該服務可識別嚴重缺陷,以及與採用 Java 和 Python 程式碼的程式碼最佳實務的偏差。它可掃描提取請求中的程式碼行,並根據從大型開放原始碼專案,以及 Amazon 程式碼庫中學習到的標準提供智慧建議。Amazon CodeGuru Reviewer 與廣泛使用的開放原始碼控制系統 (包括 GitHub、GitHub Enterprise、Bitbucket 和 AWS CodeCommit) 上的現有程式碼審查工作流程無縫整合,並提供切實可行的建議以提高程式碼品質。
問:支援哪些程式設計語言和開放原始碼儲存庫?
Amazon CodeGuru Reviewer 目前支援儲存在 GitHub、GitHub Enterprise、Bitbucket 和 AWS CodeCommit 儲存庫中的 Java 和 Python 程式碼。
問:Amazon CodeGuru Reviewer 偵測到什麼類型的問題?
Amazon CodeGuru Reviewer 可檢查並行問題、潛在的競爭條件、未經處理或惡意的輸入、對敏感資料 (如登入資料) 的不當處理、資源洩漏,還會偵測並行代碼中的競爭條件和鎖死。它還建議 AWS、Java 和 Python 最佳實務,並偵測可合併的複製程式碼,以提高程式碼的可維護性。
問:如何開始使用 Amazon CodeGuru Reviewer?
造訪 Amazon CodeGuru 主控台,將 Amazon CodeGuru Reviewer 建議直接整合至您的程式碼提取請求中。您可以透過造訪 CodeGuru 主控台,並按照關聯 AWS CodeCommit、GitHub、GitHub enterprise 和 BitBucket 儲存庫的步驟開始操作,以開始接收 Amazon CodeGuru Reviewer 的建議。啟用後,Amazon CodeGuru Reviewer 即會自動提供智慧建議,作為連線儲存庫產生的提取請求的註解。
問:Amazon CodeGuru Reviewer 是否可以存取我的程式碼?
Amazon CodeGuru Reviewer 需要唯讀存取您的程式碼,以便產生建議。我們將您的信任、您內容的隱私和安全性放在第一優先,而且實作適當的控制 (包括傳輸加密),以避免未授權人員存取或公開您的內容,同時確保對內容的使用絕對遵守我們對您所做的承諾。如需詳細資訊,請參閱資料隱私權常見問答集。
問:Amazon CodeGuru Reviewer 是否會保留我的程式碼副本?
否。Amazon CodeGuru Reviewer 不會儲存您的源程式碼。
問:Amazon CodeGuru Reviewer 如何接受訓練以提供智慧建議?
Amazon CodeGuru Reviewer 使用規則採擷和受監督的機器學習模型進行訓練,這些模型採用邏輯迴歸和神經網路的組合。
例如,在訓練與 AWS 最佳實務之間的偏差時,Amazon CodeGuru Reviewer 使用搜尋技術和本機敏感模型,對包含 AWS API 叫用的提取請求採擷 Amazon 程式碼庫。它著眼於旨在提高程式碼品質的程式碼變更,並將其與文件資料進行交叉引用。因此建立一組新規則,在審查您的程式碼時,Reviewer 會向您推薦這些規則作為最佳實務。
在訓練資源和敏感資料洩漏期間,它將對所有使用該資源或敏感資料的程式碼路徑進行完整的程式碼分析,建立代表這些功能或敏感資料的功能集,然後將其用作邏輯迴歸模型和卷積神經網路 (CNN) 的輸入。
對於程式碼不一致,在完整或增量程式碼審查期間對模型進行訓練。在客戶觸發審查之後,這些模型會利用大量資料探勘和機器學習技術來建置資料集,強調程式碼模式的原因,並根據客戶的程式碼自訂建議。
對於基於規則的模型和基於機器學習的模型,Amazon CodeGuru Reviewer 都將您提供的回饋用作標籤,並反覆提高程式碼偵測器的品質。
問:開源程式碼分析工具如何整合至 CodeGuru Reviewer?
Amazon CodeGuru Reviewer 整合了來自三個來源的規則 (1) CodeGuru Reviewer 規則是該服務不可或缺的一部分,旨在使用機器學習和自動推理來分析程式碼的程式碼品質和安全問題,(2) Bandit (一種開源程式碼分析工具,設計用於尋找 Python 程式碼中的安全問題) 的受管版本,整合至 CodeGuru Reviewer 並且 (3) CodeGuru Reviewer中還整合了 Infer 的託管版本,這是一種旨在發現 Java 程式碼中的並發性和其他問題的開源程式碼分析工具。CodeGuru Reviewer 使用所有來源的規則分析您的程式碼 (適用於程式設計語言),並具有簡單的定價,其中包括執行的所有分析。
Amazon CodeGuru Reviewer Security Detector
問:Amazon CodeGuru Reviewer Security Detector 支援哪些程式設計語言。
Amazon CodeGuru Reviewer Security Detector 支援從 Java 8 至 Java 11 的各版本 Java 和 Python 3 及以上版本。
問:為什麼要使用 Amazon CodeGuru Reviewer Security Detector?
使用 CodeGuru Reviewer Security Detector,您就像擁有了一位全天候審查程式碼的安全專家。該工具協助在部署前確定安全最佳實務。
問:Amazon CodeGuru Reviewer Security Detector 如何運作?
CodeGuru Reviewer Security Detector 靜態分析代碼以建置一個控制流圖,其中展示了執行程式碼的所有可能方式。然後,它偵測資料如何流過控制流程圖以發現潛在的問題,這些問題涉及可能跨越多個應用程式的操作序列,同時涉及多個方法和類。例如,此安全偵測工具會確定 Javax.Crypto.KeyGenerator 或 Python 中的 crypto.secrets (對稱私密金鑰產生器) 是否在使用前進行了初始化,即時初始化和使用操作發生在不同的方法中亦是如此。
問:Amazon CodeGuru Reviewer Security Detector 偵測到什麼類型的問題?
CodeGuru Reviewer 可以協助您解決 5 類程式碼安全問題:(1) AWS API 安全最佳實務可協助您在使用各種 AWS 服務 (如 AWS EC2 和 KMS) 的 API 時遵循安全最佳實務 (2) Java 和 Python 加密程式庫最佳實務可協助您檢查常見的 Java 加密程式庫,例如 Javax.Crypto.Cipher 和 內 Python 中的內建及第三方雜湊或加密模組 (例如,加密),以確保正確初始化和叫用它們 (3) 安全 Web 應用程式可協助您檢查與 Web 應用程式相關的安全性問題,例如跨網站指令碼、LDAP 插入以及路徑週遊插入 (4) AWS 安全最佳實務將內部安全專業知識 (例如 AWS 加密建議) 帶入您的使用案例。
問:Amazon CodeGuru Reviewer Security Detector 是否會分析儲存庫中的所有程式碼?
是,CodeGuru Reviewer Security Detector 分析儲存庫中的建置成品和所有 Java 原始程式碼,從而提供安全建議。
Amazon CodeGuru Reviewer CI/CD 整合
問:CodeGuru 支援哪些 CI/CD 提供者?
CodeGuru 支援 CI/CD 整合的 GitHub Actions。
問:將 CodeGuru 整合至我的 CI/CD 管道如何協助改進我的程式碼?
透過將 CodeGuru Reviewer 整合至您的 CI/CD 管道,您可以輕鬆針對程式碼品質和安全建議自動執行程式碼審查程序。您可以將其設定為依據提取/合併請求執行或按管道排程執行。該整合可確保您從未錯過建議,且可持續監控程式碼品質和潛在安全漏洞。
問:我如何設定 CI/CD 與 GitHub 整合?
您可以透過按一下此處,檢視 GitHub Marketplace 上的 CodeGuru Reviewer GitHub Action。依照 Marketplace 頁面上的指示,將 CodeGuru 整合至 GitHub CI 工作流程。有關其他詳細資訊,請瀏覽文件。
Amazon CodeGuru Profiler
問:什麼是 Amazon CodeGuru Profiler?
Amazon CodeGuru Profiler 可協助開發人員和 IT 操作人員輕鬆了解其應用程式的執行階段行為,提高效能並降低基礎架構成本。Amazon CodeGuru Profiler 將分析應用程式執行時間描述檔,並提供智慧建議和視覺化,指導開發人員如何提高其程式碼中最相關部分的效能。
問:什麼是分析群組?
分析群組是您建立的邏輯分組。它代表一個應用程式的邊界。例如,在微型服務架構中,描述檔將彙集您指派給微型服務的描述檔,並為所有微型服務產生一個描述檔。
問:我已經將大量日誌記錄整合至我的程式碼中。還需要分析嗎?
日誌記錄執行時間僅適用於有限的案例集,因為日誌記錄只能監控延遲 (而不是 CPU 使用率),並且由於開發人員必須記錄應用程式中的每項功能 (而不影響應用程式效能),讓開發人員在沒有必要工具的情況下,監控生產中的應用程式並進行疑難排解,因此實作起來很耗時。這是需要分析的情況:Amazon CodeGuru Profiler 旨在收集有關該應用程式行為中發生的所有事件資料,而不管情況如何。CodeGuru Profiler 使用常見的效能低下的知識庫,來自動發現即時應用程式中影響其效能的代碼模式。開發人員隨後則可按照提供的建議修正問題。
問:Amazon CodeGuru Profiler 與傳統的 APM 和獨立的分析工具有何不同?
傳統的 APM 提供有關監控、追蹤和應用程式效能的實用資料。Amazon CodeGuru Profiler 透過提供應用程式執行階段資料視覺化,以及針對發現的效能問題的可行建議來補充這些 APM 功能。它還使用機器學習來偵測和警示您的應用程式描述檔中的異常,並指出異常的程式碼行。使用 Amazon CodeGuru Profiler,您可以輕鬆檢視最有可能實現效能最佳化以及潛在節省的程式碼部分,並獲得有關如何解決這些問題的指南,而無須具有精深的效能工程背景。Amazon CodeGuru Profiler 可以分析 EC2 執行個體、容器和無伺服器運算平台 (包括 AWS Lambda) 以及內部部署。此外,一些獨立的分析工具被設計為僅在測試環境中執行,而 Amazon CodeGuru Profiler 則被設計為在生產中的生產流量負載下持續執行,且不對應用程式產生影響。在排解生產中的操作問題 (包括在裸機主機上執行時),此功能很實用。
問:可以分析哪些應用程式類型?
Amazon CodeGuru Profiler 可分析 Amazon EC2 上託管的應用程式、Amazon ECS 和 Amazon EKS 上執行的容器化應用程式,以及 AWS Fargate 和 AWS Lambda 上執行的無伺服器應用程式。 此外,可採用內部部署方式執行 Amazon CodeGuru Profiler。
問:CodeGuru Profiler 如何影響 AWS Lambda 上託管的應用程式的效能?
Amazon CodeGuru Profiler 的代理程式使用分配給 AWS Lambda 函數的資源 (CPU、記憶體)。調整為在程序內執行緒執行時對應用程式效能的影響最小。若您的應用程式佔用 AWS Lambda 函數的大部分資源,則請評估增加的資源以使代理程式正常運作。
問:支援哪些程式設計語言?
Amazon CodeGuru Profiler 目前支援 Java、Python (預覽版) 和 JVM 語言 (例如 Scala 和 Kotlin)。
問:Amazon CodeGuru Profiler 如何運作?
Amazon CodeGuru Profiler 由三部分組成:代理程式、分析工具服務和智慧建議。該代理程式透過命令列上的應用程式啟動,並且作為應用程式一部分的程序內執行緒來執行。它從執行代理程式的每個服務執行個體中獲取資料,然後每五分鐘將資料傳送至分析工具服務,然後對其進行匯總。Amazon CodeGuru Profiler 則以互動式火焰圖發佈描述檔資料,讓您可以視覺化應用程式的效能。Amazon CodeGuru Profiler 還會持續掃描分析的資料,並將其與 Amazon 和效能工程最佳實務比較,以及在發現效能問題時主動向您提醒智慧建議。此外,它還使用機器學習來持續分析應用程式執行時間資料,在偵測到應用程式描述檔異常時發出警示並指向異常程式碼行。
Amazon CodeGuru Profiler 分析哪些資源,支援的語言有哪些?
CodeGuru 分析 Java和其他 JVM 語言的 CPU (作用中 CPU 和真實時鐘時間) 與記憶體 (堆積摘要),以及 Python 應用程式的 CPU (真實時鐘時間)。
問:我是否可取得同一應用程式的 CPU 和記憶體資訊?
可以,啟用記憶體分析并開始執行分析之後,CodeGuru Profiler 就會收集應用程式的 CPU 和記憶體資訊。僅需一個分析群組即可取得給定應用程式的 CPU 和記憶體資料。
問:Amazon CodeGuru Profiler 提供哪些記憶體分析資訊?
CodeGuru Profiler 提供堆積摘要資訊。堆積摘要可在給定的時間範圍內 (通常為 5 分鐘) 提供每種物件類型 (例如 String、int、char[]) 和自訂類型的記憶體使用率的合併檢視。CodeGuru 追蹤物件的累加大小及其計數。這些指標顯示在時間表圖中,這樣您就可以輕鬆發現每種物件類型的記憶體使用率趨勢和峰值。
問:堆積摘要資訊可以用來做什麼?
堆積摘要可在兩種情形中發揮作用。首先,您可確定可能的內存洩漏。一種或多種物件類型的記憶體使用率曲線不斷增長,這就表明可能存在洩漏,可能引發記憶體用盡錯誤和應用程式當機。第二種情形是您想要優化應用程式的記憶體量。在此情況下,每種物件類型的記憶體使用率明細資料可協助您知悉關注之處。例如,透過了解與特定物件類型相關聯的意外大量記憶體使用情況,您就可以將分析和優化工作集中于應用程式中負責分配和引用此類型物件的程式碼。