From 2617e731eff9eb8ec6ecd4ddfba370498ed49cd5 Mon Sep 17 00:00:00 2001 From: Jason McIntosh Date: Thu, 19 Jun 2025 14:00:37 -0400 Subject: [PATCH 01/15] Add new configuration guides and reference material. --- docs/guides/configuration-overview.md | 56 + docs/guides/initial-configuration.md | 178 + docs/guides/organization-settings.md | 31 + docs/guides/repository-settings.md | 38 + docs/reference/configuration.md | 4029 ++++++++++++++++++++ sidebars.ts | 5 + static/img/reference/path-instructions.png | Bin 0 -> 114185 bytes 7 files changed, 4337 insertions(+) create mode 100644 docs/guides/configuration-overview.md create mode 100644 docs/guides/initial-configuration.md create mode 100644 docs/guides/organization-settings.md create mode 100644 docs/guides/repository-settings.md create mode 100644 docs/reference/configuration.md create mode 100644 static/img/reference/path-instructions.png diff --git a/docs/guides/configuration-overview.md b/docs/guides/configuration-overview.md new file mode 100644 index 00000000..df4b90f1 --- /dev/null +++ b/docs/guides/configuration-overview.md @@ -0,0 +1,56 @@ +--- +title: Configure CodeRabbit +description: Learn the basics of configuring CodeRabbit for your organization. +sidebar_label: Overview +--- + +After you finish [integrating CodeRabbit with your Git platform](/platforms/), +you can configure CodeRabbit to best fit the needs of your organization, team, +and individual code repositories. + +## About CodeRabbit configuration + +CodeRabbit has [a lot of configuration options](/reference/configuration), with default settings that are designed to meet most needs. CodeRabbit is designed to work "out +of the box": if you don't change any of the +configuration settings away from the defaults, then CodeRabbit starts automatically +adding code reviews to new pull requests in your repositories. + +However, understanding how to configure CodeRabbit lets you tune its behavior +to the particulars of your team's code. A few advantages of manually configuring +CodeRabbit inlcude the following: + +- Let CodeRabbit deliver its reviews more quickly by giving it guidance on the level of review detail you want. +- Get more meaningful code reviews by specifying the parts of your repository that CodeRabbit should read to gain context. +- Make sure that CodeRabbit works in compliance with your organiation's data-retention policies. + +## Configuration methods {#methods} + +You can configure CodeRabbit in several ways, from global organization settings +down to configuration directives for specific repositories: + +- Configure the default behavior of CodeRabbit + across your whole organization, using the CodeRabbit web UI. +- Configure the behavior of CodeRabbit when reviewing pull requests in a specific repository. You can do this in two ways: + - Use the CodeRabbitweb UI. + - Add a `coderabbit.yaml` file to the top level of your repository. + +To determine its behavior with a specific repository, CodeRabbit applies the configuration methods in the following order of precedence, from highest to lowest: + +1. The [repository's `coderabbit.yaml` file](/getting-started/configure-coderabbit), if it has one. +1. The [repository's settings](/guides/repository-settings) as they appear in the CodeRabbit web UI. +1. The [organization's settings](/guides/organization-settings) as they appear in the CodeRabbit web UI. + +If you are new to CodeRabbit, then we encourage you to explore the settings available through the CodeRabbit web UI +to become familiar with the options available to you, and their default values. + +## Initial configuration {#initial} + +The [Initial configuration guide](/guides/initial-configuration) tours you through several settings that we +recommend that you review after you set up CodeRabbit with your organization. + +## What's next {#whats-next} + +- [Set your organization preferences](/guides/organization-settings) +- [Set your repository preferences](/guides/repository-settings) +- [Add a configuration file](/getting-started/configure-coderabbit) +- [Initial configuration guide](/guides/initial-configuration) diff --git a/docs/guides/initial-configuration.md b/docs/guides/initial-configuration.md new file mode 100644 index 00000000..eecc4c79 --- /dev/null +++ b/docs/guides/initial-configuration.md @@ -0,0 +1,178 @@ +--- +title: Initial configuration guide +description: A tour through some initial configuration setup. +--- + +This page provides a tour through a selection of key CodeRabbit configuration options. + +For a general overview of how configuration in CodeRabbit works, see [Configure CodeRabbit](/guides/configuration-overview). For an exhaustive reference of all conifguration options, see [Configuration reference](/reference/configuration). + +## How to use this guide {#use} + +This guide walks you through several CodeRabbit configuration options that you +can set in order to tune CodeRabbit code review behavior for your repositories. + +Tthe default behavior and settings of CodeRabbit +works for most repositories, in most situations. However, becoming familiar with +the key settings described by this page can help you tune the behavior of +CodeRabbit for the specific needs of your team. You can use this guide when initially setting up your organization and repositories with CodeRabbit, or you can return to it after using CodeRabbit +for a while, when you feel ready to customize its behavior. + +Each section in the guide links to specific entries in the configuration reference. These entries specify where in either the CodeRabbit web UI or your `coderabbit.yaml` file to make the change. + +If you are new to CodeRabbit, then the web UI is the easiest way to explore the available settings. Once you are more comfortable with the repository-level changes you want to make, [we recommend adding `coderabbit.yaml` files to those repositories](/guides/setup-best-practices#yaml). + +## General settings {#general} + +These settings adjust overall CodeRabbit code review behavior. + +### Adjust code-review strictness {#profile} + +If you want CodeRabbit to apply a much stricter and more opinionated stance to its code reviews, then you can switch its _profile_ setting from `chill` to `assertive`. + +For more information, see [Profile](/reference/configuration#profile) in the configuration reference. + +### Configure pull request approval {#request-changes} + +By default, CodeRabbit doesn't formally mark pull requests as approved after it informally reports approval in a code review. This leaves the job of formal pull request approval entirely up to human reviewers. + +If you want to allow CodeRabbit to mark pull requests as approved, then you can enable the _request changes workflow_ setting. + +For more information, see [Request Changes Workflow](/reference/configuration#request-changes-workflow) in the configuration reference. + +### Configure chat-based issue creation {#chat-issues} + +You can [ask CodeRabbit to create issues for you](https://docs.coderabbit.ai/guides/issue-creation) in the comments of a pull request that it's reviewing. + +If you have integreated CodeRabbit with Jira or Linear, then you can tune this behavior a little more, restricting this feature to private repositories—the default setting—or disabling it entirely. + +For more information, see [Integrations](/reference/configuration#integrations) in the configuration reference. + +### Configure learnings {#learnings} + +You can teach CodeRabbit your team's review preferences by [stating them in plain language during code reviews](/integrations/knowledge-base#learnings). CodeRabbit remembers these these prefrences, and applies them to subsequent code reveiws in the same repository. + +If you don't want this feature, you can disable it. For more information, see [Learnings](/reference/configuration#learnings) in the configuration reference. + +## Data retention settings {#data-retention} + +These settings help you control how much data about your code that CodeRabbit retains. +CodeRabbit temporarily stores information about your repositories in order to deliver perform faster and more tailored reviews, but you can opt of these features if your organization has stricter data-retention policies. + +For more information about CodeRabbit data-retention policies, see +[Data privacy and security](/#data-privacy-and-security). + +### Enable or disable data retention globally {#data-retention-setting} + +:::note +This setting is available only at the organization level, and not per-repository. +::: + +Your CodeRabbit organization has a data-retention setting which acts as a master-switch to all CodeRabbit features that require it to store its own data about your repositries. If you disable data retention, then none of your repositories can use knowledge base or caching features, even if you configure those repositories to enable them. + +We recommend leaving this on. However, if your use of CodeRabbit requires strict data retention policy, then you can turn this off. + +For more information, see +[Data retention](/reference/configuration#data-retention) in the configuration reference. + +### Configure cache use {#cache} + +By defualt, CodeRabbit keeps a temporary cache of data about your repository in order to make subsquent code reviews faster. If this conflicts with your organization's data-retention policies, you can disable this feature. + +For more information, see +[Disable cache](/reference/configuration#disable-cache) in the configuration reference. + +### Configure knowledge base retention {#opt-out} + +By defualt, CodeRabbit keeps a temporary cache of data about your repository in order to make subsquent code reviews faster. If this conflicts with your organization's data-retention policies, you can disable this feature. + +For more information, see +[Disable cache](/reference/configuration#disable-cache) in the configuration reference. + +## Tune the length of code reviews {#content} + +By default, CodeRabbit writes thorough code reviews with several sub-sections. If you'd rather have CodeRabbit generated shorter reviews then you can change some of the following settings: + +- [Collapse walkthrough](/reference/configuration#collapse-walkthrough): wraps the detailed summary of proposed changes in collapsed-but-expandable container. (Off by default.) +- [Changed files summary](/reference/configuration#changed-files-summary): lists of files affected by this pull request. +- [Sequence diagrams](/reference/configuration#sequence-diagrams): includes a visual diagram of object interactions. +- [Assess linked issues](/reference/configuration#assess-linked-issues): assesses how well the pull request addresses any linked issues/ +- [Related issues](/reference/configuration#related-issues): lists issues found in your issue tracker that might be related to this pull request. +- [Related pull requests](/reference/configuration#realted-prs): lists pull requests that might be related to this pull request. +- [Suggested labels](/reference/configuration#suggested-labels): Suggests labels for this pull request. +- [Suggested reviewers](/reference/configuration#suggested-reveiwers): automatically suggest reviewers for PR +- [Poem](/reference/configuration#poem): generates a short poem about this pull request. + +## Adjust path-specific CodeRabbit behavior {#path} + +These settings direct CodeRabbit to treat various files and and locations in +your repository differently. + +### Add path filters {#filters} + +If your repository contains files or locations that CodeRabbit should disregard when preparing code reviews—or you want CodeRabbit to limit its consideration to only certain files—then you can define one or more _path filters_. Adding path filters to a large repository containing a lot of data, generated files, or other non-code content can let CodeRabbit work faster. + +For more information, see [Path filters](/reference/configuration#path-filters) in the CodeRabbit configuration reference. + +### Add general path instructions {#review-path} + +By default, CodeRabbit applies the same review instructions and contexts to all of the pull requests that it generates, regardless of the files involved. If you want to apply additional review instructions to certain files or loations in your repository, then you can provide CodeRabbit with _path instructions_. + +Each path instruction specifies a path specification and a set of instructions, the latter of which you express using natural language. For example, you can add a section like this to your repository's `coderabbit.yaml` file: + +``` +path_instructions: + - path: `src/**/*.{ts,tsx,js}` + instructions: + - Review the React.js, TypeScript, JavaScript code for best practices + - Check for common security vulnerabilities such as: + - SQL Injection + - Insecure dependencies + - Sensitive data exposure +``` + +For more information, see [Path instructions](/reference/configuration#path-instructions) in the configuration reference. + +### Add documentation or unit-test path instructions {#doc-path} + +Similar to the general path instructions described by the previous section, you +can define path-based instructions that + +## Set Automatic review behavior {#auto} + +By default, CodeRabbit automatically generates incremental code reviews for every new or updated pull request made against a repository's default branch. These settings listed in this section let you tune the behavior. + +### Configure incremental reviews {#incremental} + +By default, the automatic code reviews that CodeRabbit generates are _incremental_, +building on any previous reviews within the same pull request that CodeRabbit has already added. + +We recommend leaving this feature enabled, for faster reviews that are easier to read. But, if you'd rather always see full code reviews by default, you can disable this feature. + +For more information, see [Automatic incremental review](/reference/configuration#automatic-incremental-review) in the configuration reference. + +### Restrict automatic reviews to certain labels {#labels} + +If you want to be choosier about which pull requests CodeRabbit should automatically review, then you can restrict it to review only pull requests that you mark with certain labels. + +For more information, see [Labels](/reference/configuration#labels) in the configuration reference. + +### Automatically review more branches {#branches} + +If you want CodeRabbit to extend its automatic-review attention beyond the default branch of your repository—that is, `main` or `master`, usually—then you can give CodeRabbit a list of other branches that it is allowed to review. + +For more information, see [Branches](/reference/configuration#brancehs) in the configuration reference. + +## Configure tools {#tools} + +CodeRabbit has access to dozens of industry-standard open-source tools to help it perform its code reviews. These tools include a varity of linters, security analyzers, and other utilities. For a full list, see [List of supported tools](/tools/list). CodeRabbit chooses which tools to apply to a given code review on a case-by-case basis. + +By default, CodeRabbit considers every tool available to it during code reviews. If you want CodeRabbit to disregard certain tools, then you can disable them. + +Several tools that CodeRabbit uses also allow you to specify a path to a tool-specific configuration file in your repository. + +For more information, see [Tools](/reference/configuration#tools) in the configuration reference. + +## What's next {#whats-next} + +- [Setup and configuration best practices](/guides/setup-best-practices) diff --git a/docs/guides/organization-settings.md b/docs/guides/organization-settings.md new file mode 100644 index 00000000..afef8f3a --- /dev/null +++ b/docs/guides/organization-settings.md @@ -0,0 +1,31 @@ +--- +title: Set your orgnaization preferences +description: Learn the basics of configuring CodeRabbit for your organization. +--- + +This page is about managing the default settings of CodeRabbit for your +organization. For a general overview of configuring CodeRabbit, see [Configure CodeRabbit](/guides/configuration-overview). + +## About organization settings {#about} + +You can use the CodeRabbit web interface to set the default CodeRabbit configuration +for all Git repositories associated with your organization. There are two reasons +to review and set your organizational settings: + +- When you give CodeRabbit access to a new repository, CodeRabbit applies all of your + organizational settings to that repository as defaults. +- Some settings, such as [Data retention], apply only at the organizational level, with + no per-repository equivalent. + +## Browse and modify your organization settings {#modify} + +To view or modify your organizational settings, follow these steps: + +1. Visit [the CodeRabbit web interface](https://app.coderabbit.ai/settings/repositories). +1. In the sidebar, click **Organization Settings** > **Configuration**. +1. Browse and modify the settings as needed. If you do make changes, click **Apply Changes** when you are finished. + +## What's next {#whats-next} + +- [Initial configuration guide](/guides/initial-configuration) +- [Set your repository preferences](/guides/repository-settings) diff --git a/docs/guides/repository-settings.md b/docs/guides/repository-settings.md new file mode 100644 index 00000000..d5ac2588 --- /dev/null +++ b/docs/guides/repository-settings.md @@ -0,0 +1,38 @@ +--- +title: Set your repository preferences +description: Learn the basics of configuring CodeRabbit for your repository. +--- + +This page is about managing the settings of CodeRabbit for your +Git repository. For a general overview of configuring CodeRabbit, see [Configure CodeRabbit](/guides/configuration-overview). + +## About repository settings {#about} + +CodeRabbit provides two ways to manage its code-review behavior with each of your organization's repositories: + +1. View or modify your per-repository settings using the CodeRabbit web interface. +1. Add a `coderabbit.yaml` file to your repostory. + +Any settings that you define in the `coderabbit.yaml` file take precedence over +settings defined by the web interface. If your repository doesn't have a +`coderabbit.yaml` file, then CodeRabbit applies only the settings from the web +interface. + +## Browse and modify your settings using the web interface {#modify} + +To view or modify your organizational settings using the CodeRabbit web interface, follow these steps: + +1. Visit [the CodeRabbit web interface](https://app.coderabbit.ai/settings/repositories). +1. In the sidebar, click **Repositories**. +1. Click the gear-shaped **Settings** icon of the repository whose settings you want to view or modify. +1. Browse and modify the settings as needed. If you do make changes, click **Apply Changes** when you are finished. + +## Configure your repository with `coderabbit.yaml` + +For more information about creating and updating a `coderabbit.yaml` file in +your repository, see [Add a configuration file](getting-started/configure-coderabbit). + +## What's next {#whats-next} + +- [Configuration best practices](/guides/setup-best-practices#configuration) +- [Initial configuration guide](/guides/initial-configuration) diff --git a/docs/reference/configuration.md b/docs/reference/configuration.md new file mode 100644 index 00000000..7b6ca11e --- /dev/null +++ b/docs/reference/configuration.md @@ -0,0 +1,4029 @@ +--- +title: Configuration reference +description: Complete reference for all CodeRabbit configuration options. +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +This reference guide lists all of the code review configuration options that +CodeRabbit makes available. + +For an overview of how configuration works with CodeRabbit, see [Configure CodeRabbit](/guides/configuration-overview). + +## How to use this reference {#how-to} + +Each entry in this reference corresponds to a single CodeRabbit configuration setting, including an informational table and a description of what the setting does. The tables have two views, which you can select with a tab: + +- The **Web UI** tab displays the location and default value of the setting in the CodeRabbit web interface, for both [organization settings](/guides/organization-settings) and [repository settings](/guides/repository-settings). +- The **coderabbit.yaml** tab displays information about the field's location and datatype in [your repository's `coderabbit.yaml` file](/getting-started/configure-coderabbit). + +## Global Settings + +### Data retention + + + + + + + + + + + + +
LocationGeneral > Data Retention
Defaulttrue
+
+ + _This setting can be defined only in the web UI settings for your + organization._ + +
+ +If `true`, then CodeRabbit is allowed to retain enough data about your code +review history in order to enable the following features: + +- **Cacheing**: allows CodeRabbit to store data about your repository between + code reviews, improving the speed of subsequent reviews. +- **Knowledge base**: allows CodeRabbit to maintain its own database about + your repository and your team's code review preferences, which can improve + the quality and specificity of code reviews generated by CodeRabbit. + +If your organization operates under strict data-retention policies, then you can +disable data retention. Doing so immediately deletes any cache or knowledge-base data that CodeRabbit has collected for your organization, and prevents CodeRabbit from +retaining further cache or knowledge-base data. + +If you re-enable data retention, then CodeRabbit re-enables these features, and resumes collecting cache and knowledge-base data. + +### Early Access + + + + + + + + + + + + +
LocationGeneral > Early Access
Defaultfalse
+
+ + + + + + + + + + + + + + +
Field`early_access`
Datatypeboolean
Defaultfalse
+
+
+ +If enabled, then CodeRabbit lets you use early-access features in your +code reviews. + +### Enable Free Tier + + + + + + + + + + + + +
LocationGeneral > Enable Free Tier
Defaulttrue
+
+ + + + + + + + + + + + + + +
Field`enable_free_tier`
Datatypeboolean
Defaulttrue
+
+
+ +If enabled, then CodeRabbit allows free tier features for users not on a paid plan. + +For more information about payment tiers and features, see [Pricing](https://www.coderabbit.ai/pricing). + +### Language + + + + + + + + + + + + +
LocationGeneral > Language
Defaulten-US
+
+ + + + + + + + + + + + + + +
Field`language`
Datatypestring
Default"en-US"
+
+
+ +Defines the written language that CodeRabbit presents its review comments in. Defaults +to American English. + +### Tone Instructions + + + + + + + + + + + + +
LocationGeneral > Tone Instructions
Default
+
+ + + + + + + + + + + + + + +
Field`tone_instructions`
Datatypestring
Default
+
+
+ +A natural-language description of the tone of voice that CodeRabbit should +apply to its review instructions, if you want a tone different from its +default. + +A few possible examples: + +- `Use an encouraging, supportive tone that celebrates good practices while gently suggesting improvements.` +- `Adopt a concise, matter-of-fact style that gets straight to the point without unnecessary pleasantries.` +- `Deliver all review comments in the style of a televised nature documentary, perhaps with David Attenborough hosting.` + +## Review + +### Basic Review Settings + +#### Abort On Close + + + + + + + + + + + + +
LocationReview > Settings > Abort On Close
Defaulttrue
+
+ + + + + + + + + + + + + + +
Field`reviews.abort_on_close`
Datatypeboolean
Defaulttrue
+
+
+ +Abort the in-progress review if the pull request is closed or merged. + +#### Assess Linked Issues + + + + + + + + + + + + +
LocationReview > Settings > Assess Linked Issues
Defaulttrue
+
+ + + + + + + + + + + + + + +
Field`reviews.assess_linked_issues`
Datatypeboolean
Defaulttrue
+
+
+ +If enabled, then the reviews that CodeRabbit generates include assessments of how well a proposed code change issues that the pull request refers to. CodeRabbit considers issues referred to by number in the following locations: + +- The title of the pull request. +- The description of the pull request. +- (GitHub only) The **Development** field of the pull request. + +Besides this setting, issue assessment requires at least one of the following: + +- You use the built-in issue managemet system of GitHub or GitLab. +- You have integrated CodeRabbit with an external issue manager. + +For more information, see [Integrate issue tracking](/integrations/issue-integrations/) +and [Let CodeRabbit read your issue trakcer](https://docs.coderabbit.ai/guides/setup-best-practices#issues). + +#### Auto Apply Labels + + + + + + + + + + + + +
LocationReview > Settings > Auto Apply Labels
Defaultfalse
+
+ + + + + + + + + + + + + + +
Field`reviews.auto_apply_labels`
Datatypeboolean
Defaultfalse
+
+
+ +Automatically apply the suggested labels to the PR/MR. + +#### Auto Assign Reviewers + + + + + + + + + + + + +
LocationReview > Settings > Auto Assign Reviewers
Defaultfalse
+
+ + + + + + + + + + + + + + +
Field`reviews.auto_assign_reviewers`
Datatypeboolean
Defaultfalse
+
+
+ +Automatically assign suggested reviewers to the pull request + +#### Auto Title Instructions + + + + + + + + + + + + +
LocationReview > Settings > Auto Title Instructions
Default
+
+ + + + + + + + + + + + + + +
Field`reviews.auto_title_instructions`
Datatypestring
Default
+
+
+ +Custom instructions for auto-generating the PR/MR title. + +#### Auto Title Placeholder + + + + + + + + + + + + +
LocationReview > Settings > Auto Title Placeholder
Default@coderabbitai
+
+ + + + + + + + + + + + + + +
Field`reviews.auto_title_placeholder`
Datatypestring
Default"@coderabbitai"
+
+
+ +Add this keyword in the PR/MR title to auto-generate the title. + +#### Changed Files Summary + + + + + + + + + + + + +
LocationReview > Settings > Changed Files Summary
Defaulttrue
+
+ + + + + + + + + + + + + + +
Field`reviews.changed_files_summary`
Datatypeboolean
Defaulttrue
+
+
+ +Generate a summary of the changed files in the walkthrough. + +#### Collapse Walkthrough + + + + + + + + + + + + +
LocationReview > Settings > Collapse Walkthrough
Defaultfalse
+
+ + + + + + + + + + + + + + +
Field`reviews.collapse_walkthrough`
Datatypeboolean
Defaultfalse
+
+
+ +Generate walkthrough in a markdown collapsible section. + +#### Commit Status + + + + + + + + + + + + +
LocationReview > Settings > Commit Status
Defaulttrue
+
+ + + + + + + + + + + + + + +
Field`reviews.commit_status`
Datatypeboolean
Defaulttrue
+
+
+ +Set the commit status to 'pending' when the review is in progress and 'success' when it is complete. + +#### Disable Cache + + + + + + + + + + + + +
LocationReview > Settings > Disable Cache
Defaultfalse
+
+ + + + + + + + + + + + + + +
Field`reviews.disable_cache`
Datatypeboolean
Defaultfalse
+
+
+ +Activate this setting to disallow CodeRabbit from caching your repository's code and dependencies. This forces CodeRabbit to download the code and dependencies fresh from the repository for every code review that it performs. + +When caching is allowed, then CodeRabbit stores a cache of code and metadata from +your repostory for up to seven days after its most recent code review. This cache +lets CodeRabbit save time and effort in between subsquent reviews of the same +repository. + +We recommend leaving this setting off, which allows caching, and can speed up +code reviews. For more information, see +[Trust the defaults](https://docs.coderabbit.ai/guides/setup-best-practices#defaults). + +:::note +The [Data Retention](#data-retention) setting overrides this one. If you disable +all data retention, then your repositories won't keep a cache. +::: + +#### Fail Commit Status + + + + + + + + + + + + +
LocationReview > Settings > Fail Commit Status
Defaultfalse
+
+ + + + + + + + + + + + + + +
Field`reviews.fail_commit_status`
Datatypeboolean
Defaultfalse
+
+
+ +Set the commit status to 'failure' when the PR cannot be reviewed by CodeRabbit for any reason. + +#### High Level Summary + + + + + + + + + + + + +
LocationReview > Settings > High Level Summary
Defaulttrue
+
+ + + + + + + + + + + + + + +
Field`reviews.high_level_summary`
Datatypeboolean
Defaulttrue
+
+
+ +Generate a high level summary of the changes in the PR/MR description. + +#### High Level Summary In Walkthrough + + + + + + + + + + + + +
LocationReview > Settings > High Level Summary In Walkthrough
Defaultfalse
+
+ + + + + + + + + + + + + + +
Field`reviews.high_level_summary_in_walkthrough`
Datatypeboolean
Defaultfalse
+
+
+ +Include the high level summary in the walkthrough comment. + +#### High Level Summary Placeholder + + + + + + + + + + + + +
LocationReview > Settings > High Level Summary Placeholder
Default@coderabbitai summary
+
+ + + + + + + + + + + + + + +
Field`reviews.high_level_summary_placeholder`
Datatypestring
Default"@coderabbitai summary"
+
+
+ +Placeholder in the PR/MR description that gets replaced with the high level summary. + +#### Labeling Instructions + + + + + + + + + + + + +
LocationReview > Settings > Labeling Instructions
Default_Empty array_
+
+ + + + + + + + + + + + + + +
Field`reviews.labeling_instructions`
Datatypearray
Default[]
+
+
+ +Provide guidelines for suggesting labels for the PR/MR. When specific labels or instructions are provided, only those labels are considered, though previous examples are still used to inform the suggestions. If no such labels are provided, suggestions are based solely on previous PR/MRs. + +#### Path Filters + + + + + + + + + + + + +
LocationReview > Settings > Path Filters
Default_Empty array_
+
+ + + + + + + + + + + + + + +
Field`reviews.path_filters`
Datatypearray
Default[]
+
+
+ +Path filters, if defined, restrict the portions of your repository that CodeRabbit +uses for context when preparing code reviews. + +You can define a list of path specifications, relative to the root of your +repository, to use as path filters. These path specifications can use extended +glob patterns. + +If you define at least one path filter, then CodeRabbit restricts its reviews +only to files whose paths meet all of the following criteria: + +- The file must match at least one filter that doesn't begin with a leading `!` character. +- The file must match none of the filters that begin with a leading `!` character. + +For example, the following list of path filters instructs CodeRabbit to limit its reviews +only to files found in the `src` top-level directory, but exclude any `.txt` or `.js` +files: + +``` +src/** +!**/*.{txt,js} +``` + +:::note +Under the hood, CodeRabbit uses your provided list of path filters as an argument +to [`git sparse-checkout`](https://git-scm.com/docs/git-sparse-checkout) when preparing its own copy of your repository for code review +context. +::: + +We strongly recommend defining path filters for any repositories that contain +a significant amount of generated files or data that has no contextual bearing on code reviews. +CodeRabbit can work faster if it can ignore files that aren't relevant to pull requests. +For more information, see [Speed up reviews by adding path filters](https://docs.coderabbit.ai/guides/setup-best-practices#filters). + +#### Path Instructions + + + + + + + + + + + + +
LocationReview > Settings > Path Instructions
Default_Empty array_
+
+ + + + + + + + + + + + + + +
Field`reviews.path_instructions`
Datatypearray
Default[]
+
+
+ +Path instructions are additional sets of instructions, expressed in natural lanaguge, +that you provide to CodeRabbit for reveiwing certain files in your repository. + +You associate each set of instuctions with a file path relative to the root +of your repository. Your path specification can use extended glob patterns. + +The following example defines a set of path instructions for all TypeScript +and JavaScript files in a reposistory's `src` directory: + + + + ![An example path instruction](/img/reference/path-instructions.png) + + +``` +path_instructions: + - path: src/**/*.{ts,tsx,js} + instructions: + - Review the React.js/TypeScript/JavaScript code for best practices + - Check for common security vulnerabilities such as: + - SQL Injection + - Insecure dependencies + - Sensitive data exposure +``` + + + +For further examples of path instructions specific to various programming langauges, +see [the `awesome-coderabbit` public repository](https://github.com/coderabbitai/awesome-coderabbit/tree/main/configs). + +#### Poem + + + + + + + + + + + + +
LocationReview > Settings > Poem
Defaulttrue
+
+ + + + + + + + + + + + + + +
Field`reviews.poem`
Datatypeboolean
Defaulttrue
+
+
+ +Generate a poem in the walkthrough comment. + +#### Profile {#profile} + + + + + + + + + + + + +
LocationReview > Settings > Profile
Defaultchill
+
+ + + + + + + + + + + + + + +
Field`reviews.profile`
Datatypestring
Default"chill"
+
+
+ +An overall selector for the level of detail that CodeRabbit should apply to +its reviews. Valid values are the following: + +- **`Chill`**: CodeRabbit provides its usual level of commentary. +- **`Assertive`**: CodeRabbit provides significantly deeper or more verbose commentary, + as much as possible. + +The `Chill` profile is the default setting, and is appropriate for most coding +contexts. The `Assertive` profile mode can get quite nitpicky in some circumstances. We recommend leaving this setting in `Chill`, unless a wordier level of code critique would benefit your team's work. + +#### Related Issues + + + + + + + + + + + + +
LocationReview > Settings > Related Issues
Defaulttrue
+
+ + + + + + + + + + + + + + +
Field`reviews.related_issues`
Datatypeboolean
Defaulttrue
+
+
+ +Include possibly related issues in the walkthrough. + +#### Related PRs + + + + + + + + + + + + +
LocationReview > Settings > Related PRs
Defaulttrue
+
+ + + + + + + + + + + + + + +
Field`reviews.related_prs`
Datatypeboolean
Defaulttrue
+
+
+ +Include possibly related pull requests in the walkthrough. + +#### Request Changes Workflow + + + + + + + + + + + + +
LocationReview > Settings > Request Changes Workflow
Defaultfalse
+
+ + + + + + + + + + + + + + +
Field`reviews.request_changes_workflow`
Datatypeboolean
Defaultfalse
+
+
+ +If enabled, then CodeRabbit marks a pull request as approved once all comments +that CodeRabbit made have been resolved. + +Enable this setting if you want to have CodeRabbit's approval count towards +a minimum number of approvals that your have configured your Git platform +to require before a pull request can be merged. + +#### Review Status + + + + + + + + + + + + +
LocationReview > Settings > Review Status
Defaulttrue
+
+ + + + + + + + + + + + + + +
Field`reviews.review_status`
Datatypeboolean
Defaulttrue
+
+
+ +Post review details on each review. Additionally, post a review status when a review is skipped in certain cases. + +#### Sequence Diagrams + + + + + + + + + + + + +
LocationReview > Settings > Sequence Diagrams
Defaulttrue
+
+ + + + + + + + + + + + + + +
Field`reviews.sequence_diagrams`
Datatypeboolean
Defaulttrue
+
+
+ +Generate sequence diagrams in the walkthrough. + +#### Suggested Labels + + + + + + + + + + + + +
LocationReview > Settings > Suggested Labels
Defaulttrue
+
+ + + + + + + + + + + + + + +
Field`reviews.suggested_labels`
Datatypeboolean
Defaulttrue
+
+
+ +Suggest labels based on the changes in the pull request in the walkthrough. + +#### Suggested Reviewers + + + + + + + + + + + + +
LocationReview > Settings > Suggested Reviewers
Defaulttrue
+
+ + + + + + + + + + + + + + +
Field`reviews.suggested_reviewers`
Datatypeboolean
Defaulttrue
+
+
+ +Suggest reviewers based on the changes in the pull request in the walkthrough. + +### Automatic Review + +#### Enable Automatic Review + + + + + + + + + + + + +
LocationReview > Auto Review > Automatic Review
Defaulttrue
+
+ + + + + + + + + + + + + + +
Field`reviews.auto_review.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +If enabled, then CodeRabbit reviews new and updated pull requests automatically. For more information, see [Automatically review pull requests](https://docs.coderabbit.ai/guides/code-review-overview#review). + +If disabled, then CodeRabbit performs only reviews that you request manually. For more information on manual review commands, see [Manually request code reviews](/guides/code-review-overview#review). + +Disabling this setting also effectively disables all of the other settings listed in this section. + +#### Automatic Incremental Review + + + + + + + + + + + + +
LocationReview > Auto Review > Automatic Incremental Review
Defaulttrue
+
+ + + + + + + + + + + + + + +
Field`reviews.auto_review.auto_incremental_review`
Datatypeboolean
Defaulttrue
+
+
+ +If enabled, then CodeRabbit automatically performs incremental reviews of pull requests that it has already reviewed, and you must manually request full reviews. + +If disabled, then CodeRabbit always performs full reviews, and you must manually request +incremental reviews. + +For more information on manual review commands, see [Manually request code reviews](/guides/code-review-overview#review). + +We recommend leaving this option enabled. + +#### Base Branches + + + + + + + + + + + + +
LocationReview > Auto Review > Base Branches
Default_Empty array_
+
+ + + + + + + + + + + + + + +
Field`reviews.auto_review.base_branches`
Datatypearray
Default[]
+
+
+ +A list of branches that CodeRabbit performs automatic code reviews on, other +than the reposiorty's main branch (usually `main` or `master`.) + +For example, if you add `staging` as a base branch, then CodeRabbit automatically +reviews pull requests on both your repository's default branch and its `staging` branch. + +#### Drafts + + + + + + + + + + + + +
LocationReview > Auto Review > Drafts
Defaultfalse
+
+ + + + + + + + + + + + + + +
Field`reviews.auto_review.drafts`
Datatypeboolean
Defaultfalse
+
+
+ +If defined, then CodeRabbit automatically reviews pull requests marked as a draft +in your Git platform. + +#### Ignore Title Keywords + + + + + + + + + + + + +
LocationReview > Auto Review > Ignore Title Keywords
Default_Empty array_
+
+ + + + + + + + + + + + + + +
Field`reviews.auto_review.ignore_title_keywords`
Datatypearray
Default[]
+
+
+ +Ignore reviewing if the title of the pull request contains any of these keywords (case-insensitive). + +#### Labels + + + + + + + + + + + + +
LocationReview > Auto Review > Labels
Default_Empty array_
+
+ + + + + + + + + + + + + + +
Field`reviews.auto_review.labels`
Datatypearray
Default[]
+
+
+ +If defined with at least one label, then CodeRabbit automatically reviews +only pull requests that have at least one of the labels in this list. + +In this case, you can manually request reviews of pull requests lacking a qualifying label. For more information on manual review commands, see [Manually request code reviews](/guides/code-review-overview#review). + +### Finishing Touches + +#### Docstrings + + + + + + + + + + + + +
LocationReview > Finishing Touches > Docstrings
Defaulttrue
+
+ + + + + + + + + + + + + + +
Field`reviews.finishing_touches.docstrings.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +If enabled, then CodeRabbit can generate inline documentation for functions +added in a pull request. For more information, see [Docstrings](/finishing-touches/docstrings). + +#### Unit Tests + + + + + + + + + + + + +
LocationReview > Finishing Touches > Unit Tests
Defaulttrue
+
+ + + + + + + + + + + + + + +
Field`reviews.finishing_touches.unit_tests.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +If enabled, then CodeRabbit can generate unit tests for code +added in a pull request. For more information, see [Unit Test Generation](/finishing-touches/unit-test-generation). + +## Chat + +### Auto Reply + + + + + + + + + + + + +
LocationChat > Auto Reply
Defaulttrue
+
+ + + + + + + + + + + + + + +
Field`chat.auto_reply`
Datatypeboolean
Defaulttrue
+
+
+ +Enable the bot to reply automatically without requiring the user to tag it. + +### Integrations + +### Jira + + + + + + + + + + + + +
LocationChat > Jira
Defaultauto
+
+ + + + + + + + + + + + + + +
Field`chat.integrations.jira.usage`
Datatypestring
Default"auto"
+
+
+ +Enable the Jira integration for opening issues, etc. 'auto' disables the integration for public repositories. + +### Linear + + + + + + + + + + + + +
LocationChat > Linear
Defaultauto
+
+ + + + + + + + + + + + + + +
Field`chat.integrations.linear.usage`
Datatypestring
Default"auto"
+
+
+ +Enable the Linear integration for opening issues, etc. 'auto' disables the integration for public repositories. + +## Knowledge Base + +### Basic settings + +#### Opt Out + + + + + + + + + + + + +
LocationKnowledge Base > Opt Out
Defaultfalse
+
+ + + + + + + + + + + + + + +
Field`knowledge_base.opt_out`
Datatypeboolean
Defaultfalse
+
+
+ +Disable all knowledge base features that require data retention. If you opt out after opting in, all of your existing knowledge base data will be removed from the system. + +#### Pull Requests + + + + + + + + + + + + +
LocationKnowledge Base > Pull Requests
Defaultauto
+
+ + + + + + + + + + + + + + +
Field`knowledge_base.pull_requests.scope`
Datatypestring
Default"auto"
+
+
+ +Specify the scope of pull requests to use for the knowledge base. 'local' uses the repository's pull requests, 'global' uses the organization's pull requests, and 'auto' uses repository's pull requests for public repositories and organization's pull requests for private repositories. + +#### Web Search + + + + + + + + + + + + +
LocationKnowledge Base > Web Search
Defaulttrue
+
+ + + + + + + + + + + + + + +
Field`knowledge_base.web_search.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +Enable the web search integration. + +### Issues + + + + + + + + + + + + +
LocationKnowledge Base > Issues
Defaultauto
+
+ + + + + + + + + + + + + + +
Field`knowledge_base.issues.scope`
Datatypestring
Default"auto"
+
+
+ +Specify the scope of git platform (GitHub/GitLab) issues to use for the knowledge base. 'local' uses the repository's issues, 'global' uses the organization's issues, and 'auto' uses repository's issues for public repositories and organization's issues for private repositories. + +### Jira + +#### Enable Jira + + + + + + + + + + + + +
LocationKnowledge Base > Jira
Defaultauto
+
+ + + + + + + + + + + + + + +
Field`knowledge_base.jira.usage`
Datatypestring
Default"auto"
+
+
+ +Enable the Jira knowledge base integration. 'auto' disables the integration for public repositories. + +#### Project Keys + + + + + + + + + + + + +
LocationKnowledge Base > Project Keys
Default_Empty array_
+
+ + + + + + + + + + + + + + +
Field`knowledge_base.jira.project_keys`
Datatypearray
Default[]
+
+
+ +Specify the Jira project keys to use for the knowledge base. + +### Learnings + + + + + + + + + + + + +
LocationKnowledge Base > Learnings
Defaultauto
+
+ + + + + + + + + + + + + + +
Field`knowledge_base.learnings.scope`
Datatypestring
Default"auto"
+
+
+ +Specify the scope of learnings to use for the knowledge base. 'local' uses the repository's learnings, 'global' uses the organization's learnings, and 'auto' uses repository's learnings for public repositories and organization's learnings for private repositories. + +### Linear + +#### Enable Linear + + + + + + + + + + + + +
LocationKnowledge Base > Linear
Defaultauto
+
+ + + + + + + + + + + + + + +
Field`knowledge_base.linear.usage`
Datatypestring
Default"auto"
+
+
+ +Enable the Linear knowledge base integration. 'auto' disables the integration for public repositories. + +#### Team Keys + + + + + + + + + + + + +
LocationKnowledge Base > Team Keys
Default_Empty array_
+
+ + + + + + + + + + + + + + +
Field`knowledge_base.linear.team_keys`
Datatypearray
Default[]
+
+
+ +Specify the Linear team keys (identifiers) to use for the knowledge base. E.g. 'ENG' + +## Code Generation + +### Code Generation Language + + + + + + + + + + + + +
LocationCode Generation > Language
Defaulten-US
+
+ + + + + + + + + + + + + + +
Field`code_generation.docstrings.language`
Datatypestring
Default"en-US"
+
+
+ +Set the language for docstrings by using the corresponding ISO language code. + +### Docstring Path Instructions + + + + + + + + + + + + +
LocationCode Generation > Path Instructions
Default_Empty array_
+
+ + + + + + + + + + + + + + +
Field`code_generation.docstrings.path_instructions`
Datatypearray
Default[]
+
+
+ +Provide additional guidelines for docstring generation based on file paths. + +### Unit Test Path Instructions + + + + + + + + + + + + +
LocationCode Generation > Unit Test Generation
Default_Empty array_
+
+ + + + + + + + + + + + + + +
Field`code_generation.unit_tests.path_instructions`
Datatypearray
Default[]
+
+
+ +Provide additional guidelines for unit test generation based on file paths. + +## Tools + +CodeRabbit integrates with various third-party tools for enhanced code analysis. + +### actionlint + +actionlint is a static checker for GitHub Actions workflow files. + +#### Enable actionlint + + + + + + + + + + + + +
LocationReview > Tools > Enable actionlint
Defaulttrue
+
+ + + + + + + + + + + + + + +
Field`reviews.tools.actionlint.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +is a static checker for GitHub Actions workflow files. + +### ast-grep + +Enable ast-grep | ast-grep is a code analysis tool that helps you to find patterns in your codebase using abstract syntax trees patterns. | v0.38.1 + +#### Essential Rules + + + + + + + + + + + + +
LocationReview > Tools > ast-grep > Essential Rules
Defaulttrue
+
+ + + + + + + + + + + + + + +
Field`reviews.tools.ast-grep.essential_rules`
Datatypeboolean
Defaulttrue
+
+
+ +Use ast-grep essentials package. + +#### Packages + + + + + + + + + + + + +
LocationReview > Tools > ast-grep > Packages
Default_Empty array_
+
+ + + + + + + + + + + + + + +
Field`reviews.tools.ast-grep.packages`
Datatypearray
Default[]
+
+
+ +Predefined packages to be used. + +#### Rule Dirs + + + + + + + + + + + + +
LocationReview > Tools > ast-grep > Rule Dirs
Default_Empty array_
+
+ + + + + + + + + + + + + + +
Field`reviews.tools.ast-grep.rule_dirs`
Datatypearray
Default[]
+
+
+ +List of rules directories. + +#### Util Dirs + + + + + + + + + + + + +
LocationReview > Tools > ast-grep > Util Dirs
Default_Empty array_
+
+ + + + + + + + + + + + + + +
Field`reviews.tools.ast-grep.util_dirs`
Datatypearray
Default[]
+
+
+ +List of utils directories. + +### Biome + +Biome is a fast formatter, linter, and analyzer for web projects. + +#### Enable Biome + + + + + + + + + + + + +
LocationReview > Tools > Enable Biome
Defaulttrue
+
+ + + + + + + + + + + + + + +
Field`reviews.tools.biome.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +Biome is a fast formatter, linter, and analyzer for web projects. + +### Brakeman + +Brakeman is a static analysis security vulnerability scanner for Ruby on Rails applications. | v7.0.2 + +#### Enable Brakeman + + + + + + + + + + + + +
LocationReview > Tools > Enable Brakeman
Defaulttrue
+
+ + + + + + + + + + + + + + +
Field`reviews.tools.brakeman.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +Brakeman is a static analysis security vulnerability scanner for Ruby on Rails applications. + +### Buf + +Buf offers linting for Protobuf files. + +#### Enable Buf + + + + + + + + + + + + +
LocationReview > Tools > Enable Buf
Defaulttrue
+
+ + + + + + + + + + + + + + +
Field`reviews.tools.buf.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +Buf offers linting for Protobuf files. + +### checkmake + +checkmake is a linter for Makefiles. + +#### Enable checkmake + + + + + + + + + + + + +
LocationReview > Tools > Enable checkmake
Defaulttrue
+
+ + + + + + + + + + + + + + +
Field`reviews.tools.checkmake.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +checkmake is a linter for Makefiles. + +### Checkov + +Checkov is a static code analysis tool for infrastructure-as-code files. + +#### Enable Checkov + + + + + + + + + + + + +
LocationReview > Tools > Enable Checkov
Defaulttrue
+
+ + + + + + + + + + + + + + +
Field`reviews.tools.checkov.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +Checkov is a static code analysis tool for infrastructure-as-code files. + +### CircleCI + +CircleCI tool is a static checker for CircleCI config files. + +#### Enable CircleCI + + + + + + + + + + + + +
LocationReview > Tools > Enable CircleCI
Defaulttrue
+
+ + + + + + + + + + + + + + +
Field`reviews.tools.circleci.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +CircleCI tool is a static checker for CircleCI config files. + +### Clippy + +Clippy is a collection of lints to catch common mistakes and improve your Rust code. + +#### Enable Clippy + + + + + + + + + + + + +
LocationReview > Tools > Enable Clippy
Defaulttrue
+
+ + + + + + + + + + + + + + +
Field`reviews.tools.clippy.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +Clippy is a collection of lints to catch common mistakes and improve your Rust code. + +### Cppcheck + +Cppcheck is a static code analysis tool for the C and C++ programming languages. + +#### Enable Cppcheck + + + + + + + + + + + + +
LocationReview > Tools > Enable Cppcheck
Defaulttrue
+
+ + + + + + + + + + + + + + +
Field`reviews.tools.cppcheck.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +Cppcheck is a static code analysis tool for the C and C++ programming languages. + +### detekt + +Detekt is a static code analysis tool for Kotlin files. + +#### Config File + + + + + + + + + + + + +
LocationReview > Tools > detekt > Config File
Default_No default_
+
+ + + + + + + + + + + + + + +
Field`reviews.tools.detekt.config_file`
Datatypestring
Default_No default_
+
+
+ +Optional path to the detekt configuration file relative to the repository. + +#### Enable detekt + + + + + + + + + + + + +
LocationReview > Tools > detekt > Enable
Defaulttrue
+
+ + + + + + + + + + + + + + +
Field`reviews.tools.detekt.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +detekt is a static code analysis tool for Kotlin files. + +### dotenv-linter + +dotenv-linter is a tool for checking and fixing .env files for problems and best practices + +#### Enable dotenv-linter + + + + + + + + + + + + +
LocationReview > Tools > Enable dotenv-linter
Defaulttrue
+
+ + + + + + + + + + + + + + +
Field`reviews.tools.dotenvLint.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +dotenv-linter is a tool for checking and fixing .env files for problems and best practices + +### ESLint + +ESLint is a static code analysis tool for JavaScript files. + +#### Enable ESLint + + + + + + + + + + + + +
LocationReview > Tools > Enable ESLint
Defaulttrue
+
+ + + + + + + + + + + + + + +
Field`reviews.tools.eslint.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +ESLint is a static code analysis tool for JavaScript files. + +### GitHub Checks + +GitHub Checks integration configuration. + +#### Enable GitHub Checks + + + + + + + + + + + + +
LocationReview > Tools > GitHub Checks > Enable
Defaulttrue
+
+ + + + + + + + + + + + + + +
Field`reviews.tools.github-checks.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +Enable integration, defaults to true + +#### Timeout Ms + + + + + + + + + + + + +
LocationReview > Tools > GitHub Checks > Timeout Ms
Default90000
+
+ + + + + + + + + + + + + + +
Field`reviews.tools.github-checks.timeout_ms`
Datatypenumber
Default90000
+
+
+ +Time in milliseconds to wait for all GitHub Checks to conclude. + +### Gitleaks + +Gitleaks is a secret scanner. + +#### Enable Gitleaks + + + + + + + + + + + + +
LocationReview > Tools > Enable Gitleaks
Defaulttrue
+
+ + + + + + + + + + + + + + +
Field`reviews.tools.gitleaks.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +Gitleaks is a secret scanner. + +### golangci-lint + +golangci-lint is a fast linters runner for Go. + +#### Config File + + + + + + + + + + + + +
LocationReview > Tools > golangci-lint > Config File
Default_No default_
+
+ + + + + + + + + + + + + + +
Field`reviews.tools.golangci-lint.config_file`
Datatypestring
Default_No default_
+
+
+ +Optional path to the golangci-lint configuration file relative to the repository. Useful when the configuration file is named differently than the default '.golangci.yml', '.golangci.yaml', '.golangci.toml', '.golangci.json'. + +#### Enable golangci-lint + + + + + + + + + + + + +
LocationReview > Tools > golangci-lint > Enable
Defaulttrue
+
+ + + + + + + + + + + + + + +
Field`reviews.tools.golangci-lint.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +golangci-lint is a fast linters runner for Go. + +### Hadolint + +Hadolint is a Dockerfile linter. + +#### Enable Hadolint + + + + + + + + + + + + +
LocationReview > Tools > Enable Hadolint
Defaulttrue
+
+ + + + + + + + + + + + + + +
Field`reviews.tools.hadolint.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +Hadolint is a Dockerfile linter. + +### HTMLHint + +HTMLHint is a static code analysis tool for HTML files. + +#### Config File + + + + + + + + + + + + +
LocationReview > Tools > HTMLHint > Config File
Default_No default_
+
+ + + + + + + + + + + + + + +
Field`reviews.tools.htmlhint.config_file`
Datatypestring
Default_No default_
+
+
+ +Optional path to the HTMLHint configuration file relative to the repository. This is useful when the configuration file is named differently than the default '.htmlhintrc'. + +#### Enable HTMLHint + + + + + + + + + + + + +
LocationReview > Tools > HTMLHint > Enable
Defaulttrue
+
+ + + + + + + + + + + + + + +
Field`reviews.tools.htmlhint.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +HTMLHint is a static code analysis tool for HTML files. + +### LanguageTool + +LanguageTool is a style and grammar checker for 30+ languages. + +#### Disabled Categories + + + + + + + + + + + + +
LocationReview > Tools > LanguageTool > Disabled Categories
Default_Empty array_
+
+ + + + + + + + + + + + + + +
Field`reviews.tools.languagetool.disabled_categories`
Datatypearray
Default[]
+
+
+ +IDs of categories to be disabled. Note: TYPOS, TYPOGRAPHY, and CASING are always disabled. + +#### Disabled Rules + + + + + + + + + + + + +
LocationReview > Tools > LanguageTool > Disabled Rules
Default_Empty array_
+
+ + + + + + + + + + + + + + +
Field`reviews.tools.languagetool.disabled_rules`
Datatypearray
Default[]
+
+
+ +IDs of rules to be disabled. Note: EN_UNPAIRED_BRACKETS, and EN_UNPAIRED_QUOTES are always disabled. + +#### Enable LanguageTool + + + + + + + + + + + + +
LocationReview > Tools > LanguageTool > Enable
Defaulttrue
+
+ + + + + + + + + + + + + + +
Field`reviews.tools.languagetool.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +Enable LanguageTool + +#### Enabled Categories + + + + + + + + + + + + +
LocationReview > Tools > LanguageTool > Enabled Categories
Default_Empty array_
+
+ + + + + + + + + + + + + + +
Field`reviews.tools.languagetool.enabled_categories`
Datatypearray
Default[]
+
+
+ +IDs of categories to be enabled. + +#### Enabled Only + + + + + + + + + + + + +
LocationReview > Tools > LanguageTool > Enabled Only
Defaultfalse
+
+ + + + + + + + + + + + + + +
Field`reviews.tools.languagetool.enabled_only`
Datatypeboolean
Defaultfalse
+
+
+ +Only the rules and categories whose IDs are specified with 'enabledRules' or 'enabledCategories' are enabled. + +#### Enabled Rules + + + + + + + + + + + + +
LocationReview > Tools > LanguageTool > Enabled Rules
Default_Empty array_
+
+ + + + + + + + + + + + + + +
Field`reviews.tools.languagetool.enabled_rules`
Datatypearray
Default[]
+
+
+ +IDs of rules to be enabled. The rule won't run unless 'level' is set to a level that activates the rule. + +#### Level + + + + + + + + + + + + +
LocationReview > Tools > LanguageTool > Level
Defaultdefault
+
+ + + + + + + + + + + + + + +
Field`reviews.tools.languagetool.level`
Datatypestring
Default"default"
+
+
+ +If set to 'picky', additional rules will be activated, i.e. rules that you might only find useful when checking formal text. + +### Luacheck + +Configuration for Lua code linting to ensure code quality + +#### Enable Luacheck + + + + + + + + + + + + +
LocationReview > Tools > Enable Luacheck
Defaulttrue
+
+ + + + + + + + + + + + + + +
Field`reviews.tools.luacheck.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +Luacheck helps maintain consistent and error-free Lua code + +### markdownlint + +markdownlint-cli2 is a static analysis tool to enforce standards and consistency for Markdown files. + +#### Enable markdownlint + + + + + + + + + + + + +
LocationReview > Tools > Enable markdownlint
Defaulttrue
+
+ + + + + + + + + + + + + + +
Field`reviews.tools.markdownlint.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +markdownlint-cli2 is a static analysis tool to enforce standards and consistency for Markdown files. + +### OXC + +OXC is a JavaScript/TypeScript linter written in Rust. + +#### Enable OXC + + + + + + + + + + + + +
LocationReview > Tools > Enable OXC
Defaulttrue
+
+ + + + + + + + + + + + + + +
Field`reviews.tools.oxc.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +OXC is a JavaScript/TypeScript linter written in Rust. + +### PHPStan + +PHPStan is a tool to analyze PHP code. + +#### Enable PHPStan + + + + + + + + + + + + +
LocationReview > Tools > PHPStan > Enable
Defaulttrue
+
+ + + + + + + + + + + + + + +
Field`reviews.tools.phpstan.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +PHPStan requires [config file](https://phpstan.org/config-reference#config-file) in your repository root. Please ensure that this file contains the `paths:` parameter. + +#### Level + + + + + + + + + + + + +
LocationReview > Tools > PHPStan > Level
Defaultdefault
+
+ + + + + + + + + + + + + + +
Field`reviews.tools.phpstan.level`
Datatypestring
Default"default"
+
+
+ +Specify the [rule level](https://phpstan.org/user-guide/rule-levels) to run. This setting is ignored if your configuration file already has a `level:` parameter. + +### PMD + +PMD is an extensible multilanguage static code analyzer. It’s mainly concerned with Java. + +#### Config File + + + + + + + + + + + + +
LocationReview > Tools > PMD > Config File
Default_No default_
+
+ + + + + + + + + + + + + + +
Field`reviews.tools.pmd.config_file`
Datatypestring
Default_No default_
+
+
+ +Optional path to the PMD configuration file relative to the repository. + +#### Enable PMD + + + + + + + + + + + + +
LocationReview > Tools > PMD > Enable
Defaulttrue
+
+ + + + + + + + + + + + + + +
Field`reviews.tools.pmd.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +PMD is an extensible multilanguage static code analyzer. It’s mainly concerned with Java. + +### Prisma Schema Linting + +Configuration for Prisma Schema linting to ensure schema file quality + +#### Enable Prisma Schema Linting + + + + + + + + + + + + +
LocationReview > Tools > Enable Prisma Schema Linting
Defaulttrue
+
+ + + + + + + + + + + + + + +
Field`reviews.tools.prismaLint.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +Prisma Schema linting helps maintain consistent and error-free schema files + +### Pylint + +Pylint is a Python static code analysis tool. + +#### Enable Pylint + + + + + + + + + + + + +
LocationReview > Tools > Enable Pylint
Defaulttrue
+
+ + + + + + + + + + + + + + +
Field`reviews.tools.pylint.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +Pylint is a Python static code analysis tool. + +### Regal + +Regal is a linter and language server for Rego. + +#### Enable Regal + + + + + + + + + + + + +
LocationReview > Tools > Enable Regal
Defaulttrue
+
+ + + + + + + + + + + + + + +
Field`reviews.tools.regal.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +Regal is a linter and language server for Rego. + +### RuboCop + +RuboCop is a Ruby static code analyzer (a.k.a. linter ) and code formatter. + +#### Enable RuboCop + + + + + + + + + + + + +
LocationReview > Tools > Enable RuboCop
Defaulttrue
+
+ + + + + + + + + + + + + + +
Field`reviews.tools.rubocop.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +RuboCop is a Ruby static code analyzer (a.k.a. linter ) and code formatter. + +### Ruff + +Ruff is a Python linter and code formatter. + +#### Enable Ruff + + + + + + + + + + + + +
LocationReview > Tools > Enable Ruff
Defaulttrue
+
+ + + + + + + + + + + + + + +
Field`reviews.tools.ruff.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +Ruff is a Python linter and code formatter. + +### Semgrep + +Semgrep is a static analysis tool designed to scan code for security vulnerabilities and code quality issues. + +#### Config File + + + + + + + + + + + + +
LocationReview > Tools > Semgrep > Config File
Default_No default_
+
+ + + + + + + + + + + + + + +
Field`reviews.tools.semgrep.config_file`
Datatypestring
Default_No default_
+
+
+ +Optional path to the Semgrep configuration file relative to the repository. + +#### Enable Semgrep + + + + + + + + + + + + +
LocationReview > Tools > Semgrep > Enable
Defaulttrue
+
+ + + + + + + + + + + + + + +
Field`reviews.tools.semgrep.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +Semgrep is a static analysis tool designed to scan code for security vulnerabilities and code quality issues. + +### ShellCheck + +ShellCheck is a static analysis tool that finds bugs in your shell scripts. + +#### Enable ShellCheck + + + + + + + + + + + + +
LocationReview > Tools > Enable ShellCheck
Defaulttrue
+
+ + + + + + + + + + + + + + +
Field`reviews.tools.shellcheck.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +ShellCheck is a static analysis tool that finds bugs in your shell. + +### Shopify Theme Check + +Configuration for Shopify Theme Check to ensure theme quality and best practices + +#### Enable Shopify Theme Check + + + + + + + + + + + + +
LocationReview > Tools > Enable Shopify Theme Check
Defaulttrue
+
+ + + + + + + + + + + + + + +
Field`reviews.tools.shopifyThemeCheck.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +A linter for Shopify themes that helps you follow Shopify theme & Liquid best practices + +### SQLFluff + +SQLFluff is an open source, dialect-flexible and configurable SQL linter. + +#### Enable SQLFluff + + + + + + + + + + + + +
LocationReview > Tools > Enable SQLFluff
Defaulttrue
+
+ + + + + + + + + + + + + + +
Field`reviews.tools.sqlfluff.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +SQLFluff is an open source, dialect-flexible and configurable SQL linter. + +### SwiftLint + +SwiftLint integration configuration object. + +#### Config File + + + + + + + + + + + + +
LocationReview > Tools > SwiftLint > Config File
Default_No default_
+
+ + + + + + + + + + + + + + +
Field`reviews.tools.swiftlint.config_file`
Datatypestring
Default_No default_
+
+
+ +Optional path to the SwiftLint configuration file relative to the repository. This is useful when the configuration file is named differently than the default '.swiftlint.yml' or '.swiftlint.yaml'. + +#### Enable SwiftLint + + + + + + + + + + + + +
LocationReview > Tools > SwiftLint > Enable
Defaulttrue
+
+ + + + + + + + + + + + + + +
Field`reviews.tools.swiftlint.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +SwiftLint is a Swift linter. + +### YAMLlint + +YAMLlint is a linter for YAML files. + +#### Enable YAMLlint + + + + + + + + + + + + +
LocationReview > Tools > Enable YAMLlint
Defaulttrue
+
+ + + + + + + + + + + + + + +
Field`reviews.tools.yamllint.enabled`
Datatypeboolean
Defaulttrue
+
+
+ +YAMLlint is a linter for YAML files. diff --git a/sidebars.ts b/sidebars.ts index 3d56f2b7..46a040c2 100644 --- a/sidebars.ts +++ b/sidebars.ts @@ -79,7 +79,11 @@ const sidebars: SidebarsConfig = { collapsed: true, label: "Configure CodeRabbit", items: [ + "guides/configuration-overview", + "guides/organization-settings", + "guides/repository-settings", "getting-started/configure-coderabbit", + "guides/initial-configuration", "integrations/knowledge-base", "guides/review-instructions", "tools/tools", @@ -162,6 +166,7 @@ const sidebars: SidebarsConfig = { href: "https://api.coderabbit.ai/api/swagger/", }, "reference/review-commands", + "reference/configuration", { type: "category", label: "Supported tools", diff --git a/static/img/reference/path-instructions.png b/static/img/reference/path-instructions.png new file mode 100644 index 0000000000000000000000000000000000000000..adcb5884c76a0abc0b77a525bffae59b70887287 GIT binary patch literal 114185 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 literal 0 HcmV?d00001 From dcd1cae7459e5bda74253404a1a81c1d560b259b Mon Sep 17 00:00:00 2001 From: Jason McIntosh Date: Thu, 19 Jun 2025 14:35:05 -0400 Subject: [PATCH 02/15] Broken link --- docs/guides/repository-settings.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/guides/repository-settings.md b/docs/guides/repository-settings.md index d5ac2588..0837aacc 100644 --- a/docs/guides/repository-settings.md +++ b/docs/guides/repository-settings.md @@ -30,7 +30,7 @@ To view or modify your organizational settings using the CodeRabbit web interfac ## Configure your repository with `coderabbit.yaml` For more information about creating and updating a `coderabbit.yaml` file in -your repository, see [Add a configuration file](getting-started/configure-coderabbit). +your repository, see [Add a configuration file](/getting-started/configure-coderabbit). ## What's next {#whats-next} From f6ec2dc44e8b10e88f33a0371c5398c138e8fe5b Mon Sep 17 00:00:00 2001 From: Jason McIntosh Date: Thu, 19 Jun 2025 14:47:38 -0400 Subject: [PATCH 03/15] Clarify path filters. --- docs/guides/initial-configuration.md | 14 +++++++------- docs/reference/configuration.md | 21 +++++++++------------ 2 files changed, 16 insertions(+), 19 deletions(-) diff --git a/docs/guides/initial-configuration.md b/docs/guides/initial-configuration.md index eecc4c79..dbc145da 100644 --- a/docs/guides/initial-configuration.md +++ b/docs/guides/initial-configuration.md @@ -120,15 +120,15 @@ By default, CodeRabbit applies the same review instructions and contexts to all Each path instruction specifies a path specification and a set of instructions, the latter of which you express using natural language. For example, you can add a section like this to your repository's `coderabbit.yaml` file: -``` +```yaml path_instructions: - path: `src/**/*.{ts,tsx,js}` - instructions: - - Review the React.js, TypeScript, JavaScript code for best practices - - Check for common security vulnerabilities such as: - - SQL Injection - - Insecure dependencies - - Sensitive data exposure + instructions: + - Review the React.js, TypeScript, JavaScript code for best practices + - Check for common security vulnerabilities such as: + - SQL Injection + - Insecure dependencies + - Sensitive data exposure ``` For more information, see [Path instructions](/reference/configuration#path-instructions) in the configuration reference. diff --git a/docs/reference/configuration.md b/docs/reference/configuration.md index 7b6ca11e..018db443 100644 --- a/docs/reference/configuration.md +++ b/docs/reference/configuration.md @@ -36,8 +36,8 @@ Each entry in this reference corresponds to a single CodeRabbit configuration se - _This setting can be defined only in the web UI settings for your - organization._ + _This setting can be defined only in the web UI settings for your + organization._ @@ -800,22 +800,19 @@ Path filters, if defined, restrict the portions of your repository that CodeRabb uses for context when preparing code reviews. You can define a list of path specifications, relative to the root of your -repository, to use as path filters. These path specifications can use extended -glob patterns. +repository, to use as path filters. -If you define at least one path filter, then CodeRabbit restricts its reviews -only to files whose paths meet all of the following criteria: - -- The file must match at least one filter that doesn't begin with a leading `!` character. -- The file must match none of the filters that begin with a leading `!` character. +Paths can be _exclude paths_, which start with a leading `!` character, or _include +paths_. If the list of paths contains at least one include path, then CodeRabbit +includes _only_ files that match the provided paths. For example, the following list of path filters instructs CodeRabbit to limit its reviews -only to files found in the `src` top-level directory, but exclude any `.txt` or `.js` +only to files found in the `src` top-level directory, but exclude any `.bin` or `.csv` files: -``` +```bash src/** -!**/*.{txt,js} +!**/*.{bin,csv} ``` :::note From d6f26ff77d0460d9e2fa2ca80cf6ca9bd62e76c3 Mon Sep 17 00:00:00 2001 From: Jason McIntosh Date: Thu, 19 Jun 2025 14:54:34 -0400 Subject: [PATCH 04/15] Tweak for markdownlint --- docs/reference/configuration.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/reference/configuration.md b/docs/reference/configuration.md index 018db443..00b629d1 100644 --- a/docs/reference/configuration.md +++ b/docs/reference/configuration.md @@ -870,10 +870,10 @@ and JavaScript files in a reposistory's `src` directory: - ![An example path instruction](/img/reference/path-instructions.png) + ![An example path instruction](/img/reference/path-instructions.png) -``` +```yaml path_instructions: - path: src/**/*.{ts,tsx,js} instructions: From 3c690e451a3fd56aa53370d12cc9211ee9c45413 Mon Sep 17 00:00:00 2001 From: Jason McIntosh Date: Mon, 23 Jun 2025 15:20:05 -0400 Subject: [PATCH 05/15] Many improvements and clarifications. --- docs/guides/configuration-overview.md | 46 +- docs/guides/initial-configuration.md | 76 +++- docs/guides/organization-settings.md | 12 +- docs/guides/repository-settings.md | 7 +- docs/reference/configuration.md | 601 +++++++++++++------------- 5 files changed, 384 insertions(+), 358 deletions(-) diff --git a/docs/guides/configuration-overview.md b/docs/guides/configuration-overview.md index df4b90f1..696d963d 100644 --- a/docs/guides/configuration-overview.md +++ b/docs/guides/configuration-overview.md @@ -5,8 +5,7 @@ sidebar_label: Overview --- After you finish [integrating CodeRabbit with your Git platform](/platforms/), -you can configure CodeRabbit to best fit the needs of your organization, team, -and individual code repositories. +you can configure CodeRabbit to best fit the needs of your Git platform's organization and repositories. ## About CodeRabbit configuration @@ -17,40 +16,37 @@ adding code reviews to new pull requests in your repositories. However, understanding how to configure CodeRabbit lets you tune its behavior to the particulars of your team's code. A few advantages of manually configuring -CodeRabbit inlcude the following: +CodeRabbit include the following: -- Let CodeRabbit deliver its reviews more quickly by giving it guidance on the level of review detail you want. -- Get more meaningful code reviews by specifying the parts of your repository that CodeRabbit should read to gain context. -- Make sure that CodeRabbit works in compliance with your organiation's data-retention policies. +- Adjust the level of detail in CodeRabbit code reviews. +- Customize review instructions to meet your specific coding standards. +- Take advantage of agentic workflows that can speed up your review cycles. ## Configuration methods {#methods} You can configure CodeRabbit in several ways, from global organization settings -down to configuration directives for specific repositories: +down to configuration directives for specific repositories. -- Configure the default behavior of CodeRabbit - across your whole organization, using the CodeRabbit web UI. -- Configure the behavior of CodeRabbit when reviewing pull requests in a specific repository. You can do this in two ways: - - Use the CodeRabbitweb UI. - - Add a `coderabbit.yaml` file to the top level of your repository. +### Organization settings {#org} -To determine its behavior with a specific repository, CodeRabbit applies the configuration methods in the following order of precedence, from highest to lowest: +If you want to apply the same CodeRabbit configuration to all of your organization's repositories, then +you can manage organizational settings using the CodeRabbit web UI. -1. The [repository's `coderabbit.yaml` file](/getting-started/configure-coderabbit), if it has one. -1. The [repository's settings](/guides/repository-settings) as they appear in the CodeRabbit web UI. -1. The [organization's settings](/guides/organization-settings) as they appear in the CodeRabbit web UI. +For more information, see [Set your organization preferences](/guides/organization-settings). -If you are new to CodeRabbit, then we encourage you to explore the settings available through the CodeRabbit web UI -to become familiar with the options available to you, and their default values. +### Repository settings {#repo} + +If you want to apply separate CodeRabbit configuration to your organization's different repositories, then you can +manage repository-specific CodeRabbit settings in two ways: + +- Use the CodeRabbit web interface. +- Add a `coderabbit.yaml` file to the top level of your repository. + +For more information, see [Set your repository preferences](/guides/repository-settings). + +While the web interface provides and easier way to explore the available configuration options for your repository, we recommend using a `coderabbit.yaml` file as a best practice. For more information, see [Fine-tune reviews using YAML files](/guides/setup-best-practices#yaml). ## Initial configuration {#initial} The [Initial configuration guide](/guides/initial-configuration) tours you through several settings that we recommend that you review after you set up CodeRabbit with your organization. - -## What's next {#whats-next} - -- [Set your organization preferences](/guides/organization-settings) -- [Set your repository preferences](/guides/repository-settings) -- [Add a configuration file](/getting-started/configure-coderabbit) -- [Initial configuration guide](/guides/initial-configuration) diff --git a/docs/guides/initial-configuration.md b/docs/guides/initial-configuration.md index dbc145da..cfa70502 100644 --- a/docs/guides/initial-configuration.md +++ b/docs/guides/initial-configuration.md @@ -5,22 +5,20 @@ description: A tour through some initial configuration setup. This page provides a tour through a selection of key CodeRabbit configuration options. -For a general overview of how configuration in CodeRabbit works, see [Configure CodeRabbit](/guides/configuration-overview). For an exhaustive reference of all conifguration options, see [Configuration reference](/reference/configuration). +For a general overview of how configuration in CodeRabbit works, see [Configure CodeRabbit](/guides/configuration-overview). For an exhaustive reference of all configuration options, see [Configuration reference](/reference/configuration). ## How to use this guide {#use} This guide walks you through several CodeRabbit configuration options that you can set in order to tune CodeRabbit code review behavior for your repositories. -Tthe default behavior and settings of CodeRabbit +The default behavior and settings of CodeRabbit works for most repositories, in most situations. However, becoming familiar with the key settings described by this page can help you tune the behavior of CodeRabbit for the specific needs of your team. You can use this guide when initially setting up your organization and repositories with CodeRabbit, or you can return to it after using CodeRabbit for a while, when you feel ready to customize its behavior. -Each section in the guide links to specific entries in the configuration reference. These entries specify where in either the CodeRabbit web UI or your `coderabbit.yaml` file to make the change. - -If you are new to CodeRabbit, then the web UI is the easiest way to explore the available settings. Once you are more comfortable with the repository-level changes you want to make, [we recommend adding `coderabbit.yaml` files to those repositories](/guides/setup-best-practices#yaml). +Each section in the guide links to specific entries in the configuration reference. Each entry in the linked reference specifies the location of its configuration setting, in either the CodeRabbit web UI or your `coderabbit.yaml` file. ## General settings {#general} @@ -28,15 +26,23 @@ These settings adjust overall CodeRabbit code review behavior. ### Adjust code-review strictness {#profile} -If you want CodeRabbit to apply a much stricter and more opinionated stance to its code reviews, then you can switch its _profile_ setting from `chill` to `assertive`. +If you want CodeRabbit to apply a much stricter and more nitpicky stance to its code reviews, then you can switch its _profile_ setting from `chill` to `assertive`. + +CodeRabbit is aware of nitpickier output from the linters and other tools that it applies to code reviews, but includes less of it in its own review comments when the profile is set to `chill`. To have CodeRabbit include more nitpicky tool output in reviews, use the `assertive` profile. For more information, see [Profile](/reference/configuration#profile) in the configuration reference. ### Configure pull request approval {#request-changes} -By default, CodeRabbit doesn't formally mark pull requests as approved after it informally reports approval in a code review. This leaves the job of formal pull request approval entirely up to human reviewers. +By default, CodeRabbit doesn't mark pull requests as approved after any code review, even if CodeRabbit doesn't have any further significant changes to suggest. This leaves the job of formal pull request approval entirely up to human reviewers. + +If you want to allow CodeRabbit to mark pull requests as approved, then you can enable the _request changes workflow_ setting. If you do, then CodeRabbit can approve pull requests after it reviewed a pull request and had all of its comments resolved. + +This can be useful if you have a workflow that requires several reviewers to approve a pull request before anyone can merge it. For example, if you have configured your repository on your Git platform to require two approvals for any pull request, then activating this CodeRabbit setting lets you merge a pull request after approval from CodeRabbit plus one human reviewer. This can help reduce your team's code-review load. -If you want to allow CodeRabbit to mark pull requests as approved, then you can enable the _request changes workflow_ setting. +:::note +We recommend a policy of always requiring the approval of at least one human reviewer, even if you allow CodeRabbit to approve pull requests. As with an generative AI technology, CodeRabbit works best as a helpful partner to your team, and not as a replacement for human expertise or judgment. +::: For more information, see [Request Changes Workflow](/reference/configuration#request-changes-workflow) in the configuration reference. @@ -44,20 +50,20 @@ For more information, see [Request Changes Workflow](/reference/configuration#re You can [ask CodeRabbit to create issues for you](https://docs.coderabbit.ai/guides/issue-creation) in the comments of a pull request that it's reviewing. -If you have integreated CodeRabbit with Jira or Linear, then you can tune this behavior a little more, restricting this feature to private repositories—the default setting—or disabling it entirely. +If you have integrated CodeRabbit with Jira or Linear, then you can tune this behavior a little more, restricting this feature to private repositories—the default setting—or disabling it entirely. For more information, see [Integrations](/reference/configuration#integrations) in the configuration reference. ### Configure learnings {#learnings} -You can teach CodeRabbit your team's review preferences by [stating them in plain language during code reviews](/integrations/knowledge-base#learnings). CodeRabbit remembers these these prefrences, and applies them to subsequent code reveiws in the same repository. +You can teach CodeRabbit your team's review preferences by [stating them in plain language during code reviews](/integrations/knowledge-base#learnings). CodeRabbit remembers these these preferences, and applies them to subsequent code reviews in the same repository. If you don't want this feature, you can disable it. For more information, see [Learnings](/reference/configuration#learnings) in the configuration reference. ## Data retention settings {#data-retention} These settings help you control how much data about your code that CodeRabbit retains. -CodeRabbit temporarily stores information about your repositories in order to deliver perform faster and more tailored reviews, but you can opt of these features if your organization has stricter data-retention policies. +CodeRabbit temporarily stores information about your repositories in order to tailored reviews more quickly and better tailored to your team's needs. You can opt of these features if your organization has stricter data-retention policies. For more information about CodeRabbit data-retention policies, see [Data privacy and security](/#data-privacy-and-security). @@ -68,7 +74,7 @@ For more information about CodeRabbit data-retention policies, see This setting is available only at the organization level, and not per-repository. ::: -Your CodeRabbit organization has a data-retention setting which acts as a master-switch to all CodeRabbit features that require it to store its own data about your repositries. If you disable data retention, then none of your repositories can use knowledge base or caching features, even if you configure those repositories to enable them. +Your CodeRabbit organization has a data-retention setting which acts as a master-switch to all CodeRabbit features that require it to store its own data about your repositories. If you disable data retention, then none of your repositories can use knowledge base or caching features, even if you configure those repositories to enable them. We recommend leaving this on. However, if your use of CodeRabbit requires strict data retention policy, then you can turn this off. @@ -77,17 +83,17 @@ For more information, see ### Configure cache use {#cache} -By defualt, CodeRabbit keeps a temporary cache of data about your repository in order to make subsquent code reviews faster. If this conflicts with your organization's data-retention policies, you can disable this feature. +By default, CodeRabbit keeps a temporary cache of data about your repository in order to make subsequent code reviews faster. If this conflicts with your organization's data-retention policies, then you can disable this feature. For more information, see [Disable cache](/reference/configuration#disable-cache) in the configuration reference. ### Configure knowledge base retention {#opt-out} -By defualt, CodeRabbit keeps a temporary cache of data about your repository in order to make subsquent code reviews faster. If this conflicts with your organization's data-retention policies, you can disable this feature. +By default, CodeRabbit keeps its own [_knowledge base_](/integrations/knowledge-base): a store of metadata about your repositories, your team's history of pull requests, linked issues, and [learnings] about how CodeRabbit should tailor its own review behavior to best serve your team. If this long-term knowledge base storage conflicts with your organization's data-retention policies, then you can disable this feature. For more information, see -[Disable cache](/reference/configuration#disable-cache) in the configuration reference. +[Opt out](/reference/configuration#opt-out) in the configuration reference. ## Tune the length of code reviews {#content} @@ -96,7 +102,7 @@ By default, CodeRabbit writes thorough code reviews with several sub-sections. I - [Collapse walkthrough](/reference/configuration#collapse-walkthrough): wraps the detailed summary of proposed changes in collapsed-but-expandable container. (Off by default.) - [Changed files summary](/reference/configuration#changed-files-summary): lists of files affected by this pull request. - [Sequence diagrams](/reference/configuration#sequence-diagrams): includes a visual diagram of object interactions. -- [Assess linked issues](/reference/configuration#assess-linked-issues): assesses how well the pull request addresses any linked issues/ +- [Assess linked issues](/reference/configuration#assess-linked-issues): assesses how well the pull request addresses any linked issues. - [Related issues](/reference/configuration#related-issues): lists issues found in your issue tracker that might be related to this pull request. - [Related pull requests](/reference/configuration#realted-prs): lists pull requests that might be related to this pull request. - [Suggested labels](/reference/configuration#suggested-labels): Suggests labels for this pull request. @@ -108,17 +114,28 @@ By default, CodeRabbit writes thorough code reviews with several sub-sections. I These settings direct CodeRabbit to treat various files and and locations in your repository differently. +For an overview about using path-based instructions in CodeRabbit, see [Path-based instructions](/guides/review-instructions#path-based). + ### Add path filters {#filters} If your repository contains files or locations that CodeRabbit should disregard when preparing code reviews—or you want CodeRabbit to limit its consideration to only certain files—then you can define one or more _path filters_. Adding path filters to a large repository containing a lot of data, generated files, or other non-code content can let CodeRabbit work faster. +For example, the following `coderabbit.yaml` excerpt instructs CodeRabbit to take review context only the contents of directories named `src/` in your repository, while disregarding any individual files with `.bin` or `.csv` extensions. + +```yaml +path_filters: + - "!**/*.bin" + - "!**/*.csv" + - "**/src/**" +``` + For more information, see [Path filters](/reference/configuration#path-filters) in the CodeRabbit configuration reference. ### Add general path instructions {#review-path} -By default, CodeRabbit applies the same review instructions and contexts to all of the pull requests that it generates, regardless of the files involved. If you want to apply additional review instructions to certain files or loations in your repository, then you can provide CodeRabbit with _path instructions_. +You can set _path instructions_ that provide CodeRabbit with additional review instructions for various files or locations in your repository. Each path instruction specifies a path specification and a set of instructions, the latter of which you express using natural language. -Each path instruction specifies a path specification and a set of instructions, the latter of which you express using natural language. For example, you can add a section like this to your repository's `coderabbit.yaml` file: +For example, to give CodeRabbit review instructions specific to JavaScript and TypeScript files, you can add a section like this to your repository's `coderabbit.yaml` file: ```yaml path_instructions: @@ -136,7 +153,11 @@ For more information, see [Path instructions](/reference/configuration#path-inst ### Add documentation or unit-test path instructions {#doc-path} Similar to the general path instructions described by the previous section, you -can define path-based instructions that +can define path-based instructions that direct CodeRabbit to generate inline +documentation or unit tests, with specific instructions associated with different +locations or filenames. + +For more information, see [Docstrings](/reference/configuration#docstrings) and [Unit tests](/reference/configuration#unit-tests) in the configuration reference. ## Set Automatic review behavior {#auto} @@ -144,10 +165,9 @@ By default, CodeRabbit automatically generates incremental code reviews for ever ### Configure incremental reviews {#incremental} -By default, the automatic code reviews that CodeRabbit generates are _incremental_, -building on any previous reviews within the same pull request that CodeRabbit has already added. +By default, CodeRabbit generates a new automated review comment every time the branch of an existing pull request gets an additional commit pushed to it. -We recommend leaving this feature enabled, for faster reviews that are easier to read. But, if you'd rather always see full code reviews by default, you can disable this feature. +If you want to limit CodeRabbit to posting only an initial automated review for a new pull request, with no automated response to further updates, then you can turn off this incremental-review behavior. If you do turn it off, then you can still [manually request reviews](/guides/commands#request). For more information, see [Automatic incremental review](/reference/configuration#automatic-incremental-review) in the configuration reference. @@ -165,11 +185,19 @@ For more information, see [Branches](/reference/configuration#brancehs) in the c ## Configure tools {#tools} -CodeRabbit has access to dozens of industry-standard open-source tools to help it perform its code reviews. These tools include a varity of linters, security analyzers, and other utilities. For a full list, see [List of supported tools](/tools/list). CodeRabbit chooses which tools to apply to a given code review on a case-by-case basis. +CodeRabbit has access to dozens of industry-standard open-source tools to help it perform its code reviews. These tools include a variety of linters, security analyzers, and other utilities. For a full list, see [List of supported tools](/tools/list). CodeRabbit chooses which tools to apply to a given code review on a case-by-case basis. By default, CodeRabbit considers every tool available to it during code reviews. If you want CodeRabbit to disregard certain tools, then you can disable them. -Several tools that CodeRabbit uses also allow you to specify a path to a tool-specific configuration file in your repository. +Several tools that CodeRabbit uses also allow you to specify a path to a tool-specific configuration file in your repository. For example, the following `coderabbit.yaml` excerpt directs CodeRabbit to use configuration files in the repository's `/pmd-config` directory when using the `pmd` tool: + +```yaml +reviews: + tools: + pmd: + enabled: true + config_file: /pmd-config/*.yml +``` For more information, see [Tools](/reference/configuration#tools) in the configuration reference. diff --git a/docs/guides/organization-settings.md b/docs/guides/organization-settings.md index afef8f3a..dfff58b8 100644 --- a/docs/guides/organization-settings.md +++ b/docs/guides/organization-settings.md @@ -1,10 +1,13 @@ --- -title: Set your orgnaization preferences +title: Set your organization preferences description: Learn the basics of configuring CodeRabbit for your organization. --- -This page is about managing the default settings of CodeRabbit for your -organization. For a general overview of configuring CodeRabbit, see [Configure CodeRabbit](/guides/configuration-overview). +This page is about managing the default settings of CodeRabbit across your +whole Git platform organization. If you instead want to configure CodeRabbit +separately for your organization's different repositories, then see [Set your repository preferences](/guides/repository-settings) + +For a general overview of configuring CodeRabbit, see [Configure CodeRabbit](/guides/configuration-overview). ## About organization settings {#about} @@ -14,7 +17,7 @@ to review and set your organizational settings: - When you give CodeRabbit access to a new repository, CodeRabbit applies all of your organizational settings to that repository as defaults. -- Some settings, such as [Data retention], apply only at the organizational level, with +- Some settings, such as [Data retention](/reference/configuration#data-retention), apply only at the organizational level, with no per-repository equivalent. ## Browse and modify your organization settings {#modify} @@ -28,4 +31,3 @@ To view or modify your organizational settings, follow these steps: ## What's next {#whats-next} - [Initial configuration guide](/guides/initial-configuration) -- [Set your repository preferences](/guides/repository-settings) diff --git a/docs/guides/repository-settings.md b/docs/guides/repository-settings.md index 0837aacc..0f4009b6 100644 --- a/docs/guides/repository-settings.md +++ b/docs/guides/repository-settings.md @@ -11,20 +11,23 @@ Git repository. For a general overview of configuring CodeRabbit, see [Configure CodeRabbit provides two ways to manage its code-review behavior with each of your organization's repositories: 1. View or modify your per-repository settings using the CodeRabbit web interface. -1. Add a `coderabbit.yaml` file to your repostory. +1. Add a `coderabbit.yaml` file to your repository. Any settings that you define in the `coderabbit.yaml` file take precedence over settings defined by the web interface. If your repository doesn't have a `coderabbit.yaml` file, then CodeRabbit applies only the settings from the web interface. +While the web interface provides and easier way to explore the available configuration options for your repository, we recommend using a `coderabbit.yaml` file as a best practice. For more information, see [Fine-tune reviews using YAML files](/guides/setup-best-practices#yaml). + ## Browse and modify your settings using the web interface {#modify} -To view or modify your organizational settings using the CodeRabbit web interface, follow these steps: +To view of modify your repsository settings using the CodeRabbit web interface, follow these steps: 1. Visit [the CodeRabbit web interface](https://app.coderabbit.ai/settings/repositories). 1. In the sidebar, click **Repositories**. 1. Click the gear-shaped **Settings** icon of the repository whose settings you want to view or modify. +1. If the **Use Organization Settings** toggle is on, then click it to turn it off. If you leave it on, then CodeRabbit applies the settings you have set through [the organization-configuration page](/guide/organization-settings) to this repository. 1. Browse and modify the settings as needed. If you do make changes, click **Apply Changes** when you are finished. ## Configure your repository with `coderabbit.yaml` diff --git a/docs/reference/configuration.md b/docs/reference/configuration.md index 00b629d1..cd6eed4e 100644 --- a/docs/reference/configuration.md +++ b/docs/reference/configuration.md @@ -23,7 +23,7 @@ Each entry in this reference corresponds to a single CodeRabbit configuration se ### Data retention - + @@ -35,7 +35,7 @@ Each entry in this reference corresponds to a single CodeRabbit configuration se
Location
- + _This setting can be defined only in the web UI settings for your organization._ @@ -44,7 +44,7 @@ Each entry in this reference corresponds to a single CodeRabbit configuration se If `true`, then CodeRabbit is allowed to retain enough data about your code review history in order to enable the following features: -- **Cacheing**: allows CodeRabbit to store data about your repository between +- **Caching**: allows CodeRabbit to store data about your repository between code reviews, improving the speed of subsequent reviews. - **Knowledge base**: allows CodeRabbit to maintain its own database about your repository and your team's code review preferences, which can improve @@ -59,7 +59,7 @@ If you re-enable data retention, then CodeRabbit re-enables these features, and ### Early Access - + @@ -71,7 +71,7 @@ If you re-enable data retention, then CodeRabbit re-enables these features, and
Location
- + @@ -95,7 +95,7 @@ code reviews. ### Enable Free Tier - +
Field
@@ -107,7 +107,7 @@ code reviews.
Location
- + @@ -132,7 +132,7 @@ For more information about payment tiers and features, see [Pricing](https://www ### Language - +
Field
@@ -144,7 +144,7 @@ For more information about payment tiers and features, see [Pricing](https://www
Location
- + @@ -168,7 +168,7 @@ to American English. ### Tone Instructions - +
Field
@@ -180,7 +180,7 @@ to American English.
Location
- + @@ -215,7 +215,7 @@ A few possible examples: #### Abort On Close - +
Field
@@ -227,7 +227,7 @@ A few possible examples:
Location
- + @@ -250,7 +250,7 @@ Abort the in-progress review if the pull request is closed or merged. #### Assess Linked Issues - +
Field
@@ -262,7 +262,7 @@ Abort the in-progress review if the pull request is closed or merged.
Location
- + @@ -280,7 +280,7 @@ Abort the in-progress review if the pull request is closed or merged. -If enabled, then the reviews that CodeRabbit generates include assessments of how well a proposed code change issues that the pull request refers to. CodeRabbit considers issues referred to by number in the following locations: +If enabled, then the reviews that CodeRabbit generates include assessments of how well a proposed code change addresses any issues that the pull request refers to. CodeRabbit considers issues referred to by number in the following locations: - The title of the pull request. - The description of the pull request. @@ -297,7 +297,7 @@ and [Let CodeRabbit read your issue trakcer](https://docs.coderabbit.ai/guides/s #### Auto Apply Labels - +
Field
@@ -309,7 +309,7 @@ and [Let CodeRabbit read your issue trakcer](https://docs.coderabbit.ai/guides/s
Location
- + @@ -332,7 +332,7 @@ Automatically apply the suggested labels to the PR/MR. #### Auto Assign Reviewers - +
Field
@@ -344,7 +344,7 @@ Automatically apply the suggested labels to the PR/MR.
Location
- + @@ -367,7 +367,7 @@ Automatically assign suggested reviewers to the pull request #### Auto Title Instructions - +
Field
@@ -379,7 +379,7 @@ Automatically assign suggested reviewers to the pull request
Location
- + @@ -402,7 +402,7 @@ Custom instructions for auto-generating the PR/MR title. #### Auto Title Placeholder - +
Field
@@ -414,7 +414,7 @@ Custom instructions for auto-generating the PR/MR title.
Location
- + @@ -437,7 +437,7 @@ Add this keyword in the PR/MR title to auto-generate the title. #### Changed Files Summary - +
Field
@@ -449,7 +449,7 @@ Add this keyword in the PR/MR title to auto-generate the title.
Location
- + @@ -472,7 +472,7 @@ Generate a summary of the changed files in the walkthrough. #### Collapse Walkthrough - +
Field
@@ -484,7 +484,7 @@ Generate a summary of the changed files in the walkthrough.
Location
- + @@ -507,7 +507,7 @@ Generate walkthrough in a markdown collapsible section. #### Commit Status - +
Field
@@ -519,7 +519,7 @@ Generate walkthrough in a markdown collapsible section.
Location
- + @@ -542,7 +542,7 @@ Set the commit status to 'pending' when the review is in progress and 'success' #### Disable Cache - +
Field
@@ -554,7 +554,7 @@ Set the commit status to 'pending' when the review is in progress and 'success'
Location
- + @@ -591,7 +591,7 @@ all data retention, then your repositories won't keep a cache. #### Fail Commit Status - +
Field
@@ -603,7 +603,7 @@ all data retention, then your repositories won't keep a cache.
Location
- + @@ -626,7 +626,7 @@ Set the commit status to 'failure' when the PR cannot be reviewed by CodeRabbit #### High Level Summary - +
Field
@@ -638,7 +638,7 @@ Set the commit status to 'failure' when the PR cannot be reviewed by CodeRabbit
Location
- + @@ -661,7 +661,7 @@ Generate a high level summary of the changes in the PR/MR description. #### High Level Summary In Walkthrough - +
Field
@@ -673,7 +673,7 @@ Generate a high level summary of the changes in the PR/MR description.
Location
- + @@ -696,7 +696,7 @@ Include the high level summary in the walkthrough comment. #### High Level Summary Placeholder - +
Field
@@ -708,7 +708,7 @@ Include the high level summary in the walkthrough comment.
Location
- + @@ -731,7 +731,7 @@ Placeholder in the PR/MR description that gets replaced with the high level summ #### Labeling Instructions - +
Field
@@ -743,7 +743,7 @@ Placeholder in the PR/MR description that gets replaced with the high level summ
Location
- + @@ -766,7 +766,7 @@ Provide guidelines for suggesting labels for the PR/MR. When specific labels or #### Path Filters - +
Field
@@ -778,7 +778,7 @@ Provide guidelines for suggesting labels for the PR/MR. When specific labels or
Location
- + @@ -829,7 +829,7 @@ For more information, see [Speed up reviews by adding path filters](https://docs #### Path Instructions - +
Field
@@ -841,7 +841,7 @@ For more information, see [Speed up reviews by adding path filters](https://docs
Location
- + @@ -892,7 +892,7 @@ see [the `awesome-coderabbit` public repository](https://github.com/coderabbitai #### Poem - +
Field
@@ -904,7 +904,7 @@ see [the `awesome-coderabbit` public repository](https://github.com/coderabbitai
Location
- + @@ -927,7 +927,7 @@ Generate a poem in the walkthrough comment. #### Profile {#profile} - +
Field
@@ -939,7 +939,7 @@ Generate a poem in the walkthrough comment.
Location
- + @@ -970,7 +970,7 @@ contexts. The `Assertive` profile mode can get quite nitpicky in some circumstan #### Related Issues - +
Field
@@ -982,7 +982,7 @@ contexts. The `Assertive` profile mode can get quite nitpicky in some circumstan
Location
- + @@ -1005,7 +1005,7 @@ Include possibly related issues in the walkthrough. #### Related PRs - +
Field
@@ -1017,7 +1017,7 @@ Include possibly related issues in the walkthrough.
Location
- + @@ -1040,7 +1040,7 @@ Include possibly related pull requests in the walkthrough. #### Request Changes Workflow - +
Field
@@ -1052,7 +1052,7 @@ Include possibly related pull requests in the walkthrough.
Location
- + @@ -1080,7 +1080,7 @@ to require before a pull request can be merged. #### Review Status - +
Field
@@ -1092,7 +1092,7 @@ to require before a pull request can be merged.
Location
- + @@ -1115,7 +1115,7 @@ Post review details on each review. Additionally, post a review status when a re #### Sequence Diagrams - +
Field
@@ -1127,7 +1127,7 @@ Post review details on each review. Additionally, post a review status when a re
Location
- + @@ -1150,7 +1150,7 @@ Generate sequence diagrams in the walkthrough. #### Suggested Labels - +
Field
@@ -1162,7 +1162,7 @@ Generate sequence diagrams in the walkthrough.
Location
- + @@ -1185,7 +1185,7 @@ Suggest labels based on the changes in the pull request in the walkthrough. #### Suggested Reviewers - +
Field
@@ -1197,7 +1197,7 @@ Suggest labels based on the changes in the pull request in the walkthrough.
Location
- + @@ -1222,7 +1222,7 @@ Suggest reviewers based on the changes in the pull request in the walkthrough. #### Enable Automatic Review - +
Field
@@ -1234,7 +1234,7 @@ Suggest reviewers based on the changes in the pull request in the walkthrough.
Location
- + @@ -1261,7 +1261,7 @@ Disabling this setting also effectively disables all of the other settings liste #### Automatic Incremental Review - +
Field
@@ -1273,7 +1273,7 @@ Disabling this setting also effectively disables all of the other settings liste
Location
- + @@ -1291,10 +1291,7 @@ Disabling this setting also effectively disables all of the other settings liste -If enabled, then CodeRabbit automatically performs incremental reviews of pull requests that it has already reviewed, and you must manually request full reviews. - -If disabled, then CodeRabbit always performs full reviews, and you must manually request -incremental reviews. +If enabled, then CodeRabbit performs automatic reviews of existing pull requests when their associated branches have commits pushed to them. These incremental reviews happen in addition to the initial code review that CodeRabbit generates after the pull request is first created. For more information on manual review commands, see [Manually request code reviews](/guides/code-review-overview#review). @@ -1303,7 +1300,7 @@ We recommend leaving this option enabled. #### Base Branches - +
Field
@@ -1315,7 +1312,7 @@ We recommend leaving this option enabled.
Location
- + @@ -1342,7 +1339,7 @@ reviews pull requests on both your repository's default branch and its `staging` #### Drafts - +
Field
@@ -1354,7 +1351,7 @@ reviews pull requests on both your repository's default branch and its `staging`
Location
- + @@ -1378,7 +1375,7 @@ in your Git platform. #### Ignore Title Keywords - +
Field
@@ -1390,7 +1387,7 @@ in your Git platform.
Location
- + @@ -1413,7 +1410,7 @@ Ignore reviewing if the title of the pull request contains any of these keywords #### Labels - +
Field
@@ -1425,7 +1422,7 @@ Ignore reviewing if the title of the pull request contains any of these keywords
Location
- + @@ -1453,7 +1450,7 @@ In this case, you can manually request reviews of pull requests lacking a qualif #### Docstrings - +
Field
@@ -1465,7 +1462,7 @@ In this case, you can manually request reviews of pull requests lacking a qualif
Location
- + @@ -1489,7 +1486,7 @@ added in a pull request. For more information, see [Docstrings](/finishing-touch #### Unit Tests - +
Field
@@ -1501,7 +1498,7 @@ added in a pull request. For more information, see [Docstrings](/finishing-touch
Location
- + @@ -1527,7 +1524,7 @@ added in a pull request. For more information, see [Unit Test Generation](/finis ### Auto Reply - +
Field
@@ -1539,7 +1536,7 @@ added in a pull request. For more information, see [Unit Test Generation](/finis
Location
- + @@ -1564,7 +1561,7 @@ Enable the bot to reply automatically without requiring the user to tag it. ### Jira - +
Field
@@ -1576,7 +1573,7 @@ Enable the bot to reply automatically without requiring the user to tag it.
Location
- + @@ -1599,7 +1596,7 @@ Enable the Jira integration for opening issues, etc. 'auto' disables the integra ### Linear - +
Field
@@ -1611,7 +1608,7 @@ Enable the Jira integration for opening issues, etc. 'auto' disables the integra
Location
- + @@ -1638,7 +1635,7 @@ Enable the Linear integration for opening issues, etc. 'auto' disables the integ #### Opt Out - +
Field
@@ -1650,7 +1647,7 @@ Enable the Linear integration for opening issues, etc. 'auto' disables the integ
Location
- + @@ -1673,7 +1670,7 @@ Disable all knowledge base features that require data retention. If you opt out #### Pull Requests - +
Field
@@ -1685,7 +1682,7 @@ Disable all knowledge base features that require data retention. If you opt out
Location
- + @@ -1708,7 +1705,7 @@ Specify the scope of pull requests to use for the knowledge base. 'local' uses t #### Web Search - +
Field
@@ -1720,7 +1717,7 @@ Specify the scope of pull requests to use for the knowledge base. 'local' uses t
Location
- + @@ -1743,7 +1740,7 @@ Enable the web search integration. ### Issues - +
Field
@@ -1755,7 +1752,7 @@ Enable the web search integration.
Location
- + @@ -1780,7 +1777,7 @@ Specify the scope of git platform (GitHub/GitLab) issues to use for the knowledg #### Enable Jira - +
Field
@@ -1792,7 +1789,7 @@ Specify the scope of git platform (GitHub/GitLab) issues to use for the knowledg
Location
- + @@ -1815,7 +1812,7 @@ Enable the Jira knowledge base integration. 'auto' disables the integration for #### Project Keys - +
Field
@@ -1827,7 +1824,7 @@ Enable the Jira knowledge base integration. 'auto' disables the integration for
Location
- + @@ -1850,7 +1847,7 @@ Specify the Jira project keys to use for the knowledge base. ### Learnings - +
Field
@@ -1862,7 +1859,7 @@ Specify the Jira project keys to use for the knowledge base.
Location
- + @@ -1887,7 +1884,7 @@ Specify the scope of learnings to use for the knowledge base. 'local' uses the r #### Enable Linear - +
Field
@@ -1899,7 +1896,7 @@ Specify the scope of learnings to use for the knowledge base. 'local' uses the r
Location
- + @@ -1922,7 +1919,7 @@ Enable the Linear knowledge base integration. 'auto' disables the integration fo #### Team Keys - +
Field
@@ -1934,7 +1931,7 @@ Enable the Linear knowledge base integration. 'auto' disables the integration fo
Location
- + @@ -1959,7 +1956,7 @@ Specify the Linear team keys (identifiers) to use for the knowledge base. E.g. ' ### Code Generation Language - +
Field
@@ -1971,7 +1968,7 @@ Specify the Linear team keys (identifiers) to use for the knowledge base. E.g. '
Location
- + @@ -1994,7 +1991,7 @@ Set the language for docstrings by using the corresponding ISO language code. ### Docstring Path Instructions - +
Field
@@ -2006,7 +2003,7 @@ Set the language for docstrings by using the corresponding ISO language code.
Location
- + @@ -2029,7 +2026,7 @@ Provide additional guidelines for docstring generation based on file paths. ### Unit Test Path Instructions - +
Field
@@ -2041,7 +2038,7 @@ Provide additional guidelines for docstring generation based on file paths.
Location
- + @@ -2072,7 +2069,7 @@ actionlint is a static checker for GitHub Actions workflow files. #### Enable actionlint - +
Field
@@ -2084,7 +2081,7 @@ actionlint is a static checker for GitHub Actions workflow files.
Location
- + @@ -2111,7 +2108,7 @@ Enable ast-grep | ast-grep is a code analysis tool that helps you to find patter #### Essential Rules - +
Field
@@ -2123,7 +2120,7 @@ Enable ast-grep | ast-grep is a code analysis tool that helps you to find patter
Location
- + @@ -2146,7 +2143,7 @@ Use ast-grep essentials package. #### Packages - +
Field
@@ -2158,7 +2155,7 @@ Use ast-grep essentials package.
Location
- + @@ -2181,7 +2178,7 @@ Predefined packages to be used. #### Rule Dirs - +
Field
@@ -2193,7 +2190,7 @@ Predefined packages to be used.
Location
- + @@ -2216,7 +2213,7 @@ List of rules directories. #### Util Dirs - +
Field
@@ -2228,7 +2225,7 @@ List of rules directories.
Location
- + @@ -2255,7 +2252,7 @@ Biome is a fast formatter, linter, and analyzer for web projects. #### Enable Biome - +
Field
@@ -2267,7 +2264,7 @@ Biome is a fast formatter, linter, and analyzer for web projects.
Location
- + @@ -2294,7 +2291,7 @@ Brakeman is a static analysis security vulnerability scanner for Ruby on Rails a #### Enable Brakeman - +
Field
@@ -2306,7 +2303,7 @@ Brakeman is a static analysis security vulnerability scanner for Ruby on Rails a
Location
- + @@ -2333,7 +2330,7 @@ Buf offers linting for Protobuf files. #### Enable Buf - +
Field
@@ -2345,7 +2342,7 @@ Buf offers linting for Protobuf files.
Location
- + @@ -2372,7 +2369,7 @@ checkmake is a linter for Makefiles. #### Enable checkmake - +
Field
@@ -2384,7 +2381,7 @@ checkmake is a linter for Makefiles.
Location
- + @@ -2411,7 +2408,7 @@ Checkov is a static code analysis tool for infrastructure-as-code files. #### Enable Checkov - +
Field
@@ -2423,7 +2420,7 @@ Checkov is a static code analysis tool for infrastructure-as-code files.
Location
- + @@ -2450,7 +2447,7 @@ CircleCI tool is a static checker for CircleCI config files. #### Enable CircleCI - +
Field
@@ -2462,7 +2459,7 @@ CircleCI tool is a static checker for CircleCI config files.
Location
- + @@ -2489,7 +2486,7 @@ Clippy is a collection of lints to catch common mistakes and improve your Rust c #### Enable Clippy - +
Field
@@ -2501,7 +2498,7 @@ Clippy is a collection of lints to catch common mistakes and improve your Rust c
Location
- + @@ -2528,7 +2525,7 @@ Cppcheck is a static code analysis tool for the C and C++ programming languages. #### Enable Cppcheck - +
Field
@@ -2540,7 +2537,7 @@ Cppcheck is a static code analysis tool for the C and C++ programming languages.
Location
- + @@ -2564,75 +2561,75 @@ Cppcheck is a static code analysis tool for the C and C++ programming languages. Detekt is a static code analysis tool for Kotlin files. -#### Config File +#### Enable detekt - +
Field
- + - +
LocationReview > Tools > detekt > Config FileReview > Tools > detekt > Enable
Default_No default_true
- + - + - + - +
Field`reviews.tools.detekt.config_file``reviews.tools.detekt.enabled`
Datatypestringboolean
Default_No default_true
-Optional path to the detekt configuration file relative to the repository. +Enable detekt. -#### Enable detekt +#### Config File - + - + - +
LocationReview > Tools > detekt > EnableReview > Tools > detekt > Config File
Defaulttrue_No default_
- + - + - + - +
Field`reviews.tools.detekt.enabled``reviews.tools.detekt.config_file`
Datatypebooleanstring
Defaulttrue_No default_
-detekt is a static code analysis tool for Kotlin files. +Optional path to the detekt configuration file relative to the repository. ### dotenv-linter @@ -2641,7 +2638,7 @@ dotenv-linter is a tool for checking and fixing .env files for problems and best #### Enable dotenv-linter - + @@ -2653,7 +2650,7 @@ dotenv-linter is a tool for checking and fixing .env files for problems and best
Location
- + @@ -2680,7 +2677,7 @@ ESLint is a static code analysis tool for JavaScript files. #### Enable ESLint - +
Field
@@ -2692,7 +2689,7 @@ ESLint is a static code analysis tool for JavaScript files.
Location
- + @@ -2719,7 +2716,7 @@ GitHub Checks integration configuration. #### Enable GitHub Checks - +
Field
@@ -2731,7 +2728,7 @@ GitHub Checks integration configuration.
Location
- + @@ -2754,7 +2751,7 @@ Enable integration, defaults to true #### Timeout Ms - +
Field
@@ -2766,7 +2763,7 @@ Enable integration, defaults to true
Location
- + @@ -2793,7 +2790,7 @@ Gitleaks is a secret scanner. #### Enable Gitleaks - +
Field
@@ -2805,7 +2802,7 @@ Gitleaks is a secret scanner.
Location
- + @@ -2829,75 +2826,75 @@ Gitleaks is a secret scanner. golangci-lint is a fast linters runner for Go. -#### Config File +#### Enable golangci-lint - +
Field
- + - +
LocationReview > Tools > golangci-lint > Config FileReview > Tools > golangci-lint > Enable
Default_No default_true
- + - + - + - +
Field`reviews.tools.golangci-lint.config_file``reviews.tools.golangci-lint.enabled`
Datatypestringboolean
Default_No default_true
-Optional path to the golangci-lint configuration file relative to the repository. Useful when the configuration file is named differently than the default '.golangci.yml', '.golangci.yaml', '.golangci.toml', '.golangci.json'. +Enable golangci-lint. -#### Enable golangci-lint +#### Config File - + - + - +
LocationReview > Tools > golangci-lint > EnableReview > Tools > golangci-lint > Config File
Defaulttrue_No default_
- + - + - + - +
Field`reviews.tools.golangci-lint.enabled``reviews.tools.golangci-lint.config_file`
Datatypebooleanstring
Defaulttrue_No default_
-golangci-lint is a fast linters runner for Go. +Optional path to the golangci-lint configuration file relative to the repository. Useful when the configuration file is named differently than the default '.golangci.yml', '.golangci.yaml', '.golangci.toml', '.golangci.json'. ### Hadolint @@ -2906,7 +2903,7 @@ Hadolint is a Dockerfile linter. #### Enable Hadolint - + @@ -2918,7 +2915,7 @@ Hadolint is a Dockerfile linter.
Location
- + @@ -2942,75 +2939,75 @@ Hadolint is a Dockerfile linter. HTMLHint is a static code analysis tool for HTML files. -#### Config File +#### Enable HTMLHint - +
Field
- + - +
LocationReview > Tools > HTMLHint > Config FileReview > Tools > HTMLHint > Enable
Default_No default_true
- + - + - + - +
Field`reviews.tools.htmlhint.config_file``reviews.tools.htmlhint.enabled`
Datatypestringboolean
Default_No default_true
-Optional path to the HTMLHint configuration file relative to the repository. This is useful when the configuration file is named differently than the default '.htmlhintrc'. +Enable HTMLHint. -#### Enable HTMLHint +#### Config File - + - + - +
LocationReview > Tools > HTMLHint > EnableReview > Tools > HTMLHint > Config File
Defaulttrue_No default_
- + - + - + - +
Field`reviews.tools.htmlhint.enabled``reviews.tools.htmlhint.config_file`
Datatypebooleanstring
Defaulttrue_No default_
-HTMLHint is a static code analysis tool for HTML files. +Optional path to the HTMLHint configuration file relative to the repository. This is useful when the configuration file is named differently than the default '.htmlhintrc'. ### LanguageTool @@ -3019,7 +3016,7 @@ LanguageTool is a style and grammar checker for 30+ languages. #### Disabled Categories - + @@ -3031,7 +3028,7 @@ LanguageTool is a style and grammar checker for 30+ languages.
Location
- + @@ -3054,7 +3051,7 @@ IDs of categories to be disabled. Note: TYPOS, TYPOGRAPHY, and CASING are always #### Disabled Rules - +
Field
@@ -3066,7 +3063,7 @@ IDs of categories to be disabled. Note: TYPOS, TYPOGRAPHY, and CASING are always
Location
- + @@ -3089,7 +3086,7 @@ IDs of rules to be disabled. Note: EN_UNPAIRED_BRACKETS, and EN_UNPAIRED_QUOTES #### Enable LanguageTool - +
Field
@@ -3101,7 +3098,7 @@ IDs of rules to be disabled. Note: EN_UNPAIRED_BRACKETS, and EN_UNPAIRED_QUOTES
Location
- + @@ -3124,7 +3121,7 @@ Enable LanguageTool #### Enabled Categories - +
Field
@@ -3136,7 +3133,7 @@ Enable LanguageTool
Location
- + @@ -3159,7 +3156,7 @@ IDs of categories to be enabled. #### Enabled Only - +
Field
@@ -3171,7 +3168,7 @@ IDs of categories to be enabled.
Location
- + @@ -3194,7 +3191,7 @@ Only the rules and categories whose IDs are specified with 'enabledRules' or 'en #### Enabled Rules - +
Field
@@ -3206,7 +3203,7 @@ Only the rules and categories whose IDs are specified with 'enabledRules' or 'en
Location
- + @@ -3229,7 +3226,7 @@ IDs of rules to be enabled. The rule won't run unless 'level' is set to a level #### Level - +
Field
@@ -3241,7 +3238,7 @@ IDs of rules to be enabled. The rule won't run unless 'level' is set to a level
Location
- + @@ -3268,7 +3265,7 @@ Configuration for Lua code linting to ensure code quality #### Enable Luacheck - +
Field
@@ -3280,7 +3277,7 @@ Configuration for Lua code linting to ensure code quality
Location
- + @@ -3307,7 +3304,7 @@ markdownlint-cli2 is a static analysis tool to enforce standards and consistency #### Enable markdownlint - +
Field
@@ -3319,7 +3316,7 @@ markdownlint-cli2 is a static analysis tool to enforce standards and consistency
Location
- + @@ -3346,7 +3343,7 @@ OXC is a JavaScript/TypeScript linter written in Rust. #### Enable OXC - +
Field
@@ -3358,7 +3355,7 @@ OXC is a JavaScript/TypeScript linter written in Rust.
Location
- + @@ -3385,7 +3382,7 @@ PHPStan is a tool to analyze PHP code. #### Enable PHPStan - +
Field
@@ -3397,7 +3394,7 @@ PHPStan is a tool to analyze PHP code.
Location
- + @@ -3420,7 +3417,7 @@ PHPStan requires [config file](https://phpstan.org/config-reference#config-file) #### Level - +
Field
@@ -3432,7 +3429,7 @@ PHPStan requires [config file](https://phpstan.org/config-reference#config-file)
Location
- + @@ -3456,75 +3453,75 @@ Specify the [rule level](https://phpstan.org/user-guide/rule-levels) to run. Thi PMD is an extensible multilanguage static code analyzer. It’s mainly concerned with Java. -#### Config File +#### Enable PMD - +
Field
- + - +
LocationReview > Tools > PMD > Config FileReview > Tools > PMD > Enable
Default_No default_true
- + - + - + - +
Field`reviews.tools.pmd.config_file``reviews.tools.pmd.enabled`
Datatypestringboolean
Default_No default_true
-Optional path to the PMD configuration file relative to the repository. +Enable PMD. -#### Enable PMD +#### Config File - + - + - +
LocationReview > Tools > PMD > EnableReview > Tools > PMD > Config File
Defaulttrue_No default_
- + - + - + - +
Field`reviews.tools.pmd.enabled``reviews.tools.pmd.config_file`
Datatypebooleanstring
Defaulttrue_No default_
-PMD is an extensible multilanguage static code analyzer. It’s mainly concerned with Java. +Optional path to the PMD configuration file relative to the repository. ### Prisma Schema Linting @@ -3533,7 +3530,7 @@ Configuration for Prisma Schema linting to ensure schema file quality #### Enable Prisma Schema Linting - + @@ -3545,7 +3542,7 @@ Configuration for Prisma Schema linting to ensure schema file quality
Location
- + @@ -3572,7 +3569,7 @@ Pylint is a Python static code analysis tool. #### Enable Pylint - +
Field
@@ -3584,7 +3581,7 @@ Pylint is a Python static code analysis tool.
Location
- + @@ -3611,7 +3608,7 @@ Regal is a linter and language server for Rego. #### Enable Regal - +
Field
@@ -3623,7 +3620,7 @@ Regal is a linter and language server for Rego.
Location
- + @@ -3650,7 +3647,7 @@ RuboCop is a Ruby static code analyzer (a.k.a. linter ) and code formatter. #### Enable RuboCop - +
Field
@@ -3662,7 +3659,7 @@ RuboCop is a Ruby static code analyzer (a.k.a. linter ) and code formatter.
Location
- + @@ -3689,7 +3686,7 @@ Ruff is a Python linter and code formatter. #### Enable Ruff - +
Field
@@ -3701,7 +3698,7 @@ Ruff is a Python linter and code formatter.
Location
- + @@ -3725,75 +3722,75 @@ Ruff is a Python linter and code formatter. Semgrep is a static analysis tool designed to scan code for security vulnerabilities and code quality issues. -#### Config File +#### Enable Semgrep - +
Field
- + - +
LocationReview > Tools > Semgrep > Config FileReview > Tools > Semgrep > Enable
Default_No default_true
- + - + - + - +
Field`reviews.tools.semgrep.config_file``reviews.tools.semgrep.enabled`
Datatypestringboolean
Default_No default_true
-Optional path to the Semgrep configuration file relative to the repository. +Enable Semgrep. -#### Enable Semgrep +#### Config File - + - + - +
LocationReview > Tools > Semgrep > EnableReview > Tools > Semgrep > Config File
Defaulttrue_No default_
- + - + - + - +
Field`reviews.tools.semgrep.enabled``reviews.tools.semgrep.config_file`
Datatypebooleanstring
Defaulttrue_No default_
-Semgrep is a static analysis tool designed to scan code for security vulnerabilities and code quality issues. +Optional path to the Semgrep configuration file relative to the repository. ### ShellCheck @@ -3802,7 +3799,7 @@ ShellCheck is a static analysis tool that finds bugs in your shell scripts. #### Enable ShellCheck - + @@ -3814,7 +3811,7 @@ ShellCheck is a static analysis tool that finds bugs in your shell scripts.
Location
- + @@ -3841,7 +3838,7 @@ Configuration for Shopify Theme Check to ensure theme quality and best practices #### Enable Shopify Theme Check - +
Field
@@ -3853,7 +3850,7 @@ Configuration for Shopify Theme Check to ensure theme quality and best practices
Location
- + @@ -3880,7 +3877,7 @@ SQLFluff is an open source, dialect-flexible and configurable SQL linter. #### Enable SQLFluff - +
Field
@@ -3892,7 +3889,7 @@ SQLFluff is an open source, dialect-flexible and configurable SQL linter.
Location
- + @@ -3916,75 +3913,75 @@ SQLFluff is an open source, dialect-flexible and configurable SQL linter. SwiftLint integration configuration object. -#### Config File +#### Enable SwiftLint - +
Field
- + - +
LocationReview > Tools > SwiftLint > Config FileReview > Tools > SwiftLint > Enable
Default_No default_true
- + - + - + - +
Field`reviews.tools.swiftlint.config_file``reviews.tools.swiftlint.enabled`
Datatypestringboolean
Default_No default_true
-Optional path to the SwiftLint configuration file relative to the repository. This is useful when the configuration file is named differently than the default '.swiftlint.yml' or '.swiftlint.yaml'. +Enable SwiftLint. -#### Enable SwiftLint +#### Config File - + - + - +
LocationReview > Tools > SwiftLint > EnableReview > Tools > SwiftLint > Config File
Defaulttrue_No default_
- + - + - + - +
Field`reviews.tools.swiftlint.enabled``reviews.tools.swiftlint.config_file`
Datatypebooleanstring
Defaulttrue_No default_
-SwiftLint is a Swift linter. +Optional path to the SwiftLint configuration file relative to the repository. This is useful when the configuration file is named differently than the default '.swiftlint.yml' or '.swiftlint.yaml'. ### YAMLlint @@ -3993,7 +3990,7 @@ YAMLlint is a linter for YAML files. #### Enable YAMLlint - + @@ -4005,7 +4002,7 @@ YAMLlint is a linter for YAML files.
Location
- + From 64be92a69cd9be9abd45a7ca2cf417189e897574 Mon Sep 17 00:00:00 2001 From: Jason McIntosh Date: Mon, 23 Jun 2025 16:20:45 -0400 Subject: [PATCH 06/15] It's .coderabbit.yaml, not coderabbit.yaml --- docs/guides/configuration-overview.md | 4 +- docs/guides/initial-configuration.md | 8 +- docs/guides/repository-settings.md | 12 +- docs/guides/setup-best-practices.md | 10 +- docs/reference/configuration.md | 214 +++++++++++++------------- 5 files changed, 124 insertions(+), 124 deletions(-) diff --git a/docs/guides/configuration-overview.md b/docs/guides/configuration-overview.md index 696d963d..a1f6de8f 100644 --- a/docs/guides/configuration-overview.md +++ b/docs/guides/configuration-overview.md @@ -40,11 +40,11 @@ If you want to apply separate CodeRabbit configuration to your organization's di manage repository-specific CodeRabbit settings in two ways: - Use the CodeRabbit web interface. -- Add a `coderabbit.yaml` file to the top level of your repository. +- Add a `.coderabbit.yaml` file to the top level of your repository. For more information, see [Set your repository preferences](/guides/repository-settings). -While the web interface provides and easier way to explore the available configuration options for your repository, we recommend using a `coderabbit.yaml` file as a best practice. For more information, see [Fine-tune reviews using YAML files](/guides/setup-best-practices#yaml). +While the web interface provides and easier way to explore the available configuration options for your repository, we recommend using a `.coderabbit.yaml` file as a best practice. For more information, see [Fine-tune reviews using YAML files](/guides/setup-best-practices#yaml). ## Initial configuration {#initial} diff --git a/docs/guides/initial-configuration.md b/docs/guides/initial-configuration.md index cfa70502..ab605120 100644 --- a/docs/guides/initial-configuration.md +++ b/docs/guides/initial-configuration.md @@ -18,7 +18,7 @@ the key settings described by this page can help you tune the behavior of CodeRabbit for the specific needs of your team. You can use this guide when initially setting up your organization and repositories with CodeRabbit, or you can return to it after using CodeRabbit for a while, when you feel ready to customize its behavior. -Each section in the guide links to specific entries in the configuration reference. Each entry in the linked reference specifies the location of its configuration setting, in either the CodeRabbit web UI or your `coderabbit.yaml` file. +Each section in the guide links to specific entries in the configuration reference. Each entry in the linked reference specifies the location of its configuration setting, in either the CodeRabbit web UI or your `.coderabbit.yaml` file. ## General settings {#general} @@ -120,7 +120,7 @@ For an overview about using path-based instructions in CodeRabbit, see [Path-bas If your repository contains files or locations that CodeRabbit should disregard when preparing code reviews—or you want CodeRabbit to limit its consideration to only certain files—then you can define one or more _path filters_. Adding path filters to a large repository containing a lot of data, generated files, or other non-code content can let CodeRabbit work faster. -For example, the following `coderabbit.yaml` excerpt instructs CodeRabbit to take review context only the contents of directories named `src/` in your repository, while disregarding any individual files with `.bin` or `.csv` extensions. +For example, the following `.coderabbit.yaml` excerpt instructs CodeRabbit to take review context only the contents of directories named `src/` in your repository, while disregarding any individual files with `.bin` or `.csv` extensions. ```yaml path_filters: @@ -135,7 +135,7 @@ For more information, see [Path filters](/reference/configuration#path-filters) You can set _path instructions_ that provide CodeRabbit with additional review instructions for various files or locations in your repository. Each path instruction specifies a path specification and a set of instructions, the latter of which you express using natural language. -For example, to give CodeRabbit review instructions specific to JavaScript and TypeScript files, you can add a section like this to your repository's `coderabbit.yaml` file: +For example, to give CodeRabbit review instructions specific to JavaScript and TypeScript files, you can add a section like this to your repository's `.coderabbit.yaml` file: ```yaml path_instructions: @@ -189,7 +189,7 @@ CodeRabbit has access to dozens of industry-standard open-source tools to help i By default, CodeRabbit considers every tool available to it during code reviews. If you want CodeRabbit to disregard certain tools, then you can disable them. -Several tools that CodeRabbit uses also allow you to specify a path to a tool-specific configuration file in your repository. For example, the following `coderabbit.yaml` excerpt directs CodeRabbit to use configuration files in the repository's `/pmd-config` directory when using the `pmd` tool: +Several tools that CodeRabbit uses also allow you to specify a path to a tool-specific configuration file in your repository. For example, the following `.coderabbit.yaml` excerpt directs CodeRabbit to use configuration files in the repository's `/pmd-config` directory when using the `pmd` tool: ```yaml reviews: diff --git a/docs/guides/repository-settings.md b/docs/guides/repository-settings.md index 0f4009b6..bfa2bcee 100644 --- a/docs/guides/repository-settings.md +++ b/docs/guides/repository-settings.md @@ -11,14 +11,14 @@ Git repository. For a general overview of configuring CodeRabbit, see [Configure CodeRabbit provides two ways to manage its code-review behavior with each of your organization's repositories: 1. View or modify your per-repository settings using the CodeRabbit web interface. -1. Add a `coderabbit.yaml` file to your repository. +1. Add a `.coderabbit.yaml` file to your repository. -Any settings that you define in the `coderabbit.yaml` file take precedence over +Any settings that you define in the `.coderabbit.yaml` file take precedence over settings defined by the web interface. If your repository doesn't have a -`coderabbit.yaml` file, then CodeRabbit applies only the settings from the web +`.coderabbit.yaml` file, then CodeRabbit applies only the settings from the web interface. -While the web interface provides and easier way to explore the available configuration options for your repository, we recommend using a `coderabbit.yaml` file as a best practice. For more information, see [Fine-tune reviews using YAML files](/guides/setup-best-practices#yaml). +While the web interface provides and easier way to explore the available configuration options for your repository, we recommend using a `.coderabbit.yaml` file as a best practice. For more information, see [Fine-tune reviews using YAML files](/guides/setup-best-practices#yaml). ## Browse and modify your settings using the web interface {#modify} @@ -30,9 +30,9 @@ To view of modify your repsository settings using the CodeRabbit web interface, 1. If the **Use Organization Settings** toggle is on, then click it to turn it off. If you leave it on, then CodeRabbit applies the settings you have set through [the organization-configuration page](/guide/organization-settings) to this repository. 1. Browse and modify the settings as needed. If you do make changes, click **Apply Changes** when you are finished. -## Configure your repository with `coderabbit.yaml` +## Configure your repository with `.coderabbit.yaml` -For more information about creating and updating a `coderabbit.yaml` file in +For more information about creating and updating a `.coderabbit.yaml` file in your repository, see [Add a configuration file](/getting-started/configure-coderabbit). ## What's next {#whats-next} diff --git a/docs/guides/setup-best-practices.md b/docs/guides/setup-best-practices.md index 56e39dee..c6caa094 100644 --- a/docs/guides/setup-best-practices.md +++ b/docs/guides/setup-best-practices.md @@ -66,18 +66,18 @@ CodeRabbit gives you two ways to configure how it works with your team's reposit - The **Organization Settings** and **Repositories** pages of [the CodeRabbit web interface](https://app.coderabbit.ai/login) -- A [`coderabbit.yaml` file](/getting-started/configure-coderabbit/) in your repository +- A [`.coderabbit.yaml` file](/getting-started/configure-coderabbit/) in your repository The web interface lets you set up your organization's code review preferences rapidly, and can help you get familiar with CodeRabbit configuration options. -We recommend adding a `coderabbit.yaml` file to repositories, as well. Using this file has several advantages over using only the web interface: +We recommend adding a `.coderabbit.yaml` file to repositories, as well. Using this file has several advantages over using only the web interface: - It applies version control to your repository's CodeRabbit settings, letting you track changes, view configuration history, and revert to previous configurations as needed. - During code reviews, CodeRabbit loads the file along with rest of your repository. This means that you can include setting changes as part of a pull request, and CodeRabbit both analyzes and applies these settings during its review. - The file makes the repository's CodeRabbit settings transparent to all of the repository's contributors. -Repository-level settings defined by a `coderabbit.yaml` take precedence over the +Repository-level settings defined by a `.coderabbit.yaml` take precedence over the settings defined for that repository or for your organization using the CodeRabbit web interface. For more information, see [Add a configuration file](/getting-started/configure-coderabbit/). @@ -94,7 +94,7 @@ Reducing the number of contextual files that CodeRabbit needs to read and analyz when preparing a code review can help make its code reviews faster. You can define path filters using the CodeRabbit -web interface, or with [a `coderabbit.yaml` file](/getting-started/configure-coderabbit/). +web interface, or with [a `.coderabbit.yaml` file](/getting-started/configure-coderabbit/). ### Trust the defaults {#defaults} @@ -106,7 +106,7 @@ CodeRabbit gives you control over a number of its core code-review features, let tools](/tools) that are available to it during code reviews. This helps CodeRabbit keep its reviews broad and flexible. - **Knowledge base**: CodeRabbit [knowledge base](/integrations/knowledge-base/) features, including learnings and issue tracking, can require data retention. If your organization needs to meet stricter data-retention policies, then you can opt out of using these features. -You can configure your use of the above features using the CodeRabbit web interface, or [a `coderabbit.yaml` file](/getting-started/configure-coderabbit/). +You can configure your use of the above features using the CodeRabbit web interface, or [a `.coderabbit.yaml` file](/getting-started/configure-coderabbit/). ### Write specific CI/CD error messages {#pipeline} diff --git a/docs/reference/configuration.md b/docs/reference/configuration.md index cd6eed4e..c7fcc620 100644 --- a/docs/reference/configuration.md +++ b/docs/reference/configuration.md @@ -16,7 +16,7 @@ For an overview of how configuration works with CodeRabbit, see [Configure CodeR Each entry in this reference corresponds to a single CodeRabbit configuration setting, including an informational table and a description of what the setting does. The tables have two views, which you can select with a tab: - The **Web UI** tab displays the location and default value of the setting in the CodeRabbit web interface, for both [organization settings](/guides/organization-settings) and [repository settings](/guides/repository-settings). -- The **coderabbit.yaml** tab displays information about the field's location and datatype in [your repository's `coderabbit.yaml` file](/getting-started/configure-coderabbit). +- The **coderabbit.yaml** tab displays information about the field's location and datatype in [your repository's `.coderabbit.yaml` file](/getting-started/configure-coderabbit). ## Global Settings @@ -35,7 +35,7 @@ Each entry in this reference corresponds to a single CodeRabbit configuration se
Field
- + _This setting can be defined only in the web UI settings for your organization._ @@ -71,7 +71,7 @@ If you re-enable data retention, then CodeRabbit re-enables these features, and - + @@ -107,7 +107,7 @@ code reviews.
Field
- + @@ -144,7 +144,7 @@ For more information about payment tiers and features, see [Pricing](https://www
Field
- + @@ -180,7 +180,7 @@ to American English.
Field
- + @@ -227,7 +227,7 @@ A few possible examples:
Field
- + @@ -262,7 +262,7 @@ Abort the in-progress review if the pull request is closed or merged.
Field
- + @@ -309,7 +309,7 @@ and [Let CodeRabbit read your issue trakcer](https://docs.coderabbit.ai/guides/s
Field
- + @@ -344,7 +344,7 @@ Automatically apply the suggested labels to the PR/MR.
Field
- + @@ -379,7 +379,7 @@ Automatically assign suggested reviewers to the pull request
Field
- + @@ -414,7 +414,7 @@ Custom instructions for auto-generating the PR/MR title.
Field
- + @@ -449,7 +449,7 @@ Add this keyword in the PR/MR title to auto-generate the title.
Field
- + @@ -484,7 +484,7 @@ Generate a summary of the changed files in the walkthrough.
Field
- + @@ -519,7 +519,7 @@ Generate walkthrough in a markdown collapsible section.
Field
- + @@ -554,7 +554,7 @@ Set the commit status to 'pending' when the review is in progress and 'success'
Field
- + @@ -603,7 +603,7 @@ all data retention, then your repositories won't keep a cache.
Field
- + @@ -638,7 +638,7 @@ Set the commit status to 'failure' when the PR cannot be reviewed by CodeRabbit
Field
- + @@ -673,7 +673,7 @@ Generate a high level summary of the changes in the PR/MR description.
Field
- + @@ -708,7 +708,7 @@ Include the high level summary in the walkthrough comment.
Field
- + @@ -743,7 +743,7 @@ Placeholder in the PR/MR description that gets replaced with the high level summ
Field
- + @@ -778,7 +778,7 @@ Provide guidelines for suggesting labels for the PR/MR. When specific labels or
Field
- + @@ -841,7 +841,7 @@ For more information, see [Speed up reviews by adding path filters](https://docs
Field
- + @@ -904,7 +904,7 @@ see [the `awesome-coderabbit` public repository](https://github.com/coderabbitai
Field
- + @@ -939,7 +939,7 @@ Generate a poem in the walkthrough comment.
Field
- + @@ -982,7 +982,7 @@ contexts. The `Assertive` profile mode can get quite nitpicky in some circumstan
Field
- + @@ -1017,7 +1017,7 @@ Include possibly related issues in the walkthrough.
Field
- + @@ -1052,7 +1052,7 @@ Include possibly related pull requests in the walkthrough.
Field
- + @@ -1092,7 +1092,7 @@ to require before a pull request can be merged.
Field
- + @@ -1127,7 +1127,7 @@ Post review details on each review. Additionally, post a review status when a re
Field
- + @@ -1162,7 +1162,7 @@ Generate sequence diagrams in the walkthrough.
Field
- + @@ -1197,7 +1197,7 @@ Suggest labels based on the changes in the pull request in the walkthrough.
Field
- + @@ -1234,7 +1234,7 @@ Suggest reviewers based on the changes in the pull request in the walkthrough.
Field
- + @@ -1273,7 +1273,7 @@ Disabling this setting also effectively disables all of the other settings liste
Field
- + @@ -1312,7 +1312,7 @@ We recommend leaving this option enabled.
Field
- + @@ -1351,7 +1351,7 @@ reviews pull requests on both your repository's default branch and its `staging`
Field
- + @@ -1387,7 +1387,7 @@ in your Git platform.
Field
- + @@ -1422,7 +1422,7 @@ Ignore reviewing if the title of the pull request contains any of these keywords
Field
- + @@ -1462,7 +1462,7 @@ In this case, you can manually request reviews of pull requests lacking a qualif
Field
- + @@ -1498,7 +1498,7 @@ added in a pull request. For more information, see [Docstrings](/finishing-touch
Field
- + @@ -1536,7 +1536,7 @@ added in a pull request. For more information, see [Unit Test Generation](/finis
Field
- + @@ -1573,7 +1573,7 @@ Enable the bot to reply automatically without requiring the user to tag it.
Field
- + @@ -1608,7 +1608,7 @@ Enable the Jira integration for opening issues, etc. 'auto' disables the integra
Field
- + @@ -1647,7 +1647,7 @@ Enable the Linear integration for opening issues, etc. 'auto' disables the integ
Field
- + @@ -1682,7 +1682,7 @@ Disable all knowledge base features that require data retention. If you opt out
Field
- + @@ -1717,7 +1717,7 @@ Specify the scope of pull requests to use for the knowledge base. 'local' uses t
Field
- + @@ -1752,7 +1752,7 @@ Enable the web search integration.
Field
- + @@ -1789,7 +1789,7 @@ Specify the scope of git platform (GitHub/GitLab) issues to use for the knowledg
Field
- + @@ -1824,7 +1824,7 @@ Enable the Jira knowledge base integration. 'auto' disables the integration for
Field
- + @@ -1859,7 +1859,7 @@ Specify the Jira project keys to use for the knowledge base.
Field
- + @@ -1896,7 +1896,7 @@ Specify the scope of learnings to use for the knowledge base. 'local' uses the r
Field
- + @@ -1931,7 +1931,7 @@ Enable the Linear knowledge base integration. 'auto' disables the integration fo
Field
- + @@ -1968,7 +1968,7 @@ Specify the Linear team keys (identifiers) to use for the knowledge base. E.g. '
Field
- + @@ -2003,7 +2003,7 @@ Set the language for docstrings by using the corresponding ISO language code.
Field
- + @@ -2038,7 +2038,7 @@ Provide additional guidelines for docstring generation based on file paths.
Field
- + @@ -2081,7 +2081,7 @@ actionlint is a static checker for GitHub Actions workflow files.
Field
- + @@ -2120,7 +2120,7 @@ Enable ast-grep | ast-grep is a code analysis tool that helps you to find patter
Field
- + @@ -2155,7 +2155,7 @@ Use ast-grep essentials package.
Field
- + @@ -2190,7 +2190,7 @@ Predefined packages to be used.
Field
- + @@ -2225,7 +2225,7 @@ List of rules directories.
Field
- + @@ -2264,7 +2264,7 @@ Biome is a fast formatter, linter, and analyzer for web projects.
Field
- + @@ -2303,7 +2303,7 @@ Brakeman is a static analysis security vulnerability scanner for Ruby on Rails a
Field
- + @@ -2342,7 +2342,7 @@ Buf offers linting for Protobuf files.
Field
- + @@ -2381,7 +2381,7 @@ checkmake is a linter for Makefiles.
Field
- + @@ -2420,7 +2420,7 @@ Checkov is a static code analysis tool for infrastructure-as-code files.
Field
- + @@ -2459,7 +2459,7 @@ CircleCI tool is a static checker for CircleCI config files.
Field
- + @@ -2498,7 +2498,7 @@ Clippy is a collection of lints to catch common mistakes and improve your Rust c
Field
- + @@ -2537,7 +2537,7 @@ Cppcheck is a static code analysis tool for the C and C++ programming languages.
Field
- + @@ -2576,7 +2576,7 @@ Detekt is a static code analysis tool for Kotlin files.
Field
- + @@ -2611,7 +2611,7 @@ Enable detekt.
Field
- + @@ -2650,7 +2650,7 @@ dotenv-linter is a tool for checking and fixing .env files for problems and best
Field
- + @@ -2689,7 +2689,7 @@ ESLint is a static code analysis tool for JavaScript files.
Field
- + @@ -2728,7 +2728,7 @@ GitHub Checks integration configuration.
Field
- + @@ -2763,7 +2763,7 @@ Enable integration, defaults to true
Field
- + @@ -2802,7 +2802,7 @@ Gitleaks is a secret scanner.
Field
- + @@ -2841,7 +2841,7 @@ golangci-lint is a fast linters runner for Go.
Field
- + @@ -2876,7 +2876,7 @@ Enable golangci-lint.
Field
- + @@ -2915,7 +2915,7 @@ Hadolint is a Dockerfile linter.
Field
- + @@ -2954,7 +2954,7 @@ HTMLHint is a static code analysis tool for HTML files.
Field
- + @@ -2989,7 +2989,7 @@ Enable HTMLHint.
Field
- + @@ -3028,7 +3028,7 @@ LanguageTool is a style and grammar checker for 30+ languages.
Field
- + @@ -3063,7 +3063,7 @@ IDs of categories to be disabled. Note: TYPOS, TYPOGRAPHY, and CASING are always
Field
- + @@ -3098,7 +3098,7 @@ IDs of rules to be disabled. Note: EN_UNPAIRED_BRACKETS, and EN_UNPAIRED_QUOTES
Field
- + @@ -3133,7 +3133,7 @@ Enable LanguageTool
Field
- + @@ -3168,7 +3168,7 @@ IDs of categories to be enabled.
Field
- + @@ -3203,7 +3203,7 @@ Only the rules and categories whose IDs are specified with 'enabledRules' or 'en
Field
- + @@ -3238,7 +3238,7 @@ IDs of rules to be enabled. The rule won't run unless 'level' is set to a level
Field
- + @@ -3277,7 +3277,7 @@ Configuration for Lua code linting to ensure code quality
Field
- + @@ -3316,7 +3316,7 @@ markdownlint-cli2 is a static analysis tool to enforce standards and consistency
Field
- + @@ -3355,7 +3355,7 @@ OXC is a JavaScript/TypeScript linter written in Rust.
Field
- + @@ -3394,7 +3394,7 @@ PHPStan is a tool to analyze PHP code.
Field
- + @@ -3429,7 +3429,7 @@ PHPStan requires [config file](https://phpstan.org/config-reference#config-file)
Field
- + @@ -3468,7 +3468,7 @@ PMD is an extensible multilanguage static code analyzer. It’s mainly concerned
Field
- + @@ -3503,7 +3503,7 @@ Enable PMD.
Field
- + @@ -3542,7 +3542,7 @@ Configuration for Prisma Schema linting to ensure schema file quality
Field
- + @@ -3581,7 +3581,7 @@ Pylint is a Python static code analysis tool.
Field
- + @@ -3620,7 +3620,7 @@ Regal is a linter and language server for Rego.
Field
- + @@ -3659,7 +3659,7 @@ RuboCop is a Ruby static code analyzer (a.k.a. linter ) and code formatter.
Field
- + @@ -3698,7 +3698,7 @@ Ruff is a Python linter and code formatter.
Field
- + @@ -3737,7 +3737,7 @@ Semgrep is a static analysis tool designed to scan code for security vulnerabili
Field
- + @@ -3772,7 +3772,7 @@ Enable Semgrep.
Field
- + @@ -3811,7 +3811,7 @@ ShellCheck is a static analysis tool that finds bugs in your shell scripts.
Field
- + @@ -3850,7 +3850,7 @@ Configuration for Shopify Theme Check to ensure theme quality and best practices
Field
- + @@ -3889,7 +3889,7 @@ SQLFluff is an open source, dialect-flexible and configurable SQL linter.
Field
- + @@ -3928,7 +3928,7 @@ SwiftLint integration configuration object.
Field
- + @@ -3963,7 +3963,7 @@ Enable SwiftLint.
Field
- + @@ -4002,7 +4002,7 @@ YAMLlint is a linter for YAML files.
Field
- + From fa396e2aea28209f2d066384cf1fb38a0894c1ee Mon Sep 17 00:00:00 2001 From: Jason McIntosh Date: Mon, 23 Jun 2025 16:34:58 -0400 Subject: [PATCH 07/15] Add a config template file to the docs. (#410) --- docs/getting-started/configure-coderabbit.md | 3 +- docs/reference/yaml-template.md | 184 +++++++++++++++++++ sidebars.ts | 1 + 3 files changed, 186 insertions(+), 2 deletions(-) create mode 100644 docs/reference/yaml-template.md diff --git a/docs/getting-started/configure-coderabbit.md b/docs/getting-started/configure-coderabbit.md index e8ee2e06..2e2a14f4 100644 --- a/docs/getting-started/configure-coderabbit.md +++ b/docs/getting-started/configure-coderabbit.md @@ -34,8 +34,7 @@ configuration in a YAML format. You can then copy the configuration to a ::: You can add a `.coderabbit.yaml` configuration file to the root of your -repositories. Below is a sample YAML file that can be used as a starting point -and changed as needed: +repositories. For a complete sample `.coderabbit.yaml` file which you can add to your repository and update as needed, see [Configuration file template](/reference/yaml-template). Write your configuration file in the below editor to validate: diff --git a/docs/reference/yaml-template.md b/docs/reference/yaml-template.md new file mode 100644 index 00000000..fe9d5491 --- /dev/null +++ b/docs/reference/yaml-template.md @@ -0,0 +1,184 @@ +--- +title: Configuration file template +--- + +You can use the following template as a basis for a new `.coderabbit.yaml` configuration file at the root level of your repository. + +If used as-is as a `.coderabbit.yaml` file, then this template sets the default, recommended values for [all CodeRabbit repository options](/reference/configuration). You can then update the values to best suit your team's code-review needs. + +For more information about using a `.coderabbit.yaml` file, see [Add a configuration file](/getting-started/configure-coderabbit). + +For a general overview of CodeRabbit configuration, see [Configure CodeRabbit](/guides/configuration-overview). + +```yaml +# yaml-language-server: $schema=https://storage.googleapis.com/coderabbit_public_assets/schema.v2.json + +language: en-US +tone_instructions: '' +early_access: true +enable_free_tier: true +reviews: + profile: chill + request_changes_workflow: false + high_level_summary: true + high_level_summary_placeholder: '@coderabbitai summary' + high_level_summary_in_walkthrough: false + auto_title_placeholder: '@coderabbitai' + auto_title_instructions: '' + review_status: true + commit_status: true + fail_commit_status: false + collapse_walkthrough: false + changed_files_summary: true + sequence_diagrams: true + assess_linked_issues: true + related_issues: true + related_prs: true + suggested_labels: true + auto_apply_labels: false + suggested_reviewers: true + auto_assign_reviewers: false + poem: true + labeling_instructions: + - label: '' + instructions: '' + path_filters: [] + path_instructions: + - path: '' + instructions: '' + abort_on_close: true + disable_cache: false + auto_review: + enabled: true + auto_incremental_review: true + ignore_title_keywords: [] + labels: [] + drafts: false + base_branches: [] + finishing_touches: + docstrings: + enabled: true + unit_tests: + enabled: true + tools: + ast-grep: + rule_dirs: [] + util_dirs: [] + essential_rules: true + packages: [] + shellcheck: + enabled: true + ruff: + enabled: true + markdownlint: + enabled: true + github-checks: + enabled: true + timeout_ms: 90000 + languagetool: + enabled: true + enabled_rules: [] + disabled_rules: [] + enabled_categories: [] + disabled_categories: [] + enabled_only: false + level: default + biome: + enabled: true + hadolint: + enabled: true + swiftlint: + enabled: true + config_file: '' + phpstan: + enabled: true + level: default + golangci-lint: + enabled: true + config_file: '' + yamllint: + enabled: true + gitleaks: + enabled: true + checkov: + enabled: true + detekt: + enabled: true + config_file: '' + eslint: + enabled: true + rubocop: + enabled: true + buf: + enabled: true + regal: + enabled: true + actionlint: + enabled: true + pmd: + enabled: true + config_file: '' + cppcheck: + enabled: true + semgrep: + enabled: true + config_file: '' + circleci: + enabled: true + clippy: + enabled: true + sqlfluff: + enabled: true + prismaLint: + enabled: true + pylint: + enabled: true + oxc: + enabled: true + shopifyThemeCheck: + enabled: true + luacheck: + enabled: true + brakeman: + enabled: true + dotenvLint: + enabled: true + htmlhint: true + enabled: true + config_file: '' + checkmake: + enabled: true +chat: + auto_reply: true + integrations: + jira: + usage: auto + linear: + usage: auto +knowledge_base: + opt_out: false + web_search: + enabled: true + learnings: + scope: auto + issues: + scope: auto + jira: + usage: auto + project_keys: [] + linear: + usage: auto + team_keys: [] + pull_requests: + scope: auto +code_generation: + docstrings: + language: en-US + path_instructions: + - path: '' + instructions: '' + unit_tests: + path_instructions: + - path: '' + instructions: '' +``` diff --git a/sidebars.ts b/sidebars.ts index 46a040c2..5b42e112 100644 --- a/sidebars.ts +++ b/sidebars.ts @@ -167,6 +167,7 @@ const sidebars: SidebarsConfig = { }, "reference/review-commands", "reference/configuration", + "reference/yaml-template", { type: "category", label: "Supported tools", From 89ad6fba72413a3096b76e30314f8df2fb33f8d9 Mon Sep 17 00:00:00 2001 From: Jason McIntosh Date: Mon, 23 Jun 2025 16:41:25 -0400 Subject: [PATCH 08/15] Broken link --- docs/guides/repository-settings.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/guides/repository-settings.md b/docs/guides/repository-settings.md index bfa2bcee..cec6de44 100644 --- a/docs/guides/repository-settings.md +++ b/docs/guides/repository-settings.md @@ -27,7 +27,7 @@ To view of modify your repsository settings using the CodeRabbit web interface, 1. Visit [the CodeRabbit web interface](https://app.coderabbit.ai/settings/repositories). 1. In the sidebar, click **Repositories**. 1. Click the gear-shaped **Settings** icon of the repository whose settings you want to view or modify. -1. If the **Use Organization Settings** toggle is on, then click it to turn it off. If you leave it on, then CodeRabbit applies the settings you have set through [the organization-configuration page](/guide/organization-settings) to this repository. +1. If the **Use Organization Settings** toggle is on, then click it to turn it off. If you leave it on, then CodeRabbit applies the settings you have set through [the organization-configuration page](/guides/organization-settings) to this repository. 1. Browse and modify the settings as needed. If you do make changes, click **Apply Changes** when you are finished. ## Configure your repository with `.coderabbit.yaml` From b6019aee0dff1ae6334ecc60296365f4fbe8cf90 Mon Sep 17 00:00:00 2001 From: Jason McIntosh Date: Mon, 23 Jun 2025 16:45:01 -0400 Subject: [PATCH 09/15] tabspace --- docs/reference/yaml-template.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/yaml-template.md b/docs/reference/yaml-template.md index fe9d5491..6d713312 100644 --- a/docs/reference/yaml-template.md +++ b/docs/reference/yaml-template.md @@ -142,7 +142,7 @@ reviews: brakeman: enabled: true dotenvLint: - enabled: true + enabled: true htmlhint: true enabled: true config_file: '' From 8f3fa8310484211e0000519caf78b66dafd35b9b Mon Sep 17 00:00:00 2001 From: Jason McIntosh Date: Mon, 23 Jun 2025 19:11:15 -0400 Subject: [PATCH 10/15] Tweaks --- docs/guides/initial-configuration.md | 2 +- docs/reference/configuration.md | 635 ++++++++++++++++++--------- 2 files changed, 424 insertions(+), 213 deletions(-) diff --git a/docs/guides/initial-configuration.md b/docs/guides/initial-configuration.md index ab605120..9a537855 100644 --- a/docs/guides/initial-configuration.md +++ b/docs/guides/initial-configuration.md @@ -181,7 +181,7 @@ For more information, see [Labels](/reference/configuration#labels) in the confi If you want CodeRabbit to extend its automatic-review attention beyond the default branch of your repository—that is, `main` or `master`, usually—then you can give CodeRabbit a list of other branches that it is allowed to review. -For more information, see [Branches](/reference/configuration#brancehs) in the configuration reference. +For more information, see [Base branches](/reference/configuration#base-branches) in the configuration reference. ## Configure tools {#tools} diff --git a/docs/reference/configuration.md b/docs/reference/configuration.md index c7fcc620..3dbd8fbe 100644 --- a/docs/reference/configuration.md +++ b/docs/reference/configuration.md @@ -25,6 +25,7 @@ Each entry in this reference corresponds to a single CodeRabbit configuration se
Field
+ @@ -33,7 +34,7 @@ Each entry in this reference corresponds to a single CodeRabbit configuration se -
Location General > Data RetentionDefault true
+
_This setting can be defined only in the web UI settings for your @@ -61,6 +62,7 @@ If you re-enable data retention, then CodeRabbit re-enables these features, and + @@ -69,10 +71,11 @@ If you re-enable data retention, then CodeRabbit re-enables these features, and -
Location General > Early AccessDefault false
+
+ @@ -85,7 +88,7 @@ If you re-enable data retention, then CodeRabbit re-enables these features, and -
Field `early_access`Default false
+
@@ -97,6 +100,7 @@ code reviews. + @@ -105,10 +109,11 @@ code reviews. -
Location General > Enable Free TierDefault true
+
+ @@ -121,7 +126,7 @@ code reviews. -
Field `enable_free_tier`Default true
+
@@ -134,6 +139,7 @@ For more information about payment tiers and features, see [Pricing](https://www + @@ -142,10 +148,11 @@ For more information about payment tiers and features, see [Pricing](https://www -
Location General > LanguageDefault en-US
+
+ @@ -158,7 +165,7 @@ For more information about payment tiers and features, see [Pricing](https://www -
Field `language`Default "en-US"
+
@@ -170,6 +177,7 @@ to American English. + @@ -178,10 +186,11 @@ to American English. -
Location General > Tone InstructionsDefault
+
+ @@ -194,7 +203,7 @@ to American English. -
Field `tone_instructions`Default
+
@@ -217,6 +226,7 @@ A few possible examples: + @@ -225,10 +235,11 @@ A few possible examples: -
Location Review > Settings > Abort On CloseDefault true
+
+ @@ -241,7 +252,7 @@ A few possible examples: -
Field `reviews.abort_on_close`Default true
+
@@ -252,6 +263,7 @@ Abort the in-progress review if the pull request is closed or merged. + @@ -260,10 +272,11 @@ Abort the in-progress review if the pull request is closed or merged. -
Location Review > Settings > Assess Linked IssuesDefault true
+
+ @@ -276,7 +289,7 @@ Abort the in-progress review if the pull request is closed or merged. -
Field `reviews.assess_linked_issues`Default true
+
@@ -299,6 +312,7 @@ and [Let CodeRabbit read your issue trakcer](https://docs.coderabbit.ai/guides/s + @@ -307,10 +321,11 @@ and [Let CodeRabbit read your issue trakcer](https://docs.coderabbit.ai/guides/s -
Location Review > Settings > Auto Apply LabelsDefault false
+
+ @@ -323,7 +338,7 @@ and [Let CodeRabbit read your issue trakcer](https://docs.coderabbit.ai/guides/s -
Field `reviews.auto_apply_labels`Default false
+
@@ -334,6 +349,7 @@ Automatically apply the suggested labels to the PR/MR. + @@ -342,10 +358,11 @@ Automatically apply the suggested labels to the PR/MR. -
Location Review > Settings > Auto Assign ReviewersDefault false
+
+ @@ -358,7 +375,7 @@ Automatically apply the suggested labels to the PR/MR. -
Field `reviews.auto_assign_reviewers`Default false
+
@@ -369,6 +386,7 @@ Automatically assign suggested reviewers to the pull request + @@ -377,10 +395,11 @@ Automatically assign suggested reviewers to the pull request -
Location Review > Settings > Auto Title InstructionsDefault
+
+ @@ -393,7 +412,7 @@ Automatically assign suggested reviewers to the pull request -
Field `reviews.auto_title_instructions`Default
+
@@ -404,6 +423,7 @@ Custom instructions for auto-generating the PR/MR title. + @@ -412,10 +432,11 @@ Custom instructions for auto-generating the PR/MR title. -
Location Review > Settings > Auto Title PlaceholderDefault @coderabbitai
+
+ @@ -428,7 +449,7 @@ Custom instructions for auto-generating the PR/MR title. -
Field `reviews.auto_title_placeholder`Default "@coderabbitai"
+
@@ -439,6 +460,7 @@ Add this keyword in the PR/MR title to auto-generate the title. + @@ -447,10 +469,11 @@ Add this keyword in the PR/MR title to auto-generate the title. -
Location Review > Settings > Changed Files SummaryDefault true
+
+ @@ -463,7 +486,7 @@ Add this keyword in the PR/MR title to auto-generate the title. -
Field `reviews.changed_files_summary`Default true
+
@@ -474,6 +497,7 @@ Generate a summary of the changed files in the walkthrough. + @@ -482,10 +506,11 @@ Generate a summary of the changed files in the walkthrough. -
Location Review > Settings > Collapse WalkthroughDefault false
+
+ @@ -498,7 +523,7 @@ Generate a summary of the changed files in the walkthrough. -
Field `reviews.collapse_walkthrough`Default false
+
@@ -509,6 +534,7 @@ Generate walkthrough in a markdown collapsible section. + @@ -517,10 +543,11 @@ Generate walkthrough in a markdown collapsible section. -
Location Review > Settings > Commit StatusDefault true
+
+ @@ -533,7 +560,7 @@ Generate walkthrough in a markdown collapsible section. -
Field `reviews.commit_status`Default true
+
@@ -544,6 +571,7 @@ Set the commit status to 'pending' when the review is in progress and 'success' + @@ -552,10 +580,11 @@ Set the commit status to 'pending' when the review is in progress and 'success' -
Location Review > Settings > Disable CacheDefault false
+
+ @@ -568,7 +597,7 @@ Set the commit status to 'pending' when the review is in progress and 'success' -
Field `reviews.disable_cache`Default false
+
@@ -593,6 +622,7 @@ all data retention, then your repositories won't keep a cache. + @@ -601,10 +631,11 @@ all data retention, then your repositories won't keep a cache. -
Location Review > Settings > Fail Commit StatusDefault false
+
+ @@ -617,7 +648,7 @@ all data retention, then your repositories won't keep a cache. -
Field `reviews.fail_commit_status`Default false
+
@@ -628,6 +659,7 @@ Set the commit status to 'failure' when the PR cannot be reviewed by CodeRabbit + @@ -636,10 +668,11 @@ Set the commit status to 'failure' when the PR cannot be reviewed by CodeRabbit -
Location Review > Settings > High Level SummaryDefault true
+
+ @@ -652,7 +685,7 @@ Set the commit status to 'failure' when the PR cannot be reviewed by CodeRabbit -
Field `reviews.high_level_summary`Default true
+
@@ -663,6 +696,7 @@ Generate a high level summary of the changes in the PR/MR description. + @@ -671,10 +705,11 @@ Generate a high level summary of the changes in the PR/MR description. -
Location Review > Settings > High Level Summary In WalkthroughDefault false
+
+ @@ -687,7 +722,7 @@ Generate a high level summary of the changes in the PR/MR description. -
Field `reviews.high_level_summary_in_walkthrough`Default false
+
@@ -698,6 +733,7 @@ Include the high level summary in the walkthrough comment. + @@ -706,10 +742,11 @@ Include the high level summary in the walkthrough comment. -
Location Review > Settings > High Level Summary PlaceholderDefault @coderabbitai summary
+
+ @@ -722,7 +759,7 @@ Include the high level summary in the walkthrough comment. -
Field `reviews.high_level_summary_placeholder`Default "@coderabbitai summary"
+
@@ -733,6 +770,7 @@ Placeholder in the PR/MR description that gets replaced with the high level summ + @@ -741,10 +779,11 @@ Placeholder in the PR/MR description that gets replaced with the high level summ -
Location Review > Settings > Labeling InstructionsDefault _Empty array_
+
+ @@ -757,7 +796,7 @@ Placeholder in the PR/MR description that gets replaced with the high level summ -
Field `reviews.labeling_instructions`Default []
+
@@ -768,6 +807,7 @@ Provide guidelines for suggesting labels for the PR/MR. When specific labels or + @@ -776,10 +816,11 @@ Provide guidelines for suggesting labels for the PR/MR. When specific labels or -
Location Review > Settings > Path FiltersDefault _Empty array_
+
+ @@ -792,7 +833,7 @@ Provide guidelines for suggesting labels for the PR/MR. When specific labels or -
Field `reviews.path_filters`Default []
+
@@ -831,6 +872,7 @@ For more information, see [Speed up reviews by adding path filters](https://docs + @@ -839,10 +881,11 @@ For more information, see [Speed up reviews by adding path filters](https://docs -
Location Review > Settings > Path InstructionsDefault _Empty array_
+
+ @@ -855,7 +898,7 @@ For more information, see [Speed up reviews by adding path filters](https://docs -
Field `reviews.path_instructions`Default []
+
@@ -894,6 +937,7 @@ see [the `awesome-coderabbit` public repository](https://github.com/coderabbitai + @@ -902,10 +946,11 @@ see [the `awesome-coderabbit` public repository](https://github.com/coderabbitai -
Location Review > Settings > PoemDefault true
+
+ @@ -918,7 +963,7 @@ see [the `awesome-coderabbit` public repository](https://github.com/coderabbitai -
Field `reviews.poem`Default true
+
@@ -929,6 +974,7 @@ Generate a poem in the walkthrough comment. + @@ -937,10 +983,11 @@ Generate a poem in the walkthrough comment. -
Location Review > Settings > ProfileDefault chill
+
+ @@ -953,7 +1000,7 @@ Generate a poem in the walkthrough comment. -
Field `reviews.profile`Default "chill"
+
@@ -972,6 +1019,7 @@ contexts. The `Assertive` profile mode can get quite nitpicky in some circumstan + @@ -980,10 +1028,11 @@ contexts. The `Assertive` profile mode can get quite nitpicky in some circumstan -
Location Review > Settings > Related IssuesDefault true
+
+ @@ -996,7 +1045,7 @@ contexts. The `Assertive` profile mode can get quite nitpicky in some circumstan -
Field `reviews.related_issues`Default true
+
@@ -1007,6 +1056,7 @@ Include possibly related issues in the walkthrough. + @@ -1015,10 +1065,11 @@ Include possibly related issues in the walkthrough. -
Location Review > Settings > Related PRsDefault true
+
+ @@ -1031,7 +1082,7 @@ Include possibly related issues in the walkthrough. -
Field `reviews.related_prs`Default true
+
@@ -1042,6 +1093,7 @@ Include possibly related pull requests in the walkthrough. + @@ -1050,10 +1102,11 @@ Include possibly related pull requests in the walkthrough. -
Location Review > Settings > Request Changes WorkflowDefault false
+
+ @@ -1066,7 +1119,7 @@ Include possibly related pull requests in the walkthrough. -
Field `reviews.request_changes_workflow`Default false
+
@@ -1082,6 +1135,7 @@ to require before a pull request can be merged. + @@ -1090,10 +1144,11 @@ to require before a pull request can be merged. -
Location Review > Settings > Review StatusDefault true
+
+ @@ -1106,7 +1161,7 @@ to require before a pull request can be merged. -
Field `reviews.review_status`Default true
+
@@ -1117,6 +1172,7 @@ Post review details on each review. Additionally, post a review status when a re + @@ -1125,10 +1181,11 @@ Post review details on each review. Additionally, post a review status when a re -
Location Review > Settings > Sequence DiagramsDefault true
+
+ @@ -1141,7 +1198,7 @@ Post review details on each review. Additionally, post a review status when a re -
Field `reviews.sequence_diagrams`Default true
+
@@ -1152,6 +1209,7 @@ Generate sequence diagrams in the walkthrough. + @@ -1160,10 +1218,11 @@ Generate sequence diagrams in the walkthrough. -
Location Review > Settings > Suggested LabelsDefault true
+
+ @@ -1176,7 +1235,7 @@ Generate sequence diagrams in the walkthrough. -
Field `reviews.suggested_labels`Default true
+
@@ -1187,6 +1246,7 @@ Suggest labels based on the changes in the pull request in the walkthrough. + @@ -1195,10 +1255,11 @@ Suggest labels based on the changes in the pull request in the walkthrough. -
Location Review > Settings > Suggested ReviewersDefault true
+
+ @@ -1211,7 +1272,7 @@ Suggest labels based on the changes in the pull request in the walkthrough. -
Field `reviews.suggested_reviewers`Default true
+
@@ -1224,6 +1285,7 @@ Suggest reviewers based on the changes in the pull request in the walkthrough. + @@ -1232,10 +1294,11 @@ Suggest reviewers based on the changes in the pull request in the walkthrough. -
Location Review > Auto Review > Automatic ReviewDefault true
+
+ @@ -1248,7 +1311,7 @@ Suggest reviewers based on the changes in the pull request in the walkthrough. -
Field `reviews.auto_review.enabled`Default true
+
@@ -1263,6 +1326,7 @@ Disabling this setting also effectively disables all of the other settings liste + @@ -1271,10 +1335,11 @@ Disabling this setting also effectively disables all of the other settings liste -
Location Review > Auto Review > Automatic Incremental ReviewDefault true
+
+ @@ -1287,7 +1352,7 @@ Disabling this setting also effectively disables all of the other settings liste -
Field `reviews.auto_review.auto_incremental_review`Default true
+
@@ -1297,11 +1362,12 @@ For more information on manual review commands, see [Manually request code revie We recommend leaving this option enabled. -#### Base Branches +#### Base Branches {#base-branches} + @@ -1310,10 +1376,11 @@ We recommend leaving this option enabled. -
Location Review > Auto Review > Base BranchesDefault _Empty array_
+
+ @@ -1326,7 +1393,7 @@ We recommend leaving this option enabled. -
Field `reviews.auto_review.base_branches`Default []
+
@@ -1341,6 +1408,7 @@ reviews pull requests on both your repository's default branch and its `staging` + @@ -1349,10 +1417,11 @@ reviews pull requests on both your repository's default branch and its `staging` -
Location Review > Auto Review > DraftsDefault false
+
+ @@ -1365,7 +1434,7 @@ reviews pull requests on both your repository's default branch and its `staging` -
Field `reviews.auto_review.drafts`Default false
+
@@ -1377,6 +1446,7 @@ in your Git platform. + @@ -1385,10 +1455,11 @@ in your Git platform. -
Location Review > Auto Review > Ignore Title KeywordsDefault _Empty array_
+
+ @@ -1401,7 +1472,7 @@ in your Git platform. -
Field `reviews.auto_review.ignore_title_keywords`Default []
+
@@ -1412,6 +1483,7 @@ Ignore reviewing if the title of the pull request contains any of these keywords + @@ -1420,10 +1492,11 @@ Ignore reviewing if the title of the pull request contains any of these keywords -
Location Review > Auto Review > LabelsDefault _Empty array_
+
+ @@ -1436,7 +1509,7 @@ Ignore reviewing if the title of the pull request contains any of these keywords -
Field `reviews.auto_review.labels`Default []
+
@@ -1452,6 +1525,7 @@ In this case, you can manually request reviews of pull requests lacking a qualif + @@ -1460,10 +1534,11 @@ In this case, you can manually request reviews of pull requests lacking a qualif -
Location Review > Finishing Touches > DocstringsDefault true
+
+ @@ -1476,7 +1551,7 @@ In this case, you can manually request reviews of pull requests lacking a qualif -
Field `reviews.finishing_touches.docstrings.enabled`Default true
+
@@ -1488,6 +1563,7 @@ added in a pull request. For more information, see [Docstrings](/finishing-touch + @@ -1496,10 +1572,11 @@ added in a pull request. For more information, see [Docstrings](/finishing-touch -
Location Review > Finishing Touches > Unit TestsDefault true
+
+ @@ -1512,7 +1589,7 @@ added in a pull request. For more information, see [Docstrings](/finishing-touch -
Field `reviews.finishing_touches.unit_tests.enabled`Default true
+
@@ -1526,6 +1603,7 @@ added in a pull request. For more information, see [Unit Test Generation](/finis + @@ -1534,10 +1612,11 @@ added in a pull request. For more information, see [Unit Test Generation](/finis -
Location Chat > Auto ReplyDefault true
+
+ @@ -1550,7 +1629,7 @@ added in a pull request. For more information, see [Unit Test Generation](/finis -
Field `chat.auto_reply`Default true
+
@@ -1563,6 +1642,7 @@ Enable the bot to reply automatically without requiring the user to tag it. + @@ -1571,10 +1651,11 @@ Enable the bot to reply automatically without requiring the user to tag it. -
Location Chat > JiraDefault auto
+
+ @@ -1587,7 +1668,7 @@ Enable the bot to reply automatically without requiring the user to tag it. -
Field `chat.integrations.jira.usage`Default "auto"
+
@@ -1598,6 +1679,7 @@ Enable the Jira integration for opening issues, etc. 'auto' disables the integra + @@ -1606,10 +1688,11 @@ Enable the Jira integration for opening issues, etc. 'auto' disables the integra -
Location Chat > LinearDefault auto
+
+ @@ -1622,7 +1705,7 @@ Enable the Jira integration for opening issues, etc. 'auto' disables the integra -
Field `chat.integrations.linear.usage`Default "auto"
+
@@ -1637,6 +1720,7 @@ Enable the Linear integration for opening issues, etc. 'auto' disables the integ + @@ -1645,10 +1729,11 @@ Enable the Linear integration for opening issues, etc. 'auto' disables the integ -
Location Knowledge Base > Opt OutDefault false
+
+ @@ -1661,7 +1746,7 @@ Enable the Linear integration for opening issues, etc. 'auto' disables the integ -
Field `knowledge_base.opt_out`Default false
+
@@ -1672,6 +1757,7 @@ Disable all knowledge base features that require data retention. If you opt out + @@ -1680,10 +1766,11 @@ Disable all knowledge base features that require data retention. If you opt out -
Location Knowledge Base > Pull RequestsDefault auto
+
+ @@ -1696,7 +1783,7 @@ Disable all knowledge base features that require data retention. If you opt out -
Field `knowledge_base.pull_requests.scope`Default "auto"
+
@@ -1707,6 +1794,7 @@ Specify the scope of pull requests to use for the knowledge base. 'local' uses t + @@ -1715,10 +1803,11 @@ Specify the scope of pull requests to use for the knowledge base. 'local' uses t -
Location Knowledge Base > Web SearchDefault true
+
+ @@ -1731,7 +1820,7 @@ Specify the scope of pull requests to use for the knowledge base. 'local' uses t -
Field `knowledge_base.web_search.enabled`Default true
+
@@ -1742,6 +1831,7 @@ Enable the web search integration. + @@ -1750,10 +1840,11 @@ Enable the web search integration. -
Location Knowledge Base > IssuesDefault auto
+
+ @@ -1766,7 +1857,7 @@ Enable the web search integration. -
Field `knowledge_base.issues.scope`Default "auto"
+
@@ -1779,6 +1870,7 @@ Specify the scope of git platform (GitHub/GitLab) issues to use for the knowledg + @@ -1787,10 +1879,11 @@ Specify the scope of git platform (GitHub/GitLab) issues to use for the knowledg -
Location Knowledge Base > JiraDefault auto
+
+ @@ -1803,7 +1896,7 @@ Specify the scope of git platform (GitHub/GitLab) issues to use for the knowledg -
Field `knowledge_base.jira.usage`Default "auto"
+
@@ -1814,6 +1907,7 @@ Enable the Jira knowledge base integration. 'auto' disables the integration for + @@ -1822,10 +1916,11 @@ Enable the Jira knowledge base integration. 'auto' disables the integration for -
Location Knowledge Base > Project KeysDefault _Empty array_
+
+ @@ -1838,7 +1933,7 @@ Enable the Jira knowledge base integration. 'auto' disables the integration for -
Field `knowledge_base.jira.project_keys`Default []
+
@@ -1849,6 +1944,7 @@ Specify the Jira project keys to use for the knowledge base. + @@ -1857,10 +1953,11 @@ Specify the Jira project keys to use for the knowledge base. -
Location Knowledge Base > LearningsDefault auto
+
+ @@ -1873,7 +1970,7 @@ Specify the Jira project keys to use for the knowledge base. -
Field `knowledge_base.learnings.scope`Default "auto"
+
@@ -1886,6 +1983,7 @@ Specify the scope of learnings to use for the knowledge base. 'local' uses the r + @@ -1894,10 +1992,11 @@ Specify the scope of learnings to use for the knowledge base. 'local' uses the r -
Location Knowledge Base > LinearDefault auto
+
+ @@ -1910,7 +2009,7 @@ Specify the scope of learnings to use for the knowledge base. 'local' uses the r -
Field `knowledge_base.linear.usage`Default "auto"
+
@@ -1921,6 +2020,7 @@ Enable the Linear knowledge base integration. 'auto' disables the integration fo + @@ -1929,10 +2029,11 @@ Enable the Linear knowledge base integration. 'auto' disables the integration fo -
Location Knowledge Base > Team KeysDefault _Empty array_
+
+ @@ -1945,7 +2046,7 @@ Enable the Linear knowledge base integration. 'auto' disables the integration fo -
Field `knowledge_base.linear.team_keys`Default []
+
@@ -1958,6 +2059,7 @@ Specify the Linear team keys (identifiers) to use for the knowledge base. E.g. ' + @@ -1966,10 +2068,11 @@ Specify the Linear team keys (identifiers) to use for the knowledge base. E.g. ' -
Location Code Generation > LanguageDefault en-US
+
+ @@ -1982,7 +2085,7 @@ Specify the Linear team keys (identifiers) to use for the knowledge base. E.g. ' -
Field `code_generation.docstrings.language`Default "en-US"
+
@@ -1993,6 +2096,7 @@ Set the language for docstrings by using the corresponding ISO language code. + @@ -2001,10 +2105,11 @@ Set the language for docstrings by using the corresponding ISO language code. -
Location Code Generation > Path InstructionsDefault _Empty array_
+
+ @@ -2017,7 +2122,7 @@ Set the language for docstrings by using the corresponding ISO language code. -
Field `code_generation.docstrings.path_instructions`Default []
+
@@ -2028,6 +2133,7 @@ Provide additional guidelines for docstring generation based on file paths. + @@ -2036,10 +2142,11 @@ Provide additional guidelines for docstring generation based on file paths. -
Location Code Generation > Unit Test GenerationDefault _Empty array_
+
+ @@ -2052,7 +2159,7 @@ Provide additional guidelines for docstring generation based on file paths. -
Field `code_generation.unit_tests.path_instructions`Default []
+
@@ -2071,6 +2178,7 @@ actionlint is a static checker for GitHub Actions workflow files. + @@ -2079,10 +2187,11 @@ actionlint is a static checker for GitHub Actions workflow files. -
Location Review > Tools > Enable actionlintDefault true
+
+ @@ -2095,7 +2204,7 @@ actionlint is a static checker for GitHub Actions workflow files. -
Field `reviews.tools.actionlint.enabled`Default true
+
@@ -2110,6 +2219,7 @@ Enable ast-grep | ast-grep is a code analysis tool that helps you to find patter + @@ -2118,10 +2228,11 @@ Enable ast-grep | ast-grep is a code analysis tool that helps you to find patter -
Location Review > Tools > ast-grep > Essential RulesDefault true
+
+ @@ -2134,7 +2245,7 @@ Enable ast-grep | ast-grep is a code analysis tool that helps you to find patter -
Field `reviews.tools.ast-grep.essential_rules`Default true
+
@@ -2145,6 +2256,7 @@ Use ast-grep essentials package. + @@ -2153,10 +2265,11 @@ Use ast-grep essentials package. -
Location Review > Tools > ast-grep > PackagesDefault _Empty array_
+
+ @@ -2169,7 +2282,7 @@ Use ast-grep essentials package. -
Field `reviews.tools.ast-grep.packages`Default []
+
@@ -2180,6 +2293,7 @@ Predefined packages to be used. + @@ -2188,10 +2302,11 @@ Predefined packages to be used. -
Location Review > Tools > ast-grep > Rule DirsDefault _Empty array_
+
+ @@ -2204,7 +2319,7 @@ Predefined packages to be used. -
Field `reviews.tools.ast-grep.rule_dirs`Default []
+
@@ -2215,6 +2330,7 @@ List of rules directories. + @@ -2223,10 +2339,11 @@ List of rules directories. -
Location Review > Tools > ast-grep > Util DirsDefault _Empty array_
+
+ @@ -2239,7 +2356,7 @@ List of rules directories. -
Field `reviews.tools.ast-grep.util_dirs`Default []
+
@@ -2254,6 +2371,7 @@ Biome is a fast formatter, linter, and analyzer for web projects. + @@ -2262,10 +2380,11 @@ Biome is a fast formatter, linter, and analyzer for web projects. -
Location Review > Tools > Enable BiomeDefault true
+
+ @@ -2278,7 +2397,7 @@ Biome is a fast formatter, linter, and analyzer for web projects. -
Field `reviews.tools.biome.enabled`Default true
+
@@ -2293,6 +2412,7 @@ Brakeman is a static analysis security vulnerability scanner for Ruby on Rails a + @@ -2301,10 +2421,11 @@ Brakeman is a static analysis security vulnerability scanner for Ruby on Rails a -
Location Review > Tools > Enable BrakemanDefault true
+
+ @@ -2317,7 +2438,7 @@ Brakeman is a static analysis security vulnerability scanner for Ruby on Rails a -
Field `reviews.tools.brakeman.enabled`Default true
+
@@ -2332,6 +2453,7 @@ Buf offers linting for Protobuf files. + @@ -2340,10 +2462,11 @@ Buf offers linting for Protobuf files. -
Location Review > Tools > Enable BufDefault true
+
+ @@ -2356,7 +2479,7 @@ Buf offers linting for Protobuf files. -
Field `reviews.tools.buf.enabled`Default true
+
@@ -2371,6 +2494,7 @@ checkmake is a linter for Makefiles. + @@ -2379,10 +2503,11 @@ checkmake is a linter for Makefiles. -
Location Review > Tools > Enable checkmakeDefault true
+
+ @@ -2395,7 +2520,7 @@ checkmake is a linter for Makefiles. -
Field `reviews.tools.checkmake.enabled`Default true
+
@@ -2410,6 +2535,7 @@ Checkov is a static code analysis tool for infrastructure-as-code files. + @@ -2418,10 +2544,11 @@ Checkov is a static code analysis tool for infrastructure-as-code files. -
Location Review > Tools > Enable CheckovDefault true
+
+ @@ -2434,7 +2561,7 @@ Checkov is a static code analysis tool for infrastructure-as-code files. -
Field `reviews.tools.checkov.enabled`Default true
+
@@ -2449,6 +2576,7 @@ CircleCI tool is a static checker for CircleCI config files. + @@ -2457,10 +2585,11 @@ CircleCI tool is a static checker for CircleCI config files. -
Location Review > Tools > Enable CircleCIDefault true
+
+ @@ -2473,7 +2602,7 @@ CircleCI tool is a static checker for CircleCI config files. -
Field `reviews.tools.circleci.enabled`Default true
+
@@ -2488,6 +2617,7 @@ Clippy is a collection of lints to catch common mistakes and improve your Rust c + @@ -2496,10 +2626,11 @@ Clippy is a collection of lints to catch common mistakes and improve your Rust c -
Location Review > Tools > Enable ClippyDefault true
+
+ @@ -2512,7 +2643,7 @@ Clippy is a collection of lints to catch common mistakes and improve your Rust c -
Field `reviews.tools.clippy.enabled`Default true
+
@@ -2527,6 +2658,7 @@ Cppcheck is a static code analysis tool for the C and C++ programming languages. + @@ -2535,10 +2667,11 @@ Cppcheck is a static code analysis tool for the C and C++ programming languages. -
Location Review > Tools > Enable CppcheckDefault true
+
+ @@ -2551,7 +2684,7 @@ Cppcheck is a static code analysis tool for the C and C++ programming languages. -
Field `reviews.tools.cppcheck.enabled`Default true
+
@@ -2566,6 +2699,7 @@ Detekt is a static code analysis tool for Kotlin files. + @@ -2574,10 +2708,11 @@ Detekt is a static code analysis tool for Kotlin files. -
Location Review > Tools > detekt > EnableDefault true
+
+ @@ -2590,7 +2725,7 @@ Detekt is a static code analysis tool for Kotlin files. -
Field `reviews.tools.detekt.enabled`Default true
+
@@ -2601,6 +2736,7 @@ Enable detekt. + @@ -2609,10 +2745,11 @@ Enable detekt. -
Location Review > Tools > detekt > Config FileDefault _No default_
+
+ @@ -2625,7 +2762,7 @@ Enable detekt. -
Field `reviews.tools.detekt.config_file`Default _No default_
+
@@ -2640,6 +2777,7 @@ dotenv-linter is a tool for checking and fixing .env files for problems and best + @@ -2648,10 +2786,11 @@ dotenv-linter is a tool for checking and fixing .env files for problems and best -
Location Review > Tools > Enable dotenv-linterDefault true
+
+ @@ -2664,7 +2803,7 @@ dotenv-linter is a tool for checking and fixing .env files for problems and best -
Field `reviews.tools.dotenvLint.enabled`Default true
+
@@ -2679,6 +2818,7 @@ ESLint is a static code analysis tool for JavaScript files. + @@ -2687,10 +2827,11 @@ ESLint is a static code analysis tool for JavaScript files. -
Location Review > Tools > Enable ESLintDefault true
+
+ @@ -2703,7 +2844,7 @@ ESLint is a static code analysis tool for JavaScript files. -
Field `reviews.tools.eslint.enabled`Default true
+
@@ -2718,6 +2859,7 @@ GitHub Checks integration configuration. + @@ -2726,10 +2868,11 @@ GitHub Checks integration configuration. -
Location Review > Tools > GitHub Checks > EnableDefault true
+
+ @@ -2742,7 +2885,7 @@ GitHub Checks integration configuration. -
Field `reviews.tools.github-checks.enabled`Default true
+
@@ -2753,6 +2896,7 @@ Enable integration, defaults to true + @@ -2761,10 +2905,11 @@ Enable integration, defaults to true -
Location Review > Tools > GitHub Checks > Timeout MsDefault 90000
+
+ @@ -2777,7 +2922,7 @@ Enable integration, defaults to true -
Field `reviews.tools.github-checks.timeout_ms`Default 90000
+
@@ -2792,6 +2937,7 @@ Gitleaks is a secret scanner. + @@ -2800,10 +2946,11 @@ Gitleaks is a secret scanner. -
Location Review > Tools > Enable GitleaksDefault true
+
+ @@ -2816,7 +2963,7 @@ Gitleaks is a secret scanner. -
Field `reviews.tools.gitleaks.enabled`Default true
+
@@ -2831,6 +2978,7 @@ golangci-lint is a fast linters runner for Go. + @@ -2839,10 +2987,11 @@ golangci-lint is a fast linters runner for Go. -
Location Review > Tools > golangci-lint > EnableDefault true
+
+ @@ -2855,7 +3004,7 @@ golangci-lint is a fast linters runner for Go. -
Field `reviews.tools.golangci-lint.enabled`Default true
+
@@ -2866,6 +3015,7 @@ Enable golangci-lint. + @@ -2874,10 +3024,11 @@ Enable golangci-lint. -
Location Review > Tools > golangci-lint > Config FileDefault _No default_
+
+ @@ -2890,7 +3041,7 @@ Enable golangci-lint. -
Field `reviews.tools.golangci-lint.config_file`Default _No default_
+
@@ -2905,6 +3056,7 @@ Hadolint is a Dockerfile linter. + @@ -2913,10 +3065,11 @@ Hadolint is a Dockerfile linter. -
Location Review > Tools > Enable HadolintDefault true
+
+ @@ -2929,7 +3082,7 @@ Hadolint is a Dockerfile linter. -
Field `reviews.tools.hadolint.enabled`Default true
+
@@ -2944,6 +3097,7 @@ HTMLHint is a static code analysis tool for HTML files. + @@ -2952,10 +3106,11 @@ HTMLHint is a static code analysis tool for HTML files. -
Location Review > Tools > HTMLHint > EnableDefault true
+
+ @@ -2968,7 +3123,7 @@ HTMLHint is a static code analysis tool for HTML files. -
Field `reviews.tools.htmlhint.enabled`Default true
+
@@ -2979,6 +3134,7 @@ Enable HTMLHint. + @@ -2987,10 +3143,11 @@ Enable HTMLHint. -
Location Review > Tools > HTMLHint > Config FileDefault _No default_
+
+ @@ -3003,7 +3160,7 @@ Enable HTMLHint. -
Field `reviews.tools.htmlhint.config_file`Default _No default_
+
@@ -3018,6 +3175,7 @@ LanguageTool is a style and grammar checker for 30+ languages. + @@ -3026,10 +3184,11 @@ LanguageTool is a style and grammar checker for 30+ languages. -
Location Review > Tools > LanguageTool > Disabled CategoriesDefault _Empty array_
+
+ @@ -3042,7 +3201,7 @@ LanguageTool is a style and grammar checker for 30+ languages. -
Field `reviews.tools.languagetool.disabled_categories`Default []
+
@@ -3053,6 +3212,7 @@ IDs of categories to be disabled. Note: TYPOS, TYPOGRAPHY, and CASING are always + @@ -3061,10 +3221,11 @@ IDs of categories to be disabled. Note: TYPOS, TYPOGRAPHY, and CASING are always -
Location Review > Tools > LanguageTool > Disabled RulesDefault _Empty array_
+
+ @@ -3077,7 +3238,7 @@ IDs of categories to be disabled. Note: TYPOS, TYPOGRAPHY, and CASING are always -
Field `reviews.tools.languagetool.disabled_rules`Default []
+
@@ -3088,6 +3249,7 @@ IDs of rules to be disabled. Note: EN_UNPAIRED_BRACKETS, and EN_UNPAIRED_QUOTES + @@ -3096,10 +3258,11 @@ IDs of rules to be disabled. Note: EN_UNPAIRED_BRACKETS, and EN_UNPAIRED_QUOTES -
Location Review > Tools > LanguageTool > EnableDefault true
+
+ @@ -3112,7 +3275,7 @@ IDs of rules to be disabled. Note: EN_UNPAIRED_BRACKETS, and EN_UNPAIRED_QUOTES -
Field `reviews.tools.languagetool.enabled`Default true
+
@@ -3123,6 +3286,7 @@ Enable LanguageTool + @@ -3131,10 +3295,11 @@ Enable LanguageTool -
Location Review > Tools > LanguageTool > Enabled CategoriesDefault _Empty array_
+
+ @@ -3147,7 +3312,7 @@ Enable LanguageTool -
Field `reviews.tools.languagetool.enabled_categories`Default []
+
@@ -3158,6 +3323,7 @@ IDs of categories to be enabled. + @@ -3166,10 +3332,11 @@ IDs of categories to be enabled. -
Location Review > Tools > LanguageTool > Enabled OnlyDefault false
+
+ @@ -3182,7 +3349,7 @@ IDs of categories to be enabled. -
Field `reviews.tools.languagetool.enabled_only`Default false
+
@@ -3193,6 +3360,7 @@ Only the rules and categories whose IDs are specified with 'enabledRules' or 'en + @@ -3201,10 +3369,11 @@ Only the rules and categories whose IDs are specified with 'enabledRules' or 'en -
Location Review > Tools > LanguageTool > Enabled RulesDefault _Empty array_
+
+ @@ -3217,7 +3386,7 @@ Only the rules and categories whose IDs are specified with 'enabledRules' or 'en -
Field `reviews.tools.languagetool.enabled_rules`Default []
+
@@ -3228,6 +3397,7 @@ IDs of rules to be enabled. The rule won't run unless 'level' is set to a level + @@ -3236,10 +3406,11 @@ IDs of rules to be enabled. The rule won't run unless 'level' is set to a level -
Location Review > Tools > LanguageTool > LevelDefault default
+
+ @@ -3252,7 +3423,7 @@ IDs of rules to be enabled. The rule won't run unless 'level' is set to a level -
Field `reviews.tools.languagetool.level`Default "default"
+
@@ -3267,6 +3438,7 @@ Configuration for Lua code linting to ensure code quality + @@ -3275,10 +3447,11 @@ Configuration for Lua code linting to ensure code quality -
Location Review > Tools > Enable LuacheckDefault true
+
+ @@ -3291,7 +3464,7 @@ Configuration for Lua code linting to ensure code quality -
Field `reviews.tools.luacheck.enabled`Default true
+
@@ -3306,6 +3479,7 @@ markdownlint-cli2 is a static analysis tool to enforce standards and consistency + @@ -3314,10 +3488,11 @@ markdownlint-cli2 is a static analysis tool to enforce standards and consistency -
Location Review > Tools > Enable markdownlintDefault true
+
+ @@ -3330,7 +3505,7 @@ markdownlint-cli2 is a static analysis tool to enforce standards and consistency -
Field `reviews.tools.markdownlint.enabled`Default true
+
@@ -3345,6 +3520,7 @@ OXC is a JavaScript/TypeScript linter written in Rust. + @@ -3353,10 +3529,11 @@ OXC is a JavaScript/TypeScript linter written in Rust. -
Location Review > Tools > Enable OXCDefault true
+
+ @@ -3369,7 +3546,7 @@ OXC is a JavaScript/TypeScript linter written in Rust. -
Field `reviews.tools.oxc.enabled`Default true
+
@@ -3384,6 +3561,7 @@ PHPStan is a tool to analyze PHP code. + @@ -3392,10 +3570,11 @@ PHPStan is a tool to analyze PHP code. -
Location Review > Tools > PHPStan > EnableDefault true
+
+ @@ -3408,7 +3587,7 @@ PHPStan is a tool to analyze PHP code. -
Field `reviews.tools.phpstan.enabled`Default true
+
@@ -3419,6 +3598,7 @@ PHPStan requires [config file](https://phpstan.org/config-reference#config-file) + @@ -3427,10 +3607,11 @@ PHPStan requires [config file](https://phpstan.org/config-reference#config-file) -
Location Review > Tools > PHPStan > LevelDefault default
+
+ @@ -3443,7 +3624,7 @@ PHPStan requires [config file](https://phpstan.org/config-reference#config-file) -
Field `reviews.tools.phpstan.level`Default "default"
+
@@ -3458,6 +3639,7 @@ PMD is an extensible multilanguage static code analyzer. It’s mainly concerned + @@ -3466,10 +3648,11 @@ PMD is an extensible multilanguage static code analyzer. It’s mainly concerned -
Location Review > Tools > PMD > EnableDefault true
+
+ @@ -3482,7 +3665,7 @@ PMD is an extensible multilanguage static code analyzer. It’s mainly concerned -
Field `reviews.tools.pmd.enabled`Default true
+
@@ -3493,6 +3676,7 @@ Enable PMD. + @@ -3501,10 +3685,11 @@ Enable PMD. -
Location Review > Tools > PMD > Config FileDefault _No default_
+
+ @@ -3517,7 +3702,7 @@ Enable PMD. -
Field `reviews.tools.pmd.config_file`Default _No default_
+
@@ -3532,6 +3717,7 @@ Configuration for Prisma Schema linting to ensure schema file quality + @@ -3540,10 +3726,11 @@ Configuration for Prisma Schema linting to ensure schema file quality -
Location Review > Tools > Enable Prisma Schema LintingDefault true
+
+ @@ -3556,7 +3743,7 @@ Configuration for Prisma Schema linting to ensure schema file quality -
Field `reviews.tools.prismaLint.enabled`Default true
+
@@ -3571,6 +3758,7 @@ Pylint is a Python static code analysis tool. + @@ -3579,10 +3767,11 @@ Pylint is a Python static code analysis tool. -
Location Review > Tools > Enable PylintDefault true
+
+ @@ -3595,7 +3784,7 @@ Pylint is a Python static code analysis tool. -
Field `reviews.tools.pylint.enabled`Default true
+
@@ -3610,6 +3799,7 @@ Regal is a linter and language server for Rego. + @@ -3618,10 +3808,11 @@ Regal is a linter and language server for Rego. -
Location Review > Tools > Enable RegalDefault true
+
+ @@ -3634,7 +3825,7 @@ Regal is a linter and language server for Rego. -
Field `reviews.tools.regal.enabled`Default true
+
@@ -3649,6 +3840,7 @@ RuboCop is a Ruby static code analyzer (a.k.a. linter ) and code formatter. + @@ -3657,10 +3849,11 @@ RuboCop is a Ruby static code analyzer (a.k.a. linter ) and code formatter. -
Location Review > Tools > Enable RuboCopDefault true
+
+ @@ -3673,7 +3866,7 @@ RuboCop is a Ruby static code analyzer (a.k.a. linter ) and code formatter. -
Field `reviews.tools.rubocop.enabled`Default true
+
@@ -3688,6 +3881,7 @@ Ruff is a Python linter and code formatter. + @@ -3696,10 +3890,11 @@ Ruff is a Python linter and code formatter. -
Location Review > Tools > Enable RuffDefault true
+
+ @@ -3712,7 +3907,7 @@ Ruff is a Python linter and code formatter. -
Field `reviews.tools.ruff.enabled`Default true
+
@@ -3727,6 +3922,7 @@ Semgrep is a static analysis tool designed to scan code for security vulnerabili + @@ -3735,10 +3931,11 @@ Semgrep is a static analysis tool designed to scan code for security vulnerabili -
Location Review > Tools > Semgrep > EnableDefault true
+
+ @@ -3751,7 +3948,7 @@ Semgrep is a static analysis tool designed to scan code for security vulnerabili -
Field `reviews.tools.semgrep.enabled`Default true
+
@@ -3762,6 +3959,7 @@ Enable Semgrep. + @@ -3770,10 +3968,11 @@ Enable Semgrep. -
Location Review > Tools > Semgrep > Config FileDefault _No default_
+
+ @@ -3786,7 +3985,7 @@ Enable Semgrep. -
Field `reviews.tools.semgrep.config_file`Default _No default_
+
@@ -3801,6 +4000,7 @@ ShellCheck is a static analysis tool that finds bugs in your shell scripts. + @@ -3809,10 +4009,11 @@ ShellCheck is a static analysis tool that finds bugs in your shell scripts. -
Location Review > Tools > Enable ShellCheckDefault true
+
+ @@ -3825,7 +4026,7 @@ ShellCheck is a static analysis tool that finds bugs in your shell scripts. -
Field `reviews.tools.shellcheck.enabled`Default true
+
@@ -3840,6 +4041,7 @@ Configuration for Shopify Theme Check to ensure theme quality and best practices + @@ -3848,10 +4050,11 @@ Configuration for Shopify Theme Check to ensure theme quality and best practices -
Location Review > Tools > Enable Shopify Theme CheckDefault true
+
+ @@ -3864,7 +4067,7 @@ Configuration for Shopify Theme Check to ensure theme quality and best practices -
Field `reviews.tools.shopifyThemeCheck.enabled`Default true
+
@@ -3879,6 +4082,7 @@ SQLFluff is an open source, dialect-flexible and configurable SQL linter. + @@ -3887,10 +4091,11 @@ SQLFluff is an open source, dialect-flexible and configurable SQL linter. -
Location Review > Tools > Enable SQLFluffDefault true
+
+ @@ -3903,7 +4108,7 @@ SQLFluff is an open source, dialect-flexible and configurable SQL linter. -
Field `reviews.tools.sqlfluff.enabled`Default true
+
@@ -3918,6 +4123,7 @@ SwiftLint integration configuration object. + @@ -3926,10 +4132,11 @@ SwiftLint integration configuration object. -
Location Review > Tools > SwiftLint > EnableDefault true
+
+ @@ -3942,7 +4149,7 @@ SwiftLint integration configuration object. -
Field `reviews.tools.swiftlint.enabled`Default true
+
@@ -3953,6 +4160,7 @@ Enable SwiftLint. + @@ -3961,10 +4169,11 @@ Enable SwiftLint. -
Location Review > Tools > SwiftLint > Config FileDefault _No default_
+
+ @@ -3977,7 +4186,7 @@ Enable SwiftLint. -
Field `reviews.tools.swiftlint.config_file`Default _No default_
+
@@ -3992,6 +4201,7 @@ YAMLlint is a linter for YAML files. + @@ -4000,10 +4210,11 @@ YAMLlint is a linter for YAML files. -
Location Review > Tools > Enable YAMLlintDefault true
+
+ @@ -4016,7 +4227,7 @@ YAMLlint is a linter for YAML files. -
Field `reviews.tools.yamllint.enabled`Default true
+
From a245c0902dbb0e01b4e673d6455000c54884214f Mon Sep 17 00:00:00 2001 From: Jason McIntosh Date: Tue, 24 Jun 2025 14:21:25 -0400 Subject: [PATCH 11/15] Tweaks --- docs/guides/configuration-overview.md | 2 +- docs/guides/initial-configuration.md | 57 +++++++++++++-------------- docs/guides/organization-settings.md | 20 ++++++---- docs/guides/repository-settings.md | 6 +-- docs/reference/configuration.md | 4 +- 5 files changed, 46 insertions(+), 43 deletions(-) diff --git a/docs/guides/configuration-overview.md b/docs/guides/configuration-overview.md index a1f6de8f..670a003b 100644 --- a/docs/guides/configuration-overview.md +++ b/docs/guides/configuration-overview.md @@ -39,8 +39,8 @@ For more information, see [Set your organization preferences](/guides/organizati If you want to apply separate CodeRabbit configuration to your organization's different repositories, then you can manage repository-specific CodeRabbit settings in two ways: -- Use the CodeRabbit web interface. - Add a `.coderabbit.yaml` file to the top level of your repository. +- Use the CodeRabbit web interface. For more information, see [Set your repository preferences](/guides/repository-settings). diff --git a/docs/guides/initial-configuration.md b/docs/guides/initial-configuration.md index 9a537855..292fb115 100644 --- a/docs/guides/initial-configuration.md +++ b/docs/guides/initial-configuration.md @@ -32,31 +32,9 @@ CodeRabbit is aware of nitpickier output from the linters and other tools that i For more information, see [Profile](/reference/configuration#profile) in the configuration reference. -### Configure pull request approval {#request-changes} - -By default, CodeRabbit doesn't mark pull requests as approved after any code review, even if CodeRabbit doesn't have any further significant changes to suggest. This leaves the job of formal pull request approval entirely up to human reviewers. - -If you want to allow CodeRabbit to mark pull requests as approved, then you can enable the _request changes workflow_ setting. If you do, then CodeRabbit can approve pull requests after it reviewed a pull request and had all of its comments resolved. - -This can be useful if you have a workflow that requires several reviewers to approve a pull request before anyone can merge it. For example, if you have configured your repository on your Git platform to require two approvals for any pull request, then activating this CodeRabbit setting lets you merge a pull request after approval from CodeRabbit plus one human reviewer. This can help reduce your team's code-review load. - -:::note -We recommend a policy of always requiring the approval of at least one human reviewer, even if you allow CodeRabbit to approve pull requests. As with an generative AI technology, CodeRabbit works best as a helpful partner to your team, and not as a replacement for human expertise or judgment. -::: - -For more information, see [Request Changes Workflow](/reference/configuration#request-changes-workflow) in the configuration reference. - -### Configure chat-based issue creation {#chat-issues} - -You can [ask CodeRabbit to create issues for you](https://docs.coderabbit.ai/guides/issue-creation) in the comments of a pull request that it's reviewing. - -If you have integrated CodeRabbit with Jira or Linear, then you can tune this behavior a little more, restricting this feature to private repositories—the default setting—or disabling it entirely. - -For more information, see [Integrations](/reference/configuration#integrations) in the configuration reference. - ### Configure learnings {#learnings} -You can teach CodeRabbit your team's review preferences by [stating them in plain language during code reviews](/integrations/knowledge-base#learnings). CodeRabbit remembers these these preferences, and applies them to subsequent code reviews in the same repository. +By default, CodeRabbit learns your team's review preferences by letting you [teach it your preferences in plain language during code reviews](/integrations/knowledge-base#learnings). CodeRabbit remembers these preferences, and applies them to subsequent code reviews in the same repository. If you don't want this feature, you can disable it. For more information, see [Learnings](/reference/configuration#learnings) in the configuration reference. @@ -139,13 +117,8 @@ For example, to give CodeRabbit review instructions specific to JavaScript and T ```yaml path_instructions: - - path: `src/**/*.{ts,tsx,js}` - instructions: - - Review the React.js, TypeScript, JavaScript code for best practices - - Check for common security vulnerabilities such as: - - SQL Injection - - Insecure dependencies - - Sensitive data exposure + - path: `src/**/*.{ts,tsx,js}` + instructions: "Review the React.js, TypeScript, JavaScript code for best practices. Check for common security vulnerabilities, such as SQL injection, insecure dependencies, and sensitive data exposure." ``` For more information, see [Path instructions](/reference/configuration#path-instructions) in the configuration reference. @@ -201,6 +174,30 @@ reviews: For more information, see [Tools](/reference/configuration#tools) in the configuration reference. +## Other code review settings {#other} + +### Configure pull request approval {#request-changes} + +By default, CodeRabbit doesn't mark pull requests as approved after any code review, even if CodeRabbit doesn't have any further significant changes to suggest. This leaves the job of formal pull request approval entirely up to human reviewers. + +If you want to allow CodeRabbit to mark pull requests as approved, then you can enable the _request changes workflow_ setting. If you do, then CodeRabbit can approve pull requests after it reviewed a pull request and had all of its comments resolved. + +This can be useful if you have a workflow that requires several reviewers to approve a pull request before anyone can merge it. For example, if you have configured your repository on your Git platform to require two approvals for any pull request, then activating this CodeRabbit setting lets you merge a pull request after approval from CodeRabbit plus one human reviewer. This can help reduce your team's code-review load. + +:::note +We recommend a policy of always requiring the approval of at least one human reviewer, even if you allow CodeRabbit to approve pull requests. As with an generative AI technology, CodeRabbit works best as a helpful partner to your team, and not as a replacement for human expertise or judgment. +::: + +For more information, see [Request Changes Workflow](/reference/configuration#request-changes-workflow) in the configuration reference. + +### Configure chat-based issue creation {#chat-issues} + +You can [ask CodeRabbit to create issues for you](https://docs.coderabbit.ai/guides/issue-creation) in the comments of a pull request that it's reviewing. + +If you have integrated CodeRabbit with Jira or Linear, then you can tune this behavior a little more, restricting this feature to private repositories—the default setting—or disabling it entirely. + +For more information, see [Integrations](/reference/configuration#integrations) in the configuration reference. + ## What's next {#whats-next} - [Setup and configuration best practices](/guides/setup-best-practices) diff --git a/docs/guides/organization-settings.md b/docs/guides/organization-settings.md index dfff58b8..c351e738 100644 --- a/docs/guides/organization-settings.md +++ b/docs/guides/organization-settings.md @@ -11,14 +11,14 @@ For a general overview of configuring CodeRabbit, see [Configure CodeRabbit](/gu ## About organization settings {#about} -You can use the CodeRabbit web interface to set the default CodeRabbit configuration -for all Git repositories associated with your organization. There are two reasons -to review and set your organizational settings: +You can use the CodeRabbit web interface to set a CodeRabbit configuration +for all Git repositories associated with your organization. -- When you give CodeRabbit access to a new repository, CodeRabbit applies all of your - organizational settings to that repository as defaults. -- Some settings, such as [Data retention](/reference/configuration#data-retention), apply only at the organizational level, with - no per-repository equivalent. +You + +:::note +Some settings, such as [Data retention](/reference/configuration#data-retention), apply only at the organizational level, with no per-repository equivalent. +::: ## Browse and modify your organization settings {#modify} @@ -28,6 +28,12 @@ To view or modify your organizational settings, follow these steps: 1. In the sidebar, click **Organization Settings** > **Configuration**. 1. Browse and modify the settings as needed. If you do make changes, click **Apply Changes** when you are finished. +## Apply organization settings to your repositories {#repositories} + +To apply your organizational settings to a repository, follow these steps: + +1. + ## What's next {#whats-next} - [Initial configuration guide](/guides/initial-configuration) diff --git a/docs/guides/repository-settings.md b/docs/guides/repository-settings.md index cec6de44..29a0fe62 100644 --- a/docs/guides/repository-settings.md +++ b/docs/guides/repository-settings.md @@ -10,8 +10,8 @@ Git repository. For a general overview of configuring CodeRabbit, see [Configure CodeRabbit provides two ways to manage its code-review behavior with each of your organization's repositories: -1. View or modify your per-repository settings using the CodeRabbit web interface. -1. Add a `.coderabbit.yaml` file to your repository. +- Add a `.coderabbit.yaml` file to your repository. +- View or modify your per-repository settings using the CodeRabbit web interface. Any settings that you define in the `.coderabbit.yaml` file take precedence over settings defined by the web interface. If your repository doesn't have a @@ -22,7 +22,7 @@ While the web interface provides and easier way to explore the available configu ## Browse and modify your settings using the web interface {#modify} -To view of modify your repsository settings using the CodeRabbit web interface, follow these steps: +To view or modify your repository settings using the CodeRabbit web interface, follow these steps: 1. Visit [the CodeRabbit web interface](https://app.coderabbit.ai/settings/repositories). 1. In the sidebar, click **Repositories**. diff --git a/docs/reference/configuration.md b/docs/reference/configuration.md index 3dbd8fbe..5109ba5a 100644 --- a/docs/reference/configuration.md +++ b/docs/reference/configuration.md @@ -170,7 +170,7 @@ For more information about payment tiers and features, see [Pricing](https://www
Defines the written language that CodeRabbit presents its review comments in. Defaults -to American English. +to U.S. English. ### Tone Instructions @@ -606,7 +606,7 @@ Activate this setting to disallow CodeRabbit from caching your repository's code When caching is allowed, then CodeRabbit stores a cache of code and metadata from your repostory for up to seven days after its most recent code review. This cache lets CodeRabbit save time and effort in between subsquent reviews of the same -repository. +repository. For more information, see [Caching](/reference/caching/). We recommend leaving this setting off, which allows caching, and can speed up code reviews. For more information, see From acda0e6909c106e936131ff72cb03d005099b3e3 Mon Sep 17 00:00:00 2001 From: Jason McIntosh Date: Tue, 24 Jun 2025 15:12:14 -0400 Subject: [PATCH 12/15] Tweaks --- docs/guides/organization-settings.md | 20 +++++--------------- docs/guides/repository-settings.md | 20 ++++++++++---------- 2 files changed, 15 insertions(+), 25 deletions(-) diff --git a/docs/guides/organization-settings.md b/docs/guides/organization-settings.md index c351e738..786b3a40 100644 --- a/docs/guides/organization-settings.md +++ b/docs/guides/organization-settings.md @@ -4,21 +4,17 @@ description: Learn the basics of configuring CodeRabbit for your organization. --- This page is about managing the default settings of CodeRabbit across your -whole Git platform organization. If you instead want to configure CodeRabbit -separately for your organization's different repositories, then see [Set your repository preferences](/guides/repository-settings) +whole Git platform organization. For a general overview of configuring CodeRabbit, see [Configure CodeRabbit](/guides/configuration-overview). ## About organization settings {#about} -You can use the CodeRabbit web interface to set a CodeRabbit configuration -for all Git repositories associated with your organization. +You can use the CodeRabbit web interface to set the CodeRabbit configuration +for all of the Git repositories associated with your organization. By default, all of your repositories apply your organization's CodeRabbit configuration. -You - -:::note -Some settings, such as [Data retention](/reference/configuration#data-retention), apply only at the organizational level, with no per-repository equivalent. -::: +You have the option to define separate settings for some or +all of your individual repositories, instead. For more information, see [Set your repository preferences](/guides/repository-settings). ## Browse and modify your organization settings {#modify} @@ -28,12 +24,6 @@ To view or modify your organizational settings, follow these steps: 1. In the sidebar, click **Organization Settings** > **Configuration**. 1. Browse and modify the settings as needed. If you do make changes, click **Apply Changes** when you are finished. -## Apply organization settings to your repositories {#repositories} - -To apply your organizational settings to a repository, follow these steps: - -1. - ## What's next {#whats-next} - [Initial configuration guide](/guides/initial-configuration) diff --git a/docs/guides/repository-settings.md b/docs/guides/repository-settings.md index 29a0fe62..cac51414 100644 --- a/docs/guides/repository-settings.md +++ b/docs/guides/repository-settings.md @@ -13,12 +13,17 @@ CodeRabbit provides two ways to manage its code-review behavior with each of you - Add a `.coderabbit.yaml` file to your repository. - View or modify your per-repository settings using the CodeRabbit web interface. -Any settings that you define in the `.coderabbit.yaml` file take precedence over -settings defined by the web interface. If your repository doesn't have a -`.coderabbit.yaml` file, then CodeRabbit applies only the settings from the web -interface. +If your repository contains a `.coderabbit.yaml` file at the top level of its default branch, +then CodeRabbit applies all of its settings to that repository's code reviews. CodeRabbit applies its own default values to any configuration settings not defined by your `.coderabbit.yaml` file. -While the web interface provides and easier way to explore the available configuration options for your repository, we recommend using a `.coderabbit.yaml` file as a best practice. For more information, see [Fine-tune reviews using YAML files](/guides/setup-best-practices#yaml). +If your repository doesn't have a `.coderabbit.yaml` file, then CodeRabbit applies the configuration from the CodeRabbit web interface, instead. + +While the web interface provides an easier way to explore the available configuration options for your repository, we recommend using a `.coderabbit.yaml` file as a best practice. For more information, see [Fine-tune reviews using YAML files](/guides/setup-best-practices#yaml). + +## Configure your repository with `.coderabbit.yaml` + +For more information about creating and updating a `.coderabbit.yaml` file in +your repository, see [Add a configuration file](/getting-started/configure-coderabbit). ## Browse and modify your settings using the web interface {#modify} @@ -30,11 +35,6 @@ To view or modify your repository settings using the CodeRabbit web interface, f 1. If the **Use Organization Settings** toggle is on, then click it to turn it off. If you leave it on, then CodeRabbit applies the settings you have set through [the organization-configuration page](/guides/organization-settings) to this repository. 1. Browse and modify the settings as needed. If you do make changes, click **Apply Changes** when you are finished. -## Configure your repository with `.coderabbit.yaml` - -For more information about creating and updating a `.coderabbit.yaml` file in -your repository, see [Add a configuration file](/getting-started/configure-coderabbit). - ## What's next {#whats-next} - [Configuration best practices](/guides/setup-best-practices#configuration) From 3fe0701b73b17d385d72c7f2e9a380bc6fc0c256 Mon Sep 17 00:00:00 2001 From: Jason McIntosh Date: Tue, 24 Jun 2025 17:58:11 -0400 Subject: [PATCH 13/15] Tweaks --- docs/guides/initial-configuration.md | 36 +++++++++++++--------------- docs/guides/repository-settings.md | 6 +++-- 2 files changed, 20 insertions(+), 22 deletions(-) diff --git a/docs/guides/initial-configuration.md b/docs/guides/initial-configuration.md index 292fb115..3df69e8b 100644 --- a/docs/guides/initial-configuration.md +++ b/docs/guides/initial-configuration.md @@ -20,25 +20,7 @@ for a while, when you feel ready to customize its behavior. Each section in the guide links to specific entries in the configuration reference. Each entry in the linked reference specifies the location of its configuration setting, in either the CodeRabbit web UI or your `.coderabbit.yaml` file. -## General settings {#general} - -These settings adjust overall CodeRabbit code review behavior. - -### Adjust code-review strictness {#profile} - -If you want CodeRabbit to apply a much stricter and more nitpicky stance to its code reviews, then you can switch its _profile_ setting from `chill` to `assertive`. - -CodeRabbit is aware of nitpickier output from the linters and other tools that it applies to code reviews, but includes less of it in its own review comments when the profile is set to `chill`. To have CodeRabbit include more nitpicky tool output in reviews, use the `assertive` profile. - -For more information, see [Profile](/reference/configuration#profile) in the configuration reference. - -### Configure learnings {#learnings} - -By default, CodeRabbit learns your team's review preferences by letting you [teach it your preferences in plain language during code reviews](/integrations/knowledge-base#learnings). CodeRabbit remembers these preferences, and applies them to subsequent code reviews in the same repository. - -If you don't want this feature, you can disable it. For more information, see [Learnings](/reference/configuration#learnings) in the configuration reference. - -## Data retention settings {#data-retention} +## Data retention and knowledge base settings {#data-retention} These settings help you control how much data about your code that CodeRabbit retains. CodeRabbit temporarily stores information about your repositories in order to tailored reviews more quickly and better tailored to your team's needs. You can opt of these features if your organization has stricter data-retention policies. @@ -68,11 +50,17 @@ For more information, see ### Configure knowledge base retention {#opt-out} -By default, CodeRabbit keeps its own [_knowledge base_](/integrations/knowledge-base): a store of metadata about your repositories, your team's history of pull requests, linked issues, and [learnings] about how CodeRabbit should tailor its own review behavior to best serve your team. If this long-term knowledge base storage conflicts with your organization's data-retention policies, then you can disable this feature. +By default, CodeRabbit keeps its own [_knowledge base_](/integrations/knowledge-base): a store of metadata about your repositories, your team's history of pull requests, linked issues, and learnings about how CodeRabbit should tailor its own review behavior to best serve your team. If this long-term knowledge base storage conflicts with your organization's data-retention policies, then you can disable this feature. For more information, see [Opt out](/reference/configuration#opt-out) in the configuration reference. +### Configure learnings {#learnings} + +CodeRabbit learns your team's review preferences by letting you [teach it your preferences in plain language during code reviews](/integrations/knowledge-base#learnings). CodeRabbit remembers these preferences, and applies them to subsequent code reviews in the same repository. + +This setting lets you set the scope of which stored learnings that CodeRabbit should apply to its code reviews. For more information, see [Learnings](/reference/configuration#learnings) in the configuration reference. + ## Tune the length of code reviews {#content} By default, CodeRabbit writes thorough code reviews with several sub-sections. If you'd rather have CodeRabbit generated shorter reviews then you can change some of the following settings: @@ -176,6 +164,14 @@ For more information, see [Tools](/reference/configuration#tools) in the configu ## Other code review settings {#other} +### Adjust code-review strictness {#profile} + +If you want CodeRabbit to apply a much stricter and more nitpicky stance to its code reviews, then you can switch its _profile_ setting from `chill` to `assertive`. + +CodeRabbit is aware of nitpickier output from the linters and other tools that it applies to code reviews, but includes less of it in its own review comments when the profile is set to `chill`. To have CodeRabbit include more nitpicky tool output in reviews, use the `assertive` profile. + +For more information, see [Profile](/reference/configuration#profile) in the configuration reference. + ### Configure pull request approval {#request-changes} By default, CodeRabbit doesn't mark pull requests as approved after any code review, even if CodeRabbit doesn't have any further significant changes to suggest. This leaves the job of formal pull request approval entirely up to human reviewers. diff --git a/docs/guides/repository-settings.md b/docs/guides/repository-settings.md index cac51414..f3cba7c2 100644 --- a/docs/guides/repository-settings.md +++ b/docs/guides/repository-settings.md @@ -22,8 +22,10 @@ While the web interface provides an easier way to explore the available configur ## Configure your repository with `.coderabbit.yaml` -For more information about creating and updating a `.coderabbit.yaml` file in -your repository, see [Add a configuration file](/getting-started/configure-coderabbit). +To add a `.coderabbit.yaml` file to your repository, merge a copy of [our template configuration file](/reference/yaml-template) +to the top level of your default branch. From there, you can update your repository's CodeRabbit configuration by updating the `.coderabbit.yaml` file exactly as you would any other text file in your repository. + +For more information about the `.coderabbit.yaml` file, see [Add a configuration file](/getting-started/configure-coderabbit). ## Browse and modify your settings using the web interface {#modify} From 7bc89a2c8ace9aecef9b515e2d005a887192bfd4 Mon Sep 17 00:00:00 2001 From: Jason McIntosh Date: Tue, 24 Jun 2025 18:00:12 -0400 Subject: [PATCH 14/15] Tweaks --- docs/guides/configuration-overview.md | 2 +- docs/guides/repository-settings.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/guides/configuration-overview.md b/docs/guides/configuration-overview.md index 670a003b..2a0dce54 100644 --- a/docs/guides/configuration-overview.md +++ b/docs/guides/configuration-overview.md @@ -44,7 +44,7 @@ manage repository-specific CodeRabbit settings in two ways: For more information, see [Set your repository preferences](/guides/repository-settings). -While the web interface provides and easier way to explore the available configuration options for your repository, we recommend using a `.coderabbit.yaml` file as a best practice. For more information, see [Fine-tune reviews using YAML files](/guides/setup-best-practices#yaml). +While the web interface provides and easier way to explore the available configuration options for your repository, we recommend using a `.coderabbit.yaml` file [as a best practice](/guides/setup-best-practices#yaml). ## Initial configuration {#initial} diff --git a/docs/guides/repository-settings.md b/docs/guides/repository-settings.md index f3cba7c2..33a22c00 100644 --- a/docs/guides/repository-settings.md +++ b/docs/guides/repository-settings.md @@ -18,7 +18,7 @@ then CodeRabbit applies all of its settings to that repository's code reviews. C If your repository doesn't have a `.coderabbit.yaml` file, then CodeRabbit applies the configuration from the CodeRabbit web interface, instead. -While the web interface provides an easier way to explore the available configuration options for your repository, we recommend using a `.coderabbit.yaml` file as a best practice. For more information, see [Fine-tune reviews using YAML files](/guides/setup-best-practices#yaml). +While the web interface provides an easier way to explore the available configuration options for your repository, we recommend using a `.coderabbit.yaml` file [as a best practice](/guides/setup-best-practices#yaml). ## Configure your repository with `.coderabbit.yaml` From 6eb1fa947aae07b158674bed30968c28fbf5bb4b Mon Sep 17 00:00:00 2001 From: Jason McIntosh Date: Tue, 24 Jun 2025 19:49:35 -0400 Subject: [PATCH 15/15] Tweaks --- docs/guides/organization-settings.md | 1 + docs/guides/repository-settings.md | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/guides/organization-settings.md b/docs/guides/organization-settings.md index 786b3a40..5b00d77d 100644 --- a/docs/guides/organization-settings.md +++ b/docs/guides/organization-settings.md @@ -27,3 +27,4 @@ To view or modify your organizational settings, follow these steps: ## What's next {#whats-next} - [Initial configuration guide](/guides/initial-configuration) +- [Configuration best practices](/guides/setup-best-practices#configuration) diff --git a/docs/guides/repository-settings.md b/docs/guides/repository-settings.md index 33a22c00..34ca9d56 100644 --- a/docs/guides/repository-settings.md +++ b/docs/guides/repository-settings.md @@ -39,5 +39,5 @@ To view or modify your repository settings using the CodeRabbit web interface, f ## What's next {#whats-next} -- [Configuration best practices](/guides/setup-best-practices#configuration) - [Initial configuration guide](/guides/initial-configuration) +- [Configuration best practices](/guides/setup-best-practices#configuration)