Amazon’s new ML service Amazon CodeGuru: Let machine learning optimize your Java code
The ML service Amazon CodeGuru has been released as a preview version. It provides automated code reviews—and is designed to help you find the most expensive bits of code and improve performance. Let’s see how that works and what features the new service offers.
Amazon CodeGuru is a recently launched chargeable machine learning service, currently still in preview mode. It was first announced in Andy Jassy’s keynote at Amazon’s AWS re:Invent 2019 conference that took place on December 2–6, 2019.
The service is comprised of two parts: Amazon CodeGuru Reviewer executes automated code reviews and provides code issue detection, whereas Amazon CodeGuru Profiler searches for ways to improve the application’s performance.
Amazon CodeGuru was trained on internal Amazon projects as well as more than 10,000 open source GitHub projects.
Amazon CodeGuru Reviewer
Amazon CodeGuru Reviewer is designed to find issues in code via automatic detection and provide recommendations on resolving them. It checks for AWS APIs and SDK usage, concurrency issues, resource leaks, and more.
For this, the Reviewer analyzes source code pull requests and flags found issues:
The CodeGuru Reviewer training is based on rule mining and supervised machine learning models, using logistic regression and neural networks. At the moment, it supports Java code that is stored in GitHub or AWS CodeCommit repositories.
Amazon CodeGuru Profiler
The second component of CodeGuru is Amazon CodeGuru Profiler, which is designed to identify the most “expensive” lines of code. Like the CodeGuru Reviewer, it currently supports Java applications. Amazon CodeGuru Profiler is comprised of an agent, a profiler service and intelligent recommendations.
The code analysis results are displayed in an interactive flame graph. The service offers recommendations, as shown here, that should help reduce CPU usage, cut costs and achieve performance improvements.
Amazon CodeGuru Profiler is compatible with applications hosted on Amazon EC2, Amazon ECS, Amazon EKS, and AWS Fargate.