Understanding the code review tool Critique

Kenny DuMez
Kenny DuMez
Graphite software engineer

Critique is the code review tool used internally by Google to manage and improve code quality across its vast codebase. This guide explores the features, workflows, and best practices associated with Critique to provide insights into its utility for code review processes.

Critique is designed to facilitate thorough code reviews, promoting high code quality and collaborative development among teams. As a cornerstone of Google’s software development culture, this tool supports a streamlined code review process that enhances productivity and maintains Google’s standards for software excellence.

Critique includes several key features:

  • Inline comments: Allows reviewers to comment directly on code lines.
  • Automated suggestions: Machine learning algorithms suggest fixes for common issues.
  • Integration with other Google tools: Seamlessly works with Google’s version control and continuous integration tools.
  • Chained CLs: Critique offers support for chaining together stacks of change lists (equivalent to GitHub PRs), otherwise referred to as stacking.

Effective use of Critique involves adherence to several best practices:

  • Regular reviews: Ensure that all code is reviewed before merging.
  • Constructive feedback: Focus on providing actionable, respectful feedback.
  • Small code changes: Keep changes as small as possible. Small changes are easier to review, merge, and deploy.
  • Chained changes: Always utilize "chaining" or "stacking" to maximize delivery efficiency.

The Critique tool is tailored to facilitate detailed reviews and discussions about code changes:

  • Workflow integration: Critique integrates into the development workflow at Google, enabling smooth transitions between development, testing, and review.
  • Ergonomic user interface: Designed to be intuitive, allowing developers to easily navigate through changes and comments.

Inside Google, the code review process is a critical step in the development cycle, ensuring that:

  • Code meets quality standards: Every piece of code is examined for quality and maintainability.
  • Knowledge sharing: Reviews provide opportunities for team members to learn from each other.

The code review process using Critique involves several stages:

  • Submission: Developers submit their code for review.
  • Automated analysis: The system automatically flags potential issues.
  • Manual review: Team members manually review the code and provide feedback.

The workflow of Critique is designed to maximize efficiency:

  • Batch comments: Reviewers can make multiple comments before submitting them all at once.
  • Revision handling: The tool manages multiple revisions and updates each of them seamlessly in real time.
  • Chaining: Parallelizing development and code review with "chaining", similar to stacking, enables developers to work on subsequent changes without waiting for previous updates to be merged. This approach minimizes downtime, enhances throughput, and ensures that projects progress smoothly without being blocked by the code review process.

Automation also plays a significant role in the Critique ecosystem:

  • Automated linting: Code is automatically checked for style issues and potential bugs.
  • Integration with CI/CD: Automated tests are run to ensure that changes do not break existing functionality.

The review system in Critique is robust, offering:

  • Scalability: Critique is capable of handling sprawling codebases and large engineering teams.
  • Customizability: Teams can customize review processes to fit their specific needs.

Critique has several features that enable real-time collaboration:

  • Shared views: Team members can see who else is viewing or commenting on the same piece of code.
  • Discussion threads: Engineers can engage in focused discussions on specific issues or code segments.

Critique is part of a suite of tools designed to support high-quality software development:

  • Version control integration: Works closely with Google’s proprietary version control systems.
  • Build tools: Integrates with Google’s build systems to ensure that changes are viable.

While Critique is an internal tool exclusive to Google, there are other alternatives available to the public.

Tools like Sapling, Git Town, and Graphite allow engineers to leverage the stacking workflow in teams of all sizes.

Built upon the concepts popularized by Critique and Facebook's Phabricator, Graphite addresses common bottlenecks encountered in traditional review processes by allowing developers to stack pull requests. With Graphite, teams can parallelize their development and review processes, significantly cutting down the cycle time for features to move from conception to deployment. This method not only accelerates product iterations but also ensures that each piece of the project can be reviewed in manageable, logical chunks. This enhances code quality and maintains a high standard of review, even in complex and fast-paced development environments.

Graphite
Git stacked on GitHub

Stacked pull requests are easier to read, easier to write, and easier to manage.
Teams that stack ship better software, faster.

Or install our CLI.
Product Screenshot 1
Product Screenshot 2