Q: What is Amazon CodeGuru?
Amazon CodeGuru is a fully managed service that helps you proactively improve code quality and application performance with intelligent recommendations.
Q: What can I do with Amazon CodeGuru?
Leveraging machine-learning models and learned best practices, Amazon CodeGuru provides intelligent recommendations to improve code quality and optimize application performance. Amazon CodeGuru includes CodeGuru Reviewer and CodeGuru Profiler. CodeGuru Reviewer analyzes code pull requests on your code repositories and CodeGuru Profiler analyzes the performance of your applications as they run.
CodeGuru Reviewer automatically detects code issues during code reviews before they reach production, allowing you to proactively detect issues before they are deployed to production and improve overall application performance and quality. CodeGuru Profiler can identify when your application is consuming excessive CPU capacity on a logging routine instead of executing core business logic. CodeGuru Profiler is designed to profile your application continuously in production, with a minimal footprint.
Q: How do I get started with Amazon CodeGuru?
Amazon CodeGuru is publicly available in preview. You can start right now in the Amazon CodeGuru console.
To get started with Amazon CodeGuru Reviewer, log in to the CodeGuru Reviewer console where you can associate an existing code repository on GitHub or AWS CodeCommit. After a one-time setup, CodeGuru Reviewer begins analyzing code and providing code improvement recommendations directly within the pull request or code repository.
You can also start profiling your applications in minutes. To get started with Amazon CodeGuru Profiler, log in to the CodeGuru Profiler console where you can configure your application. Follow the step-by-step instructions and code provided by CodeGuru Profiler to install a small, low-profile agent in your application. You can let CodeGuru Profiler run continuously so it can proactively catch performance issues in your live applications.
Q: In which AWS Regions is Amazon CodeGuru available?
Amazon CodeGuru Reviewer
Q: What is Amazon CodeGuru Reviewer?
Amazon CodeGuru Reviewer is an automated code review service that identifies critical defects and deviation from AWS best practices for Java-based code. It scans the lines of code within a pull request or code repository and provides intelligent recommendations based on standards learned from major open source projects as well as Amazon codebase. CodeGuru Reviewer seamlessly integrates with existing code review workflows on widely-used source control systems, such as AWS CodeCommit and GitHub, and provides actionable recommendations for improving code quality.
Q: What programming languages and source code repositories are supported?
Amazon CodeGuru Reviewer currently supports Java code stored in GitHub and AWS CodeCommit repositories.
Q: What type of issues are detected by Amazon CodeGuru Reviewer?
Amazon CodeGuru Reviewer checks for concurrency issues, potential race conditions, un-sanitized inputs, inappropriate handling of sensitive data such as credentials, resource leaks, and also detects race conditions in concurrent code.
Q: How do I get started with Amazon CodeGuru Reviewer?
Visit the Amazon CodeGuru console to integrate CodeGuru Reviewer recommendations directly within your code pull requests. You can get started by visiting the CodeGuru console and following the steps to associate your AWS CodeCommit and GitHub repositories to start receiving CodeGuru Reviewer’s recommendations. CodeGuru Reviewer will need read-only access and the ability to post comments on the Pull Requests. Once enabled, CodeGuru Reviewer will automatically provide intelligent recommendations as comments on your pull requests generated for the connected repositories.
Q: Does Amazon CodeGuru Reviewer access my code?
Amazon CodeGuru Reviewer needs read-only access to your code for the purpose of generating recommendations. Your trust, privacy, and the security of your content are our highest priority and we implement appropriate controls, including encryption in transit, to prevent unauthorized access to, or disclosure of, your content and ensure that our use complies with our commitments to you. Please see the Data Privacy FAQ for more information.
Q: Does Amazon CodeGuru Reviewer persist a copy of my code?
No, Amazon CodeGuru Reviewer does not store your source code.
Q: How is Amazon CodeGuru Reviewer trained to provide intelligent recommendations?
Amazon CodeGuru Reviewer is trained using rule mining and supervised machine learning models that use a combination of logistic regression and neural networks.
For example, during training for deviation from AWS and industry best practices, CodeGuru Reviewer mines Amazon code bases using search techniques and locality sensitive models for pull requests that include AWS API calls. It looks at code changes intended to improve the quality of the code, and cross-references them against documentation data. The result is the creation of a new set of rules that Reviewer recommends to you as best practices when it reviews your code.
During training for resource and sensitive data leaks, it does a full code analysis for all code paths that use the resource or sensitive data, creates a feature set representing those, and then uses those as inputs for logistic regression models and convolutional neural networks (CNNs).
For both rule-based and machine learning-based models, CodeGuru Reviewer uses the feedback you provide as labels and iteratively improves the quality of code detectors.
Amazon CodeGuru Profiler
Q: What is Amazon CodeGuru Profiler?
Amazon CodeGuru Profiler helps developers easily understand the runtime behavior of their applications, improve performance, and decrease compute costs. CodeGuru Profiler analyzes the application runtime profile and provides intelligent recommendations and visualizations that guide developers on how to improve the performance of the most relevant parts of their code.
Q: I already have extensive logging and debugging integrated into my code. Do I still need to profile?
While “top-down” (logging and debugging) monitoring approach is a good practice, it is impractical for code efficiency analysis. Logging execution time only works for a limited set of scenarios, and it’s time-consuming to implement. This is where “bottom-up” runtime monitoring comes in: Amazon CodeGuru Profiler is designed to collect data on everything that happened in that application’s behavior, regardless of scenarios. CodeGuru Profiler uses a knowledge base of commonly encountered performance inefficiencies to automatically discover code patterns in your live application that impact its performance. Developers can then follow the provided recommendations to fix the issues.
Q: How does CodeGuru Profiler differ from traditional APMs and standalone profilers?
Traditional APMs provide useful data on monitoring, tracing and application performance. Amazon CodeGuru Profiler complements these APM capabilities by providing visualization of the application’s runtime data as well as actionable recommendations for the performance issues it discovers. CodeGuru Profiler enables you to easily see the parts of code that present the biggest opportunity for performance optimization and receive guidance on how to address them without the need to have a deep performance engineering background. Furthermore, some standalone profilers are designed to only run in test environments while CodeGuru Profiler was designed to continuously run in production, under production traffic loads, and without impact to the application. This is useful when troubleshooting operational issues in production, including when running on bare metal hosts.
Q: What types of applications can I profile?
Amazon CodeGuru Profiler works with applications hosted on Amazon EC2, containerized applications running on Amazon ECS and Amazon EKS, as well as serverless applications running on AWS Fargate.
Q: What programming languages are supported?
Amazon CodeGuru Profiler currently supports Java applications.
Q: How does CodeGuru Profiler work?
CodeGuru Profiler consists of three parts: an agent, the profiler service, and intelligent recommendations. The agent runs as an in-process thread as part of your application. It takes data from each of your service instances running the agent and sends them to the profiler service every 5 minutes, which then aggregates them. CodeGuru Profiler then publishes the profile data in interactive flame graphs that enable you to visualize the performance of your application. CodeGuru Profiler also continuously scans the profiled data and compares it against Amazon and performance engineering best practices and proactively alerts you with intelligent recommendations when performance issues are discovered.
Q: What is a profiling group?
A profiling group is a logical grouping created by you. It represents the boundary of one application. For example, in a microservices architecture, a profiling group would aggregate the profiles of the microservices that you have assigned to it, and produce one profile for all of them.