diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index dbd44b4a..5c7190be 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1 +1,3 @@ -*.ts @coderabbitai/typescript-reviewers +docusaurus.config.ts @coderabbitai/typescript-reviewers +src/**/*.ts @coderabbitai/typescript-reviewers +src/**/*.tsx @coderabbitai/react-reviewers diff --git a/README.md b/README.md index bd76c6c5..8167aa97 100644 --- a/README.md +++ b/README.md @@ -45,7 +45,7 @@ Welcome to the official docs for [**CodeRabbit**](https://coderabbit.ai), the co 2. Clone this repository: ```sh - git clone https://github.com/coderabbit-ai/coderabbit-docs.git + git clone https://github.com/coderabbitai/coderabbit-docs.git cd coderabbit-docs ``` diff --git a/docs/changelog.md b/docs/changelog.md index d273ffcb..21d85d40 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -5,6 +5,46 @@ description: The latest updates and changes to CodeRabbit. sidebar_position: 13 --- +## August 4, 2025 + +### Model Context Protocol (MCP) Server Integration - Early Access + +Pro users can now connect CodeRabbit to your external tools and knowledge bases to provide more contextual code reviews. Our AI automatically pulls relevant information from your documentation, project management tools, and internal wikis to better understand your code changes and business requirements. Connect your custom MCP servers through Settings > Integrations to get reviews and chat conversations that understand your full development context. + +## August 1, 2025 + +### Dark Theme Support for UI App + +CodeRabbit app now supports Light, Dark, and System themes. Use the new theme toggle next to your profile to switch modes. + +## July 23, 2025 + +### ⚡️ Unit Test Generation - Beta + +CodeRabbit's unit test generation is now available in Beta! Automatically generate comprehensive unit tests for your code changes, ensuring better test coverage and catching edge cases you might miss. Our AI analyzes your code structure and creates tests that follow best practices and your project's testing patterns. Learn more [here](https://docs.coderabbit.ai/finishing-touches/unit-test-generation), or just try it under ✨ Finishing Touches. + +## July 17, 2025 + +### Enhanced Reporting Capabilities + +We're excited to announce significant improvements to our reporting system that will make your automated reports more powerful and actionable! + +#### Exclusion Filters with NOT_IN Option + +Reports now support exclusion filters using the `NOT_IN` option, allowing you to filter out pull requests based on their repository, label, user, or team. This gives you more granular control over what appears in your reports, helping you focus on the most relevant information. + +#### Next Steps Section in Daily Standup Reports + +We've enhanced the default daily standup report template to include a "Next Steps" section. This provides clear guidance on what actions authors and reviewers should take regarding each pull request or change, making your reports more actionable and helping teams stay on track. + +#### CI/CD GitHub Action Check Status Awareness + +Reports now include CI/CD GitHub Action check status as a data source. Your reports will be aware of which CI/CD checks are failing or passing, giving you better visibility into the health of your pull requests and helping identify potential issues before they become blockers. + +#### Score Card Custom Report Option + +We've added a new optional score card report feature that allows you to grade and create report cards for your developers. This custom report optional data source provides a structured way to evaluate developer performance and contributions. See our [custom reports documentation](/guides/custom-reports#remove-prs-without-a-score-cardchart-bot-comment) for more details on how to implement score cards in your reports. + ## July 10, 2025 ### Enhanced Python Static Analysis: nbqa Support for Jupyter Notebooks @@ -75,7 +115,7 @@ Key capabilities: - **Intelligent Test Generation**: Automatically creates unit tests that cover edge cases, error scenarios, and core functionality - **Context-Aware**: Generates tests that understand your existing codebase patterns and testing conventions -- **One-Click Integration**: Simply comment `@coderabbitai auto-generate unit tests` on any pull request or specific file, or click on the checkbox available in the walkthrough comment for Early Access customers. +- **One-Click Integration**: Simply comment `@coderabbitai generate unit tests` on any pull request or specific file, or click on the checkbox available in the walkthrough comment for Early Access customers. You can customize the generated tests to fit your specific requirements. @@ -222,7 +262,7 @@ import ProPlanNotice from "@site/src/components/ProPlanNotice.mdx" New and Improved Dashboards to provide more useful feedback such as: -- Avgerage PR Merge Time +- Average PR Merge Time - Weekly Pull Request Activity - Number of PRs Reviewed - Acceptance rate of CodeRabbit Suggestions diff --git a/docs/context-enrichment/mcp-server-integrations.md b/docs/context-enrichment/mcp-server-integrations.md new file mode 100644 index 00000000..3d9334ad --- /dev/null +++ b/docs/context-enrichment/mcp-server-integrations.md @@ -0,0 +1,51 @@ +--- +title: MCP integrations +description: MCP integrations allow CodeRabbit to access your documentation, project management tools, knowledge bases, Figma designs, and more. +--- + +:::caution +Pro feature — Early Access only +::: + +You can enable CodeRabbit to connect to external tools and data sources through the Model Context Protocol (MCP) integration. This allows CodeRabbit to serve as the client, and grants it with richer contextual understanding for: + +- Code reviews +- The validation step for code suggestions +- Chat in the PR + +Use the MCP integration as a way to access your documentation, project management tools, knowledge bases, Figma designs, and more. + +## Considerations + +A few things to keep in mind: + +- CodeRabbit acts as the MCP client, not the server. It ingests data. +- The constraint is understanding what MCP data can be helpful for code reviews. See above for how CodeRabbit uses MCP data. +- This approach unlocks integrations in a way that wasn't possible before. You don't have to wait for CodeRabbit to have a formal integration, if it has an MCP server, we can connect to it. + +## Setup + +### Configuration steps + +1. Navigate to Integrations Page within your CodeRabbit app settings and select the new MCP Server tab +2. To add a new MCP server, click "Add MCP Integration" and provide your server connection details along with the name +3. Complete the authentication process for your MCP server +4. Enable or disable individual MCP tools for each server + +## How it works + +### During code reviews + +CodeRabbit automatically calls relevant MCP tools during analysis to: + +- Gather additional review context. +- Validate and enhance suggested review comments. + +Enhanced review comments will include enriched insights while maintaining your existing workflow. Tools used during analysis are listed under "Additional context used." + +### In chat interactions + +MCP integration enhances chat by: + +- Retrieving contextual information based on discussion topics +- Accessing external documentation and knowledge bases diff --git a/docs/faq.md b/docs/faq.md index 6755fffa..f248b517 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -63,7 +63,7 @@ CodeRabbit works with all programming languages, with varying proficiency based - Available training data - Community usage patterns -### Whats the difference between CodeRabbit Code Reviews and CodeRabbit Reports? +### What's the difference between CodeRabbit Code Reviews and CodeRabbit Reports? CodeRabbit offers two distinct features that serve different roles in your development workflow: @@ -203,7 +203,7 @@ In-trial and open-source plans have lower rate limits than the paid plan. In all ::: -The following limits enforced _per developer_: +The following limits are enforced _per developer_: | Feature | Free Plan | Trial Plan | OSS Plan | Pro/Lite Plan | | -------------------------------- | ------------------------------------------ | --------------------------------- | ----------------------------- | ----------------------------- | diff --git a/docs/finishing-touches/_category_.yaml b/docs/finishing-touches/_category_.yaml index 81a96253..1bd50e46 100644 --- a/docs/finishing-touches/_category_.yaml +++ b/docs/finishing-touches/_category_.yaml @@ -2,3 +2,7 @@ label: Finishing Touches position: 8 collapsible: true collapsed: true +link: + type: generated-index + title: Finishing Touches + slug: /finishing-touches diff --git a/docs/finishing-touches/docstrings.md b/docs/finishing-touches/docstrings.md index c504fa8a..dd4f6467 100644 --- a/docs/finishing-touches/docstrings.md +++ b/docs/finishing-touches/docstrings.md @@ -11,7 +11,7 @@ import ProPlanNotice from '@site/src/components/ProPlanNotice.mdx'; # Docstrings -Docstrings generation is part of the [finishing touches](/future-development#finishing-touches). +Docstrings generation is part of the [Finishing Touches](/finishing-touches). ## Usage diff --git a/docs/finishing-touches/index.md b/docs/finishing-touches/index.md new file mode 100644 index 00000000..824fc5e8 --- /dev/null +++ b/docs/finishing-touches/index.md @@ -0,0 +1,13 @@ +--- +id: finishing-touches +title: Finishing Touches +description: Enhance your pull requests with automated docstrings and unit test generation. +slug: /finishing-touches +--- + +Finishing Touches features help you polish pull requests after review: + +- [Docstrings](/finishing-touches/docstrings) +- [Unit Test Generation](/finishing-touches/unit-test-generation) + +Use these tools to improve documentation and test coverage before merging. diff --git a/docs/finishing-touches/unit-test-generation.md b/docs/finishing-touches/unit-test-generation.md index 57c5e211..d2e7ac11 100644 --- a/docs/finishing-touches/unit-test-generation.md +++ b/docs/finishing-touches/unit-test-generation.md @@ -10,18 +10,18 @@ import ProPlanNotice from '@site/src/components/ProPlanNotice.mdx'; ``` :::warning -This feature is [experimental](/early-access#experiments). +This feature is in beta. ::: # Unit Test Generation -Unit Test Generation is part of the [finishing touches](/future-development#finishing-touches). - -Unit Test Generation is an Early Access Experimental feature. +Unit Test Generation is part of the [Finishing Touches](/finishing-touches). ## Usage -Once you are done with your pull request and its reviews, you may want to perform finishing touches to your code, such as adding unit tests. You can request CodeRabbit to generate unit tests by typing `@coderabbitai auto-generate unit tests` in a comment under that pull request or by clicking a checkbox under **Generate Unit Tests** in the CodeRabbit Walkthrough. +![Unit Test Generation](/img/finishing-touches/utg.gif) + +Once you are done with your pull request and its reviews, you may want to perform finishing touches to your code, such as adding unit tests. You can request CodeRabbit to generate unit tests by typing `@coderabbitai generate unit tests` in a comment under that pull request or by clicking a checkbox under **Generate Unit Tests** in the CodeRabbit Walkthrough. Once sent, CodeRabbit will perform the following actions: diff --git a/docs/future-development.md b/docs/future-development.md deleted file mode 100644 index e3c7c4d6..00000000 --- a/docs/future-development.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: CodeRabbit Features -sidebar_label: Future Development -description: Learn how CodeRabbit works in a pull request review. -sidebar_position: 12 ---- - -# Future Development - -We are actively iterating and refining CodeRabbit, and this is a sneak peek into the upcoming milestones and releases. We are focused on making the Applied AI review better than the median manual review. In addition to that, we are looking at a holistic user experience with various integrations and types of reviews. - -## Applied AI Improvements - -We are actively trying to make the application of Generative AI more useful, relevant, meaningful for the coder and reviewer journey. Our immediate focus is - -### Accuracy and Conciseness Enhancements - -- Refining knowledge base context understanding -- Implementing advanced summarization techniques -- Implementing a knowledge base feature library - -### Learning Refinements - -- We have made significant improvement of the learning Enhancing reinforcement learning based on the user feedback - -## New Feature Enhancements - -### Expanded Integrations - -We are integrating various tool chains to enable coders and reviewers to have a consistent experience irrespective of the tools. The immediate tools would be: - -- **Circle CI** -- **Jenkins** - -### Communication Tool Integrations - -Communication and the user experience of review via various communication tools will be key. We will start with integrations to Slack and Microsoft Teams and will be diving into the design engineering of these flows further: - -- **Slack**: Real-time notifications and interactive discussions -- **Microsoft Teams**: Code review conversations within the Microsoft ecosystem - -### Enhanced Review Capabilities - -These are additional capabilities that can also be reviewed in the same PR to accelerate the coder and reviewer journey. This includes pipeline failure analysis and resolution, as well as vulnerability assessment. - -#### Pipeline Failure Analysis - -- Automated analysis of CI/CD pipeline failures -- AI-driven suggestions for resolving issues -- Historical tracking of pipeline performance - -### Finishing Touches - -Finishing touches are about experience that often take developers time away from what they like doing best coding. But adding finishing touches is crucial and should follow the ontology and taxonomy. We will start by looking into specific areas such as documentation of code as an example. - -> Disclaimer: any product roadmap features mentioned below are only meant to outline -> our general product direction. This documentation is for informational purposes -> only and may not be incorporated into any contract. diff --git a/docs/guides/about-vscode.md b/docs/guides/about-vscode.md index 3e484ffe..ada6f06f 100644 --- a/docs/guides/about-vscode.md +++ b/docs/guides/about-vscode.md @@ -35,3 +35,4 @@ The extension makes only basic CodeRabbit review features available, with defaul - [Install the VSCode extension](/guides/install-vscode) - [Use the VSCode extension](/guides/use-vscode) +- [Use with Self-hosted CodeRabbit](/guides/use-vscode-selfhosted) diff --git a/docs/guides/config-vscode.md b/docs/guides/config-vscode.md index 02f60d8c..8bd0672a 100644 --- a/docs/guides/config-vscode.md +++ b/docs/guides/config-vscode.md @@ -28,17 +28,21 @@ The **Agent Type** setting lets you choose the extension's response to using the - **Native**: The extension prompts the AI agent associated with your IDE to apply the suggested fix. - This works only with VSCode, using Copilot. If you have this option selected when using a different IDE, then the extension instead copies the prompt to your clipboard. + This works only with VSCode(using Copilot) and Cursor(you have to start the task). If you have this option selected when using a different IDE, then the extension instead copies the prompt to your clipboard. -- **Claude Code**: The extension opens the Terminal pane of your IDE and tries to use the `claude` command-line program to apply the suggested fix to your code. You need to have Claude Code installed for this option to be effective. +- **Claude Code**: The extension opens the Terminal pane of your IDE and tries to use the `claude` command-line program to apply the suggested fix to your code. You need to have [Claude Code](https://www.anthropic.com/claude-code) installed for this option to be effective. -- **Codex CLI**: The extension opens the Terminal pane of your IDE and tries to use the `codex` command-line program to apply the suggested fix to your code. You need to have Codex CLI installed for this option to be effective. +- **Codex CLI**: The extension opens the Terminal pane of your IDE and tries to use the `codex` command-line program to apply the suggested fix to your code. You need to have [Codex CLI](https://github.com/openai/codex) installed for this option to be effective. -- **Cline**: The extension opens the `Cline` sidebar and runs a task to apply the suggested fix to your code. You need to have the `Cline` extension installed for this option to be effective. +- **OpenCode**: The extension opens the Terminal pane of your IDE and tries to use the `opencode` command-line program to apply the suggested fix to your code. You need to have [OpenCode](https://opencode.ai) installed for this option to be effective. -- **Roo**: The extension opens the `Roo` sidebar and runs a task to apply the suggested fix to your code. You need to have the `Roo` extension installed for this option to be effective. +- **Cline**: The extension opens the `Cline` sidebar and runs a task to apply the suggested fix to your code. You need to have the [Cline](https://cline.bot/) extension installed for this option to be effective. -- **Kilo Code**: The extension opens the `Kilo Code` sidebar and runs a task to apply the suggested fix to your code. You need to have the `Kilo Code` extension installed for this option to be effective. +- **Roo**: The extension opens the `Roo` sidebar and runs a task to apply the suggested fix to your code. You need to have the [Roo](https://github.com/RooCodeInc/Roo-Code) extension installed for this option to be effective. + +- **Kilo Code**: The extension opens the `Kilo Code` sidebar and runs a task to apply the suggested fix to your code. You need to have the [Kilo Code](https://kilocode.ai/) extension installed for this option to be effective. + +- **Augment Code**: The extension opens the `Augment Code` sidebar with the prompt to apply the suggested fix to your code, and you can start the task. You need to have the [Augment Code](https://www.augmentcode.com/) extension installed for this option to be effective. - **Clipboard**: The extension copies prompt text describing the suggested fix to your clipboard. From there, you can manually paste the prompt into the coding AI agent that you use with your IDE. @@ -56,11 +60,9 @@ The **Auto Review Mode** setting lets you control the behavior of the automatic For more information about this feature, see [Automatically review local commits](/guides/use-vscode#auto-reviews). -## Set a review timeout {#timeout} - -The **Review Timeout** setting lets you specify how long the extension waits for a response from CodeRabbit remote servers before timing out a code review. The default value is `20`. +## Use with self-hosted CodeRabbit {#self-hosted-coderabbit} -To turn off timeouts, set this value to `0`. +This setting is only used when you're using a self-hosted instance of CodeRabbit. If you're using the CodeRabbit Cloud service, you don't need to configure this setting. You will need to login and logout of the extension after adding this value. ## What's next {#whats-next} diff --git a/docs/guides/configuration-overview.md b/docs/guides/configuration-overview.md index b2c401f2..3e54ebbe 100644 --- a/docs/guides/configuration-overview.md +++ b/docs/guides/configuration-overview.md @@ -72,3 +72,13 @@ This means that configuration is not merged or inherited - the highest priority 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. + +## Learnings {#learnings} + +As a complement to the configuration methods listed above, CodeRabbit keeps an internal database with _learnings_ that it collects about your team's code review preferences, based on your interactions with the CodeRabbit bot over time. CodeRabbit learnings let you fine-tune the ways that CodeRabbit conducts its code reviews in ways that are highly specific to your repositories, and your team's coding styles. + +For more information, see [Teach CodeRabbit your review preferences](/guides/learnings). + +## What's next {#whats-next} + +- [Initial configuration guide](/guides/initial-configuration) diff --git a/docs/guides/custom-reports.md b/docs/guides/custom-reports.md index a22b359e..48d37a74 100644 --- a/docs/guides/custom-reports.md +++ b/docs/guides/custom-reports.md @@ -103,7 +103,7 @@ Contained within the `` tag. #### Summarized PR Details - ``: string - Contains the body of your pull request (aka the PR description at the top of the PR page). -- ``: string - Contains a file by file summary of the changes made in the PR in markdown format. This summary is generated by CodeRabbit AI durring the PR review process. This includes several sections for each file that was changed: +- ``: string - Contains a file by file summary of the changes made in the PR in markdown format. This summary is generated by CodeRabbit AI during the PR review process. This includes several sections for each file that was changed: - `filename`: string - The name of the file that was changed. - `AI-generated summary of changes`: markdown - An overall summary of the changes made in the file. - `Alterations to the declarations of exported or public entities`: markdown - A more specific breakdown of the changes made to the file such as exactly what was added, removed, or modified. @@ -117,6 +117,14 @@ Contained within the `` tag. - ``: datetime - The date and time the comment was last updated. - ``: markdown - The content of the comment. +#### CI/CD Check Status + +- ``: array of check objects - Contains all CI/CD checks for the PR. _GitHub Only_. +- ``: object - Each individual check is wrapped in this tag and is an object with the following properties: + - ``: string - The name of the CI/CD check. + - ``: string - The status of the check (e.g., "success", "failure", "in_progress", "canceled"). + - ``: string - The URL to view the detailed results of the check. + Here's an example prompt that uses these data points: ```text @@ -299,9 +307,9 @@ Issues and tickets brings in conversations, descriptions, and comments from Jira This option gives you the ability to create a report limited only to pull requests containing a "Score Card" or "Score Chart" bot comment from CodeRabbit or other bots. To enable issues and tickets you must include the tag `` in your prompt. -> **IMPORTANT:** This will automatically remove any pull requests from your reports if they do not contain a "Score Card" or "Score Chart" bot comment. Using this option without setting up a flow to create these comments will result in `No new pull request activity in the last XYZ hours` errors. Do not enable this option unless you have created a "Score Card" or "Score Chart" bot comment flow. +> **IMPORTANT:** This will automatically remove any pull requests from your reports if they do not contain a "Score Card" or "Score Chart" bot comment. Using this option without setting up a flow to create these comments will result in `No new pull request activity in the last XYZ hours` errors. Do not enable this option unless you have asked CodeRabbit to create a "Score Card" through a comment or implemented the "Score Chart" bot comment flow below. -For example you can ask coderabbit to check serveral conditions on a pull request and produce a "Score Chart": +For example, you can ask CodeRabbit to check several conditions on a pull request and produce a "Score Chart":
Click to view example User Score Card/Chart Comment: @@ -340,7 +348,7 @@ Generate a weekly code review report for the author of this pull request only fo - `1` → Passed **Final Score Calculation:** -Combine the scores from the parameters above to derive the final code quality score (out of 5). +Combine the scores from the parameters above to derive the final code quality score (out of 9). **Output Format:** Provide the final report in a table format with the following columns (use shorthand notations), be sure to include this list at the top above the chart in the "Column Notation" section so users understand what the columns mean: @@ -453,7 +461,7 @@ You will create a new chart averaging all the values from various pull requests - Only include checks for very specific scenarios, such as a specific check failing or using tabs vs spaces. - Do not use general rules without explaining specifically what they mean. If you add "Insure the pull request follows development best practices" you must define what "development best practices" actually mean or the AI will guess. - Make one point for each specific check and make sure its a True/False condition. -- Instead of manually commenting on pull requests you can use the [Github Actions Bot](https://github.com/marketplace/actions/create-or-update-comment) to automatically comment on pull requests and trigger coderabbit score card/chart comments by including `@coderabbit` in the comment. +- Instead of manually commenting on pull requests, you can use the [GitHub Actions Bot](https://github.com/marketplace/actions/create-or-update-comment) to automatically comment on pull requests and trigger CodeRabbit score card/chart comments by including `@coderabbitai` in the comment. ## Best Practices diff --git a/docs/guides/initial-configuration.md b/docs/guides/initial-configuration.md index 826a7948..26fc3a2b 100644 --- a/docs/guides/initial-configuration.md +++ b/docs/guides/initial-configuration.md @@ -57,7 +57,7 @@ For more information, see ### 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. +CodeRabbit learns your team's review preferences by letting you [teach it your preferences in plain language during code reviews](/guides/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. @@ -70,7 +70,7 @@ By default, CodeRabbit writes thorough code reviews with several sub-sections. I - [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. +- [Related pull requests](/reference/configuration#related-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-reviewers): automatically suggest reviewers for PR - [Poem](/reference/configuration#poem): generates a short poem about this pull request. diff --git a/docs/guides/install-vscode.md b/docs/guides/install-vscode.md index 03dfa98c..99e3b662 100644 --- a/docs/guides/install-vscode.md +++ b/docs/guides/install-vscode.md @@ -59,5 +59,5 @@ If you do install the extension this way, then you still need to connect your Co ## What's next - [Use the VSCode extension](/guides/use-vscode) - - [Configure the VSCode extension](/guides/config-vscode) +- [Use with Self-hosted CodeRabbit](/guides/use-vscode-selfhosted) diff --git a/docs/guides/issue-creation.md b/docs/guides/issue-creation.md index f6228b57..61928e7a 100644 --- a/docs/guides/issue-creation.md +++ b/docs/guides/issue-creation.md @@ -37,7 +37,7 @@ To create Jira issues, ensure you have [configured the Jira integration](../inte ### Linear -Make sure you have [set up the Linear integration](../integrations/issue-integrations.md#linear) to create Linear issues. +Make sure you have [set up the Linear integration](../integrations/issue-integrations.md#Linear) to create Linear issues. ## Tips for Issue Creation diff --git a/docs/guides/learnings.md b/docs/guides/learnings.md new file mode 100644 index 00000000..38477db6 --- /dev/null +++ b/docs/guides/learnings.md @@ -0,0 +1,124 @@ +--- +title: Teach CodeRabbit your review preferences +description: An overview of the CodeRabbit learnings feature. +--- + +This page describes how you can configure the code-review behavior of CodeRabbit using natural-language +chat. + +For a conceptual overview of CodeRabbit configuration methods, see [Configure CodeRabbit](/guides/configuration-overview). For more information about performing code reviews with CodeRabbit, see +[Review pull requests](/guides/code-review-overview). + +## About CodeRabbit learnings {#about} + +As your team works with CodeRabbit, it learns your team's code-review +preferences based on chat interactions, and adds these preferences +to an internal database that it associates with your Git platform organization. We call these internal records _learnings_. + +
+ +
+ +CodeRabbit learnings are flexible, natural-language statements about code-review preferences whose purpose can include the following: + +- Special instructions about reviewing particular files. +- Guidance for reviewing all of the files of one repository. +- Code-review preferences that CodeRabbit must apply across all of your organization's repositories. + +Every time CodeRabbit prepares to add a comment to a pull request or issue, it loads all of the learnings that it has collected about your organization's code review preferences. CodeRabbit applies these learnings as additional context or instructions for its comment. + +CodeRabbit learnings complement the more traditional configuration that you set for your organization and its repositories using the CodeRabbit web interface or [`.coderabbit.yaml` files](/getting-started/configure-coderabbit). Learnings give you a convenient way to quickly set or correct the behavior of CodeRabbit in ways that are highly specific to your team's coding style, or in ways that the CodeRabbit configuration options don't otherwise account for. + +You can review and edit your organization's CodeRabbit learnings at any time, as detailed later in this page. + +## Add learnings {#add} + +To add learnings to the database CodeRabbit keeps about your organization's preferences, communicate +your preferences directly to the appropriate CodeRabbit service account using natural language, in a comment attached to any pull request or issue. For more information about chatting with CodeRabbit using comments, see [CodeRabbit chat](/guides/agent_chat/). + +If CodeRabbit decides to create one or more learnings based on a comment, then it makes this explicit in its response to that comment by adding a collapsible section titled **Learnings Added** to its own response comment. + +### An example of adding a learning {#example} + +Imagine a scenario where CodeRabbit has reviewed a GitHub-based pull request from your team that adds a feature to an authentication middleware library. CodeRabbit has flagged a certain file as needing improvement, attaching this comment to the relevant lines in its review: + +> Consider using nested try-catch blocks here to handle different error scenarios more comprehensively. + +If this critique disagrees with your team's coding practices specific to try-catch blocks, then you can reply to this CodeRabbit using a comment of your own, addressed to the `@coderabbitai` service account on GitHub: + +> @coderabbitai Actually, we've found that nested try-catch blocks make our auth middleware harder to debug in production. We prefer early returns with specific error codes - it's cleaner and our monitoring tools can track them better. + +CodeRabbit considers your reply, and decides to make a learning out of it. It acknowledges this in another reply: + +> You're absolutely right about the debugging benefits. Early returns with specific error codes do provide better clarity and monitoring capabilities. I'll remember this preference for your authentication middleware. Thank you for the guidance! + +CodeRabbit also adds a **Learnings added** section to this comment, making explicit the fact that this chat has modified its future behavior with your team. + +CodeRabbit then creates a new learnings record for itself. Along with metadata such as the pull request number, filename, and GitHub user associated with the learning, CodeRabbit adds this self-instructive text to the new record: + +> In authentication middleware, prefer returning early with specific error codes rather than nested try-catch blocks. This improves readability and makes error tracking easier in production environments. + +### Best practices for new learnings {#best-practices} + +When communicating with CodeRabbit during an active code review, you can help make any resulting learnings more specific by replying directly to review comments that CodeRabbit has left on specific files, rather than leaving comments on the overall pull request. This gives CodeRabbit more context when considering feedback, allowing it to create more specific learnings. + +## View learnings {#view} + +To view the learnings that CodeRabbit has associated with your organization, +follow these steps: + +1. Visit [the CodeRabbit web interface](https://app.coderabbit.ai/settings/repositories). + +1. In the sidebar, click **Learnings**. + +This displays a paged list of all of the learnings associated with your organization, sorted by creation time, newest-first. To see more details about any learnings record, click its text. + +### Filter displayed learnings {#filter} + +Over time, the learnings that CodeRabbit gathers for your organization can become quite numerous. This can make manually browsing the full list difficult. The CodeRabbit web interface has search and filtering tools to help you find specific learnings, based on the topic of the learning text, or on other metadata. + +To filter the displayed learnings by topic or concept, enter that topic or concept into the **Similarity search** field, and set **Top K** to the number of results you want returned. Because this is a vector-based similarity search, the returned learnings don't necessarily contain the exact text of your search terms. + +For example, to see the top ten learnings that have to do with error reporting, enter `error reporting` into **Similarity search** and set **Top K** to `10`. + +To filter the displayed learnings by repository, user, or file path, click **+ Filters**, and select additional criteria. + +### Edit or delete learnings {#edit} + +If your account has the **Admin** [CodeRabbit role](/guides/roles) with your organization, then you can freely edit the text of any stored learning, or delete it outright. + +To edit or delete a learning, follow these steps: + +1. Click the **Action** menu on the learning record, which resembles three dots. + +1. Select **Edit** or **Delete**. + +## Configure learnings storage and application {#configure} + +CodeRabbit has several configuration options that modify the storage and application of learnings. + +### Opt out of learnings storage {#opt-out} + +CodeRabbit enables learnings by default. To disable learnings, modify one of the following configuration options: + +- To disable all CodeRabbit [knowledge base](/integrations/knowledge-base) features for your organization or repository, which includes learnings, enable [the _Opt out_ setting](/reference/configuration#opt-out). + +- To disable all CodeRabbit features that require long-term data retention about your organization's use of CodeRabbit—including learnings—disable [the _Data retention_ setting](/reference/configuration#data-retention). + +:::warning +Disabling data retention immediately and irrevocably deletes all learnings that CodeRabbit has associated with your organization. +::: + +### Specify the scope of applied learnings {#scope} + +[The Learnings configuration setting](/reference/configuration#learnings) lets you specify the _scope_ that CodeRabbit applies to all +of the learnings it has collected about your organization. You can set this option to one of the +following values: + +- **`auto`**: When reviewing a public repository, CodeRabbit applies only the learnings specific to that repository. When reviewing private repository, CodeRabbit applies all of your organization's learnings. This is the default setting. +- **`global`**: CodeRabbit applies all of your organization's learnings to all code reviews. +- **`local`**: CodeRabbit applies only learnings associated with code reviews' respective repositories. + +## What's next {#whats-next} + +- [Add review instructions](/guides/review-instructions) diff --git a/docs/guides/ondemand-reports.md b/docs/guides/ondemand-reports.md index ee385622..49214e32 100644 --- a/docs/guides/ondemand-reports.md +++ b/docs/guides/ondemand-reports.md @@ -14,7 +14,7 @@ import ProPlanNotice from '@site/src/components/ProPlanNotice.mdx'; This page is about using the CodeRabbit API to generate on-demand reports about your organization's usage of CodeRabbit. For a conceptual overview of reports in CodeRabbit, see [Generate reports](/guides/reports-overview). -If you're new to CodeRabbit's reporting features, then we recommend starting with [Scheduled reports](/guides/scheduled-reports) to understand the available options and capabilities. +If you're new to CodeRabbit's reporting features, then we recommend starting with [Scheduled reports](/guides/scheduled-reports) to understand the available options and capabilities. In almost every scenario we recommend using the **Scheduled Reports** option. The **On-demand Report** does not have any additional benefits from the **Scheduled Reports** and has many limitations. ## API Access diff --git a/docs/guides/reports-overview.md b/docs/guides/reports-overview.md index 4d8759ed..5095364f 100644 --- a/docs/guides/reports-overview.md +++ b/docs/guides/reports-overview.md @@ -17,16 +17,16 @@ You can track and analyze pull request activity across your organization's repos There are two ways to generate reports: -- **[Scheduled Reports](/guides/scheduled-reports)**: Set up automated, recurring reports that are delivered to your team on a set schedule. Supported delivery channels include the following: +- **[Scheduled Reports](/guides/scheduled-reports)**: Set up automated, recurring reports that are delivered to your team on a set schedule. **Use this option if you want to adjust your settings and send a report more than once**. Supported delivery channels include the following: - Email - Discord - Slack - Teams -- **[On-demand Reports](/guides/ondemand-reports)**: If you require customized integration of reports with your own tools and workflows, then you can generate reports programmatically through our API. +- **[On-demand Reports](/guides/ondemand-reports)**: If you want to test a report format and produce a single report once, try the "On-demand Reports" Option. You can also generate reports programmatically through our API, but we do not recommend this as the API reporting is in beta. If you want to run an **On-demand Report** more than once then you must use the **Scheduled Reports** option. -For your first reports, we recommend exploring scheduled reports. Its web-based UI can help you get familiar with the options available to you. +In almost every scenario we recommend using the **Scheduled Reports** option. The **On-demand Report** does not have any additional benefits from the **Scheduled Reports** and has many limitations. ## Customize reports using natural language {#customize} diff --git a/docs/guides/scheduled-reports.md b/docs/guides/scheduled-reports.md index 34c59032..cef41d46 100644 --- a/docs/guides/scheduled-reports.md +++ b/docs/guides/scheduled-reports.md @@ -52,11 +52,12 @@ Choose a time that works for all team members, especially for distributed teams ### Report Parameters -Reports can be filtered using multiple parameters: +Reports can be filtered using multiple parameters, match pull requests using the **IN** option and exclude pull requests using the **NOT_IN** option: - **Repositories**: Select specific repositories to monitor - **Labels**: Filter by GitHub labels with operators: - IN: Match any selected label + - NOT_IN: Exclude any pr with select label - ALL: Match all selected labels - **Users**: Filter by specific GitHub users - **Teams**: Filter by organization teams diff --git a/docs/guides/setup-best-practices.md b/docs/guides/setup-best-practices.md index c6caa094..0533da5e 100644 --- a/docs/guides/setup-best-practices.md +++ b/docs/guides/setup-best-practices.md @@ -1,6 +1,6 @@ --- title: "Setup and configuration best practices" -description: Best practices for seting up CodeRabbit. +description: Best practices for setting up CodeRabbit. sidebar_label: Setup and configuration --- diff --git a/docs/guides/use-vscode-selfhosted.md b/docs/guides/use-vscode-selfhosted.md new file mode 100644 index 00000000..4452ad8d --- /dev/null +++ b/docs/guides/use-vscode-selfhosted.md @@ -0,0 +1,29 @@ +--- +title: Use with self-hosted CodeRabbit +description: How to setup the VSCode extension with self-hosted CodeRabbit +--- + +This page is about setting up the VSCode extension with self-hosted CodeRabbit. If you are instead using the managed offering, see [Install the VSCode extension](/guides/install-vscode). + +## Prerequisites + +1. Your extension version should be greater than `0.12.1`. +2. Logout of the extension if previously logged in. + +## Connect your self-hosted instance{#connect-self-hosted-instance} + +To connect the VSCode extension to your self-hosted instance, follow these steps: + +1. Click on the "Self hosting CodeRabbit?" button, below the "Use CodeRabbit for free" button. +2. Enter your self-hosted instance URL when prompted. + - Make sure the instance URL is reachable within your network and websocket connections are allowed. +3. Select your git provider which you are using with your self-hosted CodeRabbit. (GitLab, Self-Hosted Gitlab, GitHub, GitHub Enterprise) + - If using GitHub or GitHub Enterprise, enter your [Github Personal Access Token](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens) when prompted. + +You should be connected to your self-hosted instance and ready to use the VSCode extension. + +## What's next {#whats-next} + +- [Use the VSCode extension](/guides/use-vscode) +- [Configure the VSCode extension](/guides/config-vscode) +- [Uninstall the VSCode extension](/guides/uninstall-vscode) diff --git a/docs/integrations/knowledge-base.md b/docs/integrations/knowledge-base.md index 1da862e0..24b2d1be 100644 --- a/docs/integrations/knowledge-base.md +++ b/docs/integrations/knowledge-base.md @@ -1,5 +1,5 @@ --- -title: Apply your code review preferences +title: Knowledge base overview description: Learn about CodeRabbit's internal knowledge base and its integrations with external services. --- @@ -17,26 +17,25 @@ For example, you can add a comment in a PR to chat directly with CodeRabbit. `@c Or you can comment directly on some lines of code in the PR. `@coderabbitai do not complain about lack of error handling here, it is handled higher up the execution stack.` -:::tip Video Tutorial +For more information, see [Teach CodeRabbit your review preferences](/guides/learnings). -Watch our [video walkthrough on learnings](https://www.youtube.com/watch?v=Yu0cmmOYA-U) for more information. +## Code Guidelines {#code-guidelines} -::: +CodeRabbit can read _code guideline_ files that set standards and expectations about +your team's coding practices, described in natural language. CodeRabbit applies any instructions it reads from a repository's code guideline files to all subsequent code reviews. -## Code Guidelines {#code_guidelines} +By default, CodeRabbit looks for and loads guideline files used by other AI coding assistants, including the following: -CodeRabbit will analyse and learn from your organisation's code guidelines, which you can set up in the knowledge base section. These guidelines will then be used to conduct thorough code reviews. +- Claude Code +- Cursor +- Gemini +- GitHub Copilot +- Windsurf -The following patterns are scanned by default. +You can also mark any other file +or set of files in your repository as code guidelines by providing CodeRabbit with a list +of paths to those files. -```text -**/.cursorrules -.github/copilot-instructions.md -**/CLAUDE.md -**/.cursor/rules/* -**/.windsurfrules -**/.clinerules/* -**/.rules/* -``` +This feature is enabled by default; you can disable it if needed. -![Illustration of code guidelines configuration](/img/knowledge-base/code-guidelines.png) +For more information about configuring the code guidelines feature, see [Code guidelines](/reference/configuration#code-guidelines) in the configuration reference page. diff --git a/docs/platforms/azure-devops.md b/docs/platforms/azure-devops.md index 12b70765..b88ebcd7 100644 --- a/docs/platforms/azure-devops.md +++ b/docs/platforms/azure-devops.md @@ -94,9 +94,8 @@ Follow these steps to generate the token: 5. Select the organization you want to use the token with or select "All accessible organizations." 6. Enter a name and an expiry date for the token. -7. We need to have read & write access to "Work Items" & "Code" to post reviews - on pull requests. If you are on the Pro tier also add "Build" access for pipeline - failure remediation. -8. Click "Create" +7. Grant **Read, write, & manage** access to "Work Items" and "Code". CodeRabbit needs these permissions to post code reviews on pull requests. +8. If you subscribe to CodeRabbit Pro, then you can also grant **Read** access to "Build" for pipeline failure remediation. +9. Click "Create" ![CodeRabbit azure devOps personal access token creation form](/img/integrations/azure-access-token.png) diff --git a/docs/platforms/bitbucket-cloud.md b/docs/platforms/bitbucket-cloud.md index 385d46ed..5813e5eb 100644 --- a/docs/platforms/bitbucket-cloud.md +++ b/docs/platforms/bitbucket-cloud.md @@ -1,17 +1,17 @@ --- title: "Bitbucket Cloud" description: "Learn how to integrate CodeRabbit with Bitbucket Cloud." -sidebar_label: "Bitbucket Cloud" +sidebar_label: "Bitbucket" sidebar_position: 6 --- -CodeRabbit integrates with Bitbucket Cloud to enhance code review and collaboration by: +CodeRabbit integrates with Bitbucket to enhance code review and collaboration by: - Automatically initiating code reviews for newly created merge requests. - Displaying review comments and suggestions directly on merge requests. - Enabling seamless interaction with the CodeRabbit bot for real-time feedback and assistance. -This guide will assist you in effectively integrating CodeRabbit with Bitbucket Cloud. +This guide will assist you in effectively integrating CodeRabbit with Bitbucket Cloud. [Click here](https://docs.coderabbit.ai/self-hosted/bitbucket) for instructions integrating Bitbucket Data Center with CodeRabit self-hosted edition. ## Configure API Token diff --git a/docs/platforms/github-com.md b/docs/platforms/github-com.md index 60d919d7..c318307d 100644 --- a/docs/platforms/github-com.md +++ b/docs/platforms/github-com.md @@ -1,116 +1,110 @@ --- -title: Integrating CodeRabbit with GitHub.com +title: Integrate with GitHub.com description: Learn how to integrate CodeRabbit and add to your GitHub workflow. sidebar_label: GitHub.com -sidebar_position: 1 --- This is a step-by-step guide to integrate CodeRabbit with your GitHub repositories. -> **CodeRabbit** is an AI code reviewer designed to ease the challenges of code review, supporting repository maintainers and teams. It reviews your PRs and provides concise summaries, identifies potential issues, and offers insights that might be missed during manual reviews. +For an overview of how CodeRabbit integrates with Git platforms, see +[Add CodeRabbit to your repository](/platforms). -## How CodeRabbit Works? +For a hands-on tutorial with CodeRabbit performing code reviews on a live +GitHub repository that you create, see [Quickstart](/getting-started/quickstart). -> CodeRabbit integrates with GitHub, automating the code review process from the moment a pull request is created. +## Before you begin -It preprocesses the PR content, builds context, leverages Large Language Models for analysis, and then post-processes the AI response before posting the review back to GitHub. This streamlined workflow ensures thorough AI-powered code reviews without manual intervention. +You need to have a GitHub account, and ownership-level permissions of at least one repository associated with that account. -![How CodeRabbit Works](/img/integrations/how-codeRabbit-works.png) +If you want to authorize CodeRabbit to write code reviews for a repository contained in a GitHub organization, then you need ownership-level permission with that organization, as well. -## Let's Integrate CodeRabbit with GitHub +## Authorize CodeRabbit with your GitHub account -### 1. Accessing CodeRabbit +Before you can use CodeRabbit with GitHub, you need to +authorize CodeRabbit with your GitHub account. To do this, follow these steps: -Visit the [CodeRabbit login](https://app.coderabbit.ai/login?free-trial) page. You'll see all the authentication options, select "**Login with GitHub**" to proceed. +1. Visit [the CodeRabbit login page](https://app.coderabbit.ai/login). -![CodeRabbit Login](/img/integrations/login-self-hosted-github.png) +1. Click **Login with GitHub**. Your browser navigates to GitHub.com. -### 2. Authorization +1. If GitHub prompts to sign in to your GitHub account before continuing, then enter your GitHub login credentials as you normally would. Otherwise, continue to the next step. -When you choose **Login with GitHub** in step1, you'll be prompted to authorize CodeRabbit. +1. GitHub displays a summary of the information that CodeRabbit needs in order to integrate with your + GitHub account. This includes read-only access to the following: -> This step grants the necessary permissions for CodeRabbit to interact with your repositories and pull requests. + - Organizations and teams that are associated with your GitHub account. + - Email addresses that are associated with your GitHub account. -![Authorization Login](/img/integrations/authorization-codeRabbit.png) + To allow CodeRabbit access to this information, click **Authorize coderabbitai**. -### 3. Selecting Your Organization +After you complete these steps, your browser navigates to the CodeRabbit web interface. -Upon Authorization, If you're part of multiple organizations, you'll have the opportunity to choose which one you want to associate with CodeRabbit. This ensures that you're setting up the tool for the correct team or project. +Now that you've integrated CodeRabbit with your GitHub account, you need to give CodeRabbit additional permissions to work with your code repositories. To do this, see the next section. -![How to Select Organization in CodeRabbit](/img/integrations/select-organization.png) +## Allow CodeRabbit to access your repositories -### 4. Exploring the CodeRabbit Dashboard +Even after you've integrated CodeRabbit with your GitHub account, you need to +separately grant CodeRabbit the permissions that it needs to post code reviews and +create pull requests in your repositories. -Upon successful authorization, you'll be logged into the CodeRabbit user interface. +You need to authorize CodeRabbit separately for each GitHub organization whose repositories you want it to work with. You can give CodeRabbit permission to +work with all of the repositories associated with a GitHub organization, or limit its access to a select list. -Here, you can add repositories and configure CodeRabbit config settings for each repository. +### Overview of required permissions -![CodeRabbit Dashboard](/img/integrations/codeRabbit-dashboard.png) +CodeRabbit requires the following permissions to work with your repositories: -:::tip -If you opt to authorize all repositories during setup, CodeRabbit will automatically include any new repositories you create on GitHub in the future. This saves you the hassle of manual additions down the line. -::: - -### 5. CodeRabbit Configuration - -You can configure CodeRabbit through a YAML file or using the [App's UI](https://app.coderabbit.ai/login?free-trial). +- Read-only access to actions, checks, discussions, members, and metadata. -You can tailor CodeRabbit's functionality using the `.coderabbit.yaml` file, which you place directly in your GitHub repository. This file mirrors the options available in the CodeRabbit user interface, with each setting in the YAML corresponding to a specific toggle in the UI. Configure CodeRabbit either through the coderabbit.yaml file or the interface, depending on your preference. +- Read-and-write access to code, commit statuses, issues, and pull requests. :::note - -If a `.coderabbit.yaml` file exists in your GitHub repository, it takes precedence over any UI settings. Choose either the YAML file or UI configuration - you don't need to use both. **Refer CodeRabbit YAML schema [here](https://storage.googleapis.com/coderabbit_public_assets/schema.v2.json)** - +CodeRabbit requests read and write access to your repository in order for its code review, issue management, and pull request generation features to work. CodeRabbit never stores your code. For more information, see [the CodeRabbit Trust Center](https://trust.coderabbit.ai). ::: -Once your `.coderabbit.yaml` file is prepared according to your needs, simply place it in your GitHub repository, and you're all set — CodeRabbit is now integrated. - -> When a pull request is created targeting the master branch, CodeRabbit automatically initiates its review process. It analyzes the changes and generates a summary and walkthrough of the modifications. The specific feedback and analysis provided by CodeRabbit are determined by the options you've configured in your YAML file. - -Let's see a few examples of CodeRabbit's review comments from a specific pull request in one of the projects. - -This particular PR involved in changing the language model from LLaMA 2 to LLaMA 3, for testing purposes. These examples will showcase how CodeRabbit analyzed and commented on this significant model switch. - -## Sample PR Review Workflow using CodeRabbit - -CodeRabbit automatically generates a PR summary highlighting key changes. - -![CodeRabbit Summary](/img/integrations/summary-by-codeRabbit.png) +### Grant required permissions -This image shows CodeRabbit's review status for another pull request. It highlights that **12 actionable comments** were generated, and the review also includes additional comments on specific files, demonstrating CodeRabbit's comprehensive analysis of the code changes. +To give CodeRabbit access to one or more of your repositories, follow these steps: -![Actionable Comments By CodeRabbit](/img/integrations/actionable-comments-by-coderabbit.png) +1. Visit [the CodeRabbit web interface](https://app.coderabbit.ai/settings/repositories). -You can also use [CodeRabbit commands](https://docs.coderabbit.ai/guides/commands/) to chat with the AI code Reviewer. +1. Make sure that the correct GitHub organization for the repository is displayed + at the top of the web interface. To change the organization, click **Change + Organization** and select a different organization from the list. -![CodeRabbit Commands](/img/integrations/full-review.png) + If the repositories that you want to add are associated directly with your GitHub account, and not a separate organization, then select your account name as the organization. -CodeRabbit could generate a **code sequence diagram** when you request a full review. + If the organization containing the repository doesn't appear in the list, then you might + need to refresh the list of organizations that CodeRabbit has associated with your + GitHub account. For more information, see [Add organizations](/getting-started/adding-organizations). -The sequence diagram illustrates the precise flow of interactions between the objects in the system. +1. Click the **Add Repositories** button. Your browser navigates to GitHub.com. -![CodeRabbit Sequence Diagram](/img/integrations/coderabbit-sequence-diagram.png) + If the selected organization has no repositories registered with CodeRabbit, then your browser displays a CodeRabbit permissions dialog for setting up a new integration. Proceed to the next step. -Also, check out the response when asked for what improvements can be done on the code level. + Otherwise, your browser displays a GitHub settings page for your organization's existing CodeRabbit integration. Scroll down to the section titled **Repository access**, and then proceed to the next step. -![Code Improvements Suggested by CodeRabbit](/img/integrations/improvements.png) +1. Select which repositories you'd like to allow CodeRabbit to write code reviews for. -In addition to providing reviews and summaries, **CodeRabbit** can also detect configuration issues. + To give CodeRabbit access to all repositories in the organization, select **All repositories**. This also automatically grants CodeRabbit access to all repositories added to the organization in the future. -> For example, I accidentally set up both CodeRabbit Pro (The process we've been discussing) and the open-source version (Refer to [different config process](https://github.com/coderabbitai/ai-pr-reviewer?tab=readme-ov-file#install-instructions)) in my repository at the same time. + To give CodeRabbit access to specific, limited list of repositories, select **Only select repositories**, and then choose repositories from the list. -CodeRabbit automatically detects and alerts you about configuration conflicts. + :::note + You can change this setting later. + ::: -![Configuration Issues by CodeRabbit](/img/integrations/configuration.png) +1. Click the button at the bottom of the form, which has one of the following labels, depending upon context: -CodeRabbit generates detailed statistics and test plans for each pull request. + - **Install & Authorize**, if this organization has no repositories integrated with CodeRabbit, and you are an owner of this organization. + - **Save**, if this organization already has repositories integrated with CodeRabbit -![Statistics by CodeRabbit](/img/integrations/statistics.png) +1. If you are integrating an organization with CodeRabbit for the first time, then your browser navigates back to the CodeRabbit web interface. -![Test Plan by CodeRabbit](/img/integrations/test-plan.png) + Otherwise, your browser remains on your GitHub settings page, and you can manually navigate [back to the CodeRabbit web interface](https://app.coderabbit.ai/settings/repositories). -> CodeRabbit also allows you to configure **custom review instructions** based on your organization's needs, in case you want it to follow specific guidelines beyond the standard review, to learn more on [adding custom review instructions](/guides/review-instructions) +## What's next -Whether you manage a popular repository or are working on a smaller project, whether it's hosted on **GitLab, GitHub, or self-hosted GitHub or GitLab**, CodeRabbit can help streamline your development process. This AI Code Review assistant is designed to save you time by automating code reviews and offering insightful feedback. +- [Set your repository preferences](/guides/repository-settings) -> Explore, Experiment, Discover how [CodeRabbit](https://docs.coderabbit.ai/) can streamline your code review process using AI. +- [Review pull requests](/guides/code-review-overview) diff --git a/docs/platforms/gitlab-com.mdx b/docs/platforms/gitlab-com.mdx index c276cd35..30b23031 100644 --- a/docs/platforms/gitlab-com.mdx +++ b/docs/platforms/gitlab-com.mdx @@ -107,7 +107,13 @@ By default, GitLab restricts this option to users on the Premium or Ultimate tie 5. Ensure the following scopes are selected: `api`. 6. Ensure Developer Access is provided. ---- +:::tip + +Group Access Tokens create bot users with generic GitLab-generated usernames (like `group_63_bot_5753...`). If you prefer a more descriptive username for your CodeRabbit bot, you can customize it using the [GitLab API](https://docs.gitlab.com/api/users/#modify-a-user). + +You can find the bot's user ID through the CodeRabbit UI if connected, or by visiting the bot user's profile from your Group Members page in GitLab. + +::: ### Where to Provide CodeRabbit the Access Token diff --git a/docs/platforms/platforms.md b/docs/platforms/platforms.md index d4cb1748..67689490 100644 --- a/docs/platforms/platforms.md +++ b/docs/platforms/platforms.md @@ -1,35 +1,44 @@ --- -title: Integrate with Git platforms -description: Overview of CodeRabbit's supported Git platforms. +title: Add CodeRabbit to your repository +description: Conceptual overview of integrating CodeRabbit with your Git platform +sidebar_label: Overview --- -CodeRabbit supports various Git platforms to provide code review for your repositories. For the cloud-hosted Git platforms, you can [login][login] to CodeRabbit and add your repositories. The following platforms are supported: +This page presents an overview of integrating CodeRabbit with your Git platform. +For a conceptual overview of CodeRabbit, see [Introduction](/). -## GitHub +## Use CodeRabbit with Git platforms -| Host | Support | -| ------------------------ | ---------------------------------------- | -| GitHub.com | [Supported](github-com.md) | -| GitHub Enterprise Server | [Supported](github-enterprise-server.md) | +CodeRabbit integrates with the following Git platforms: -## GitLab +- [GitHub.com](/platforms/github-com) +- [GitHub Enterprise Server](/platforms/github-enterprise-server) +- [GitLab.com](/platforms/gitlab-com) +- [Self-managed GitLab](/platforms/self-hosted-gitlab) +- [Azure DevOps](/platforms/azure-devops) +- [BitBucket Cloud](/platforms/bitbucket-cloud) -| Host | Support | -| ------------------- | ---------------------------------- | -| GitLab.com | [Supported](gitlab-com.mdx) | -| GitLab Self Managed | [Supported](self-hosted-gitlab.md) | +The exact steps for each platform are outlined in the pages linked above. That said, integrating any +Git platform with CodeRabbit follows this general pattern: -## Azure DevOps +1. Log into CodeRabbit using your Git platform account. -| Host | Support | -| ------------ | ---------------------------- | -| Azure DevOps | [Supported](azure-devops.md) | +1. Add the organizations containing the repositories that you want CodeRabbit to work with. You generally need ownership-level permissions with these organizations. (Different Git platforms might call their organizations different + things, such as "groups" in GitLab and "workspaces" in BitBucket.) -## Bitbucket +1. Create a dedicated CodeRabbit service account on your Git platform, if needed. We handle + this step for you on some platforms, such as GitHub.com. -| Host | Support | -| -------------------- | ---------------------------------------- | -| Bitbucket Datacenter | [Supported](../self-hosted/bitbucket.md) | -| Bitbucket Cloud | [Supported](./bitbucket-cloud.md) | +1. Grant CodeRabbit the permissions that it needs to work with one or more + of the repositories that you have ownership-level access to. -[login]: https://app.coderabbit.ai/login?free-trial +After you finish integrating CodeRabbit with one or more repositories, you can [start using CodeRabbit immediately](/guides/code-review-overview) using its default configuration, which automatically reviews or summarizes new pull requests. You can also [customize CodeRabbit’s configuration](/guides/configuration-overview) to suit your team's needs. + +## What's next {#whats-next} + +- [Integrate CodeRabbit with GitHub.com](/platforms/github-com) +- [Integrate CodeRabbit with GitHub Enterprise Server](/platforms/github-enterprise-server) +- [Integrate CodeRabbit with GitLab.com](/platforms/gitlab-com) +- [Integrate CodeRabbit with Self-managed GitLab](/platforms/self-hosted-gitlab) +- [Integrate CodeRabbit with Azure DevOps](/platforms/azure-devops) +- [Integrate CodeRabbit with BitBucket Cloud](/platforms/bitbucket-cloud) diff --git a/docs/platforms/self-hosted-gitlab.md b/docs/platforms/self-hosted-gitlab.md index 3fa18a71..bd330887 100644 --- a/docs/platforms/self-hosted-gitlab.md +++ b/docs/platforms/self-hosted-gitlab.md @@ -71,6 +71,12 @@ After the user is created, you can retrieve the **User ID** from that user's profile and generate an [**access token**](#generating-personal-access-token). The access token is used to post reviews on merge requests. +:::note + +If you prefer, you can create a Group Access Token which will create a dedicated user on your behalf. For more information, see [Group Access Token](/docs/platforms/gitlab-com.mdx#group-access-token) + +::: + We recommend using the CodeRabbit [logo](/img/integrations/logo.png) as the profile picture to ensures easy recognition. #### **Creating OAuth2 application** diff --git a/docs/reference/configuration.md b/docs/reference/configuration.md index bd0b3e8e..14b7e32e 100644 --- a/docs/reference/configuration.md +++ b/docs/reference/configuration.md @@ -301,11 +301,11 @@ If enabled, then the reviews that CodeRabbit generates include assessments of ho 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 use the built-in issue management 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). +and [Let CodeRabbit read your issue tracker](https://docs.coderabbit.ai/guides/setup-best-practices#issues). #### Auto Apply Labels @@ -604,8 +604,8 @@ Set the commit status to 'pending' when the review is in progress and 'success' 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 +your repository for up to seven days after its most recent code review. This cache +lets CodeRabbit save time and effort in between subsequent reviews of the same repository. For more information, see [Caching](/reference/caching/). We recommend leaving this setting off, which allows caching, and can speed up @@ -902,14 +902,14 @@ For more information, see [Speed up reviews by adding path filters](https://docs -Path instructions are additional sets of instructions, expressed in natural lanaguge, -that you provide to CodeRabbit for reveiwing certain files in your repository. +Path instructions are additional sets of instructions, expressed in natural language, +that you provide to CodeRabbit for reviewing certain files in your repository. -You associate each set of instuctions with a file path relative to the root +You associate each set of instructions 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: +and JavaScript files in a repository's `src` directory: @@ -919,17 +919,17 @@ and JavaScript files in a reposistory's `src` directory: ```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 further examples of path instructions specific to various programming langauges, +For further examples of path instructions specific to various programming languages, see [the `awesome-coderabbit` public repository](https://github.com/coderabbitai/awesome-coderabbit/tree/main/configs). #### Poem @@ -1398,7 +1398,7 @@ We recommend leaving this option enabled. A list of branches that CodeRabbit performs automatic code reviews on, other -than the reposiorty's main branch (usually `main` or `master`.) +than the repository'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. @@ -1976,6 +1976,100 @@ Specify the Jira project keys to use for the knowledge base. 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. +### Code guidelines + +You can define a list of paths that guide CodeRabbit to your organization's code guidelines. +If you do, then CodeRabbit applies these guidelines to its code reviews. For more +information, see [Code Guidelines](/integrations/knowledge-base#code-guidelines). + +#### Enable code guidelines + + + + + + + + + + + + + +
LocationKnowledge Base > Enabled
Defaulttrue
+
+ + + + + + + + + + + + + + + +
Field`knowledge_base.code_guidelines.enabled`
Datatypeboolean
Default`true`
+
+
+ +Enable CodeRabbit to enforce your organization's coding standards during reviews. + +#### File patterns + + + + + + + + + + + + + +
LocationKnowledge Base > File Patterns
Default_No patterns_
+
+ + + + + + + + + + + + + + + +
Field`knowledge_base.code_guidelines.filePatterns`
Datatypearray
Default`[]`
+
+
+ +A list of path specifications to your repository's coding guideline documents, relative +to the root of your repository. Fileglob matching is allowed. Paths are case-sensitive. + +If the code guidelines feature is enabled, then CodeRabbit applies code-guideline +documents found at the following paths, in addition to any paths that you define: + +- `**/.cursorrules` +- `.github/copilot-instructions.md` +- `**/CLAUDE.md` +- `**/GEMINI.md` +- `**/.cursor/rules/*` +- `**/.windsurfrules` +- `**/.clinerules/*` +- `**/.rules/*` +- `**/AGENT.md` + ### Linear #### Enable Linear @@ -3552,11 +3646,11 @@ markdownlint-cli2 is a static analysis tool to enforce standards and consistency markdownlint-cli2 is a static analysis tool to enforce standards and consistency for Markdown files. -### OXC +### Oxlint -OXC is a JavaScript/TypeScript linter written in Rust. +Oxlint is a JavaScript/TypeScript linter for OXC written in Rust. -#### Enable OXC +#### Enable Oxlint @@ -3564,7 +3658,7 @@ OXC is a JavaScript/TypeScript linter written in Rust. Location - Review > Tools > Enable OXC + Review > Tools > Enable Oxlint Default @@ -3591,7 +3685,7 @@ OXC is a JavaScript/TypeScript linter written in Rust. -OXC is a JavaScript/TypeScript linter written in Rust. +Oxlint is a JavaScript/TypeScript linter for OXC written in Rust. ### PHPStan diff --git a/docs/reference/review-commands.md b/docs/reference/review-commands.md index cb50b59c..dc3c97b8 100644 --- a/docs/reference/review-commands.md +++ b/docs/reference/review-commands.md @@ -29,11 +29,11 @@ CodeRabbit through chat, see [Interact with CodeRabbit reviews](/guides/code-rev ## Documentation commands -| Command | Description | Use Case | -| ---------------------------------------- | -------------------------------------------- | --------------------------------------------------- | -| `@coderabbitai generate docstrings` | Generates docstrings for functions in the PR | When you need automatic documentation for your code | -| `@coderabbitai auto-generate unit tests` | Generates unit tests for the PR | When you need automatic unit testing for your code | -| `@coderabbitai configuration` | Shows current CodeRabbit settings | When you need to check or export your configuration | +| Command | Description | Use Case | +| ----------------------------------- | -------------------------------------------- | --------------------------------------------------- | +| `@coderabbitai generate docstrings` | Generates docstrings for functions in the PR | When you need automatic documentation for your code | +| `@coderabbitai generate unit tests` | Generates unit tests for the PR | When you need automatic unit testing for your code | +| `@coderabbitai configuration` | Shows current CodeRabbit settings | When you need to check or export your configuration | ## Agentic chat commands diff --git a/docs/reference/yaml-template.md b/docs/reference/yaml-template.md index 9fac39e2..99fafa34 100644 --- a/docs/reference/yaml-template.md +++ b/docs/reference/yaml-template.md @@ -31,6 +31,7 @@ reviews: collapse_walkthrough: false changed_files_summary: true sequence_diagrams: true + estimate_code_review_effort: true assess_linked_issues: true related_issues: true related_prs: true diff --git a/docs/self-hosted/azure-devops.md b/docs/self-hosted/azure-devops.md index c8926b0f..c7b7f21b 100644 --- a/docs/self-hosted/azure-devops.md +++ b/docs/self-hosted/azure-devops.md @@ -103,6 +103,9 @@ LLM_TIMEOUT=360000 AWS_ACCESS_KEY_ID= AWS_SECRET_ACCESS_KEY= AWS_REGION= +# optionally, use cross-region inference to access models in other regions +# if this is set to `true`, CodeRabbit will access models from `us`, `eu`, or `ap` regions based on the AWS_REGION value. +AWS_USE_CROSS_REGION_INFERENCE=[] TEMP_PATH=/cache @@ -115,10 +118,19 @@ CODERABBIT_LICENSE_KEY= CODERABBIT_API_KEY= ENABLE_METRICS=[true] -ENABLE_LEARNINGS=[true] -# if using CodeRabbit's learnings, also provide the following -# for example, s3://bucket/path/to/database, gs://bucket/path/to/database, etc. -OBJECT_STORE_URI=[] + +# CodeRabbit - KNOWLEDGE BASE +# +# Requisite: To enable CodeRabbit's knowledge base, you need to provide an object store URI. +OBJECT_STORE_URI=[] # All major object stores are supported e.g., s3://bucket/path/to/database, gs://bucket/path/to/database, etc. + +ENABLE_KNOWLEDGE_BASE=[true] # Global feature flag to enable/disable all knowledge base features. + +ENABLE_PRS_INDEX=[true] # Feature flag to enable/disable PRs indexing. +ENABLE_ISSUES_INDEX=[true] # Feature flag to enable/disable Issues indexing. +ENABLE_LEARNING_INDEX=[true] # Feature flag to enable/disable Learning indexing. +ENABLE_CODE_GUIDELINES_INDEX=[true] # Feature flag to enable/disable Code Guidelines indexing. +ENABLE_CODE_INDEX=[true] # Feature flag to enable/disable Code indexing. JIRA_HOST=[] JIRA_PAT=[] diff --git a/docs/self-hosted/bitbucket.md b/docs/self-hosted/bitbucket.md index bccbb251..9d20ec39 100644 --- a/docs/self-hosted/bitbucket.md +++ b/docs/self-hosted/bitbucket.md @@ -95,6 +95,9 @@ LLM_TIMEOUT=360000 AWS_ACCESS_KEY_ID= AWS_SECRET_ACCESS_KEY= AWS_REGION= +# optionally, use cross-region inference to access models in other regions +# if this is set to `true`, CodeRabbit will access models from `us`, `eu`, or `ap` regions based on the AWS_REGION value. +AWS_USE_CROSS_REGION_INFERENCE=[] # System Configuration TEMP_PATH=/cache @@ -110,10 +113,20 @@ CODERABBIT_LICENSE_KEY= CODERABBIT_API_KEY= ENABLE_METRICS=[true] -ENABLE_LEARNINGS=[true] -# if using CodeRabbit's learnings, also provide the following -# for example, s3://bucket/path/to/database, gs://bucket/path/to/database, etc. -OBJECT_STORE_URI=[] + + +# CodeRabbit - KNOWLEDGE BASE +# +# Requisite: To enable CodeRabbit's knowledge base, you need to provide an object store URI. +OBJECT_STORE_URI=[] # All major object stores are supported e.g., s3://bucket/path/to/database, gs://bucket/path/to/database, etc. + +ENABLE_KNOWLEDGE_BASE=[true] # Global feature flag to enable/disable all knowledge base features. + +ENABLE_PRS_INDEX=[true] # Feature flag to enable/disable PRs indexing. +ENABLE_ISSUES_INDEX=[true] # Feature flag to enable/disable Issues indexing. +ENABLE_LEARNING_INDEX=[true] # Feature flag to enable/disable Learning indexing. +ENABLE_CODE_GUIDELINES_INDEX=[true] # Feature flag to enable/disable Code Guidelines indexing. +ENABLE_CODE_INDEX=[true] # Feature flag to enable/disable Code indexing. JIRA_HOST=[] JIRA_PAT=[] @@ -144,18 +157,18 @@ cat coderabbit.json | docker login -u _json_key --password-stdin us-docker.pkg.d docker pull us-docker.pkg.dev/coderabbitprod/self-hosted/coderabbit-agent:latest ``` -### Verify the image is up +## Host the image -You can query `/health` endpoint to verify that the `coderabbit-agent` service is up and running. +You can host the image on a server, serverless function, or container environment and expose port `8080`. Run the Docker image with the equivalent command on your chosen platform, ensuring you replace the `.env` file path with the path to your actual `.env` file: ```bash -curl 127.0.0.1:8080/health +docker run --env-file .env --publish 127.0.0.1:8080:8080 us-docker.pkg.dev/coderabbitprod/self-hosted/coderabbit-agent:latest ``` -## Host the image +### Verify the image is up -You can host the image on a server, serverless function, or container environment and expose port `8080`. Run the Docker image with the equivalent command on your chosen platform, ensuring you replace the `.env` file path with the path to your actual `.env` file: +You can query `/health` endpoint to verify that the `coderabbit-agent` service is up and running. ```bash -docker run --env-file .env --publish 127.0.0.1:8080:8080 us-docker.pkg.dev/coderabbitprod/self-hosted/coderabbit-agent:latest +curl 127.0.0.1:8080/health ``` diff --git a/docs/self-hosted/github.md b/docs/self-hosted/github.md index 6e2b27c1..accdb8a2 100644 --- a/docs/self-hosted/github.md +++ b/docs/self-hosted/github.md @@ -106,6 +106,9 @@ LLM_TIMEOUT=360000 AWS_ACCESS_KEY_ID= AWS_SECRET_ACCESS_KEY= AWS_REGION= +# optionally, use cross-region inference to access models in other regions +# if this is set to `true`, CodeRabbit will access models from `us`, `eu`, or `ap` regions based on the AWS_REGION value. +AWS_USE_CROSS_REGION_INFERENCE=[] # if using Anthropic LLM_PROVIDER=anthropic @@ -128,10 +131,20 @@ CODERABBIT_LICENSE_KEY= CODERABBIT_API_KEY= ENABLE_METRICS=[true] -ENABLE_LEARNINGS=[true] -# if using CodeRabbit's learnings, also provide the following -# for example, s3://bucket/path/to/database, gs://bucket/path/to/database, etc. -OBJECT_STORE_URI=[] + + +# CodeRabbit - KNOWLEDGE BASE +# +# Requisite: To enable CodeRabbit's knowledge base, you need to provide an object store URI. +OBJECT_STORE_URI=[] # All major object stores are supported e.g., s3://bucket/path/to/database, gs://bucket/path/to/database, etc. + +ENABLE_KNOWLEDGE_BASE=[true] # Global feature flag to enable/disable all knowledge base features. + +ENABLE_PRS_INDEX=[true] # Feature flag to enable/disable PRs indexing. +ENABLE_ISSUES_INDEX=[true] # Feature flag to enable/disable Issues indexing. +ENABLE_LEARNING_INDEX=[true] # Feature flag to enable/disable Learning indexing. +ENABLE_CODE_GUIDELINES_INDEX=[true] # Feature flag to enable/disable Code Guidelines indexing. +ENABLE_CODE_INDEX=[true] # Feature flag to enable/disable Code indexing. JIRA_HOST=[] JIRA_PAT=[] diff --git a/docs/self-hosted/gitlab.md b/docs/self-hosted/gitlab.md index 395d93fc..1e8121cf 100644 --- a/docs/self-hosted/gitlab.md +++ b/docs/self-hosted/gitlab.md @@ -134,6 +134,9 @@ LLM_TIMEOUT=360000 AWS_ACCESS_KEY_ID= AWS_SECRET_ACCESS_KEY= AWS_REGION= +# optionally, use cross-region inference to access models in other regions +# if this is set to `true`, CodeRabbit will access models from `us`, `eu`, or `ap` regions based on the AWS_REGION value. +AWS_USE_CROSS_REGION_INFERENCE=[] # if using Anthropic LLM_PROVIDER=anthropic @@ -155,10 +158,21 @@ CODERABBIT_LICENSE_KEY= CODERABBIT_API_KEY= ENABLE_METRICS=[true] -ENABLE_LEARNINGS=[true] -# if using CodeRabbit's learnings, also provide the following -# for example, s3://bucket/path/to/database, gs://bucket/path/to/database, etc. -OBJECT_STORE_URI=[] + + +# CodeRabbit - KNOWLEDGE BASE +# +# Requisite: To enable CodeRabbit's knowledge base, you need to provide an object store URI. +OBJECT_STORE_URI=[] # All major object stores are supported e.g., s3://bucket/path/to/database, gs://bucket/path/to/database, etc. + +ENABLE_KNOWLEDGE_BASE=[true] # Global feature flag to enable/disable all knowledge base features. + +ENABLE_PRS_INDEX=[true] # Feature flag to enable/disable PRs indexing. +ENABLE_ISSUES_INDEX=[true] # Feature flag to enable/disable Issues indexing. +ENABLE_LEARNING_INDEX=[true] # Feature flag to enable/disable Learning indexing. +ENABLE_CODE_GUIDELINES_INDEX=[true] # Feature flag to enable/disable Code Guidelines indexing. +ENABLE_CODE_INDEX=[true] # Feature flag to enable/disable Code indexing. + JIRA_HOST=[] JIRA_PAT=[] @@ -189,18 +203,18 @@ cat coderabbit.json | docker login -u _json_key --password-stdin us-docker.pkg.d docker pull /coderabbit-agent:latest ``` -### Verify the image is up +## Host the image -You can query `/health` endpoint to verify that the coderabbit-agent service is up and running. +You can host the image on a server, serverless function, or container environment and expose port `8080`. Run the Docker image with the equivalent command on your chosen platform, ensuring you replace the `.env` file path with the path to your actual `.env` file: ```bash -curl 127.0.0.1:8080/health +docker run --env-file .env --publish 127.0.0.1:8080:8080 /coderabbit-agent:latest ``` -## Host the image +### Verify the image is up -You can host the image on a server, serverless function, or container environment and expose port `8080`. Run the Docker image with the equivalent command on your chosen platform, ensuring you replace the `.env` file path with the path to your actual `.env` file: +You can query `/health` endpoint to verify that the coderabbit-agent service is up and running. ```bash -docker run --env-file .env --publish 127.0.0.1:8080:8080 /coderabbit-agent:latest +curl 127.0.0.1:8080/health ``` diff --git a/docs/tools/dotenv.md b/docs/tools/dotenv.md index cac2613f..a3a2dfd2 100644 --- a/docs/tools/dotenv.md +++ b/docs/tools/dotenv.md @@ -12,6 +12,15 @@ import ProPlanNotice from '@site/src/components/ProPlanNotice.mdx'; [Dotenv Linter](https://github.com/dotenv-linter/dotenv-linter) is a lightning-fast linter for `.env` files. It helps ensure your environment files are consistent, typo-free, and follow best practices. +## Files + +Dotenv Linter will run on files with the following patterns: + +- `**/.env` +- `**/.env.*` + +We will not run against files that do not start with `.env` (e.g., `test.env`). However `.env.dev` or `.env.local` is fine. + :::note Dotenv Linter does not require configuration to run and automatically anlysises `.env` files. If no configuration file is found, it will use default settings. diff --git a/docs/tools/shopify-cli.md b/docs/tools/shopify-cli.md index 934a6345..cc574723 100644 --- a/docs/tools/shopify-cli.md +++ b/docs/tools/shopify-cli.md @@ -12,6 +12,31 @@ import ProPlanNotice from '@site/src/components/ProPlanNotice.mdx'; [Shopify CLI](https://github.com/Shopify/cli) is a command-line tool that helps you build Shopify apps, themes, and custom storefronts. It provides functionality for initializing, building, developing, and deploying Shopify projects. +## Requirements + +The tool only runs when the following conditions are met: + +### File Types + +- Only processes pull requests changing `*.liquid` files + +### Configuration Files + +- Requires either `.theme-check.yml` or `.theme-check.yaml` configuration file in the project root + +### Directory Structure + +- Requires the standard Shopify theme directory structure at the project root: + - `assets/` + - `config/` + - `layout/` + - `locales/` + - `sections/` + - `snippets/` + - `templates/` + +If any of these requirements are not met, the tool will not run. + ## Validation Rules The tool checks for: diff --git a/sidebars.ts b/sidebars.ts index 3cc53ff0..31081f0c 100644 --- a/sidebars.ts +++ b/sidebars.ts @@ -85,6 +85,7 @@ const sidebars: SidebarsConfig = { "getting-started/configure-coderabbit", "guides/initial-configuration", "integrations/knowledge-base", + "guides/learnings", "guides/review-instructions", "tools/tools", "guides/roles", @@ -126,15 +127,22 @@ const sidebars: SidebarsConfig = { { type: "category", collapsed: true, - label: "Review local changes", + label: "IDE extensions", items: [ "guides/about-vscode", "guides/install-vscode", "guides/use-vscode", + "guides/use-vscode-selfhosted", "guides/config-vscode", "guides/uninstall-vscode", ], }, + { + type: "category", + collapsed: true, + label: "Context enrichment", + items: ["context-enrichment/mcp-server-integrations"], + }, { type: "category", collapsed: true, @@ -176,16 +184,21 @@ const sidebars: SidebarsConfig = { "tools/list", "tools/actionlint", "tools/biome", + "tools/brakeman", "tools/buf", + "tools/checkmake", "tools/checkov", "tools/circleci", + "tools/clippy", "tools/cppcheck", "tools/detekt", + "tools/dotenv", "tools/eslint", "tools/flake8", "tools/gitleaks", "tools/golangci-lint", "tools/hadolint", + "tools/htmlhint", "tools/languagetool", "tools/luacheck", "tools/markdownlint", @@ -196,6 +209,7 @@ const sidebars: SidebarsConfig = { "tools/pipeline-remediation", "tools/pmd", "tools/prisma-lint", + "tools/pylint", "tools/regal", "tools/rubocop", "tools/ruff", @@ -218,7 +232,6 @@ const sidebars: SidebarsConfig = { "overview/why-coderabbit", "faq", "early-access", - "future-development", "changelog", ], }, diff --git a/static/code/gitlab-webhook.sh b/static/code/gitlab-webhook.sh old mode 100644 new mode 100755 index 1458ba0d..87c3be7d --- a/static/code/gitlab-webhook.sh +++ b/static/code/gitlab-webhook.sh @@ -34,7 +34,7 @@ usage() { cat < -u -s \\ - [-t ] [-A ] [-p | -g ] + [-t ] [-A ] [-p | -g ] [-v] Required: -h GitLab host (e.g. gitlab.example.com) @@ -50,15 +50,18 @@ Authentication (one of): Scope (choose one): -p Project ID or full path (e.g. 42 or group/app) -g Group ID or full path, recurse through all subgroups & projects + +Options: + -v Verbose output (show individual project IDs in final summary) EOF exit 1 } HOST="" HOOK_URL="" HOOK_SECRET="" TOKEN="${GITLAB_TOKEN:-}" AUTH_HEADER="" -PROJECT="" GROUP="" +PROJECT="" GROUP="" VERBOSE=false -while getopts "h:u:s:t:A:p:g:" opt; do +while getopts "h:u:s:t:A:p:g:v" opt; do case "$opt" in h) HOST=$OPTARG ;; u) HOOK_URL=$OPTARG ;; @@ -67,6 +70,7 @@ while getopts "h:u:s:t:A:p:g:" opt; do A) AUTH_HEADER=$OPTARG ;; p) PROJECT=$OPTARG ;; g) GROUP=$OPTARG ;; + v) VERBOSE=true ;; *) usage ;; esac done @@ -78,7 +82,7 @@ done # Token handling if [[ -z $TOKEN ]]; then - echo "❌ No access token provided. Use -t or set \$GITLAB_TOKEN" >&2 + echo "[ERROR] No access token provided. Use -t or set \$GITLAB_TOKEN" >&2 exit 1 fi @@ -98,6 +102,11 @@ CURL_BASE=(curl -sSf --header "${AUTH_HEADER}: ${TOKEN}") declare -A PROCESSED_PROJECTS # Track projects where webhooks were successfully added WEBHOOK_PROJECTS=() +# Track projects where webhooks already existed +EXISTING_WEBHOOK_PROJECTS=() +# Progress counters +TOTAL_PROJECTS_FOUND=0 +PROJECTS_PROCESSED=0 ############################################################################## # Helpers @@ -108,6 +117,63 @@ url_encode() { printf '%s' "$string" | sed 's/\//%2F/g; s/ /%20/g; s/@/%40/g; s/:/%3A/g; s/#/%23/g; s/?/%3F/g; s/&/%26/g; s/=/%3D/g; s/+/%2B/g' } +# Function to handle paginated API calls +fetch_paginated() { + local url=$1 + local page=1 + local per_page=100 + + while true; do + local paginated_url="${url}?per_page=${per_page}&page=${page}" + + # Add existing query params if they exist + if [[ "$url" == *"?"* ]]; then + paginated_url="${url}&per_page=${per_page}&page=${page}" + fi + + local response + response=$("${CURL_BASE[@]}" "$paginated_url" 2>/dev/null) || { + echo "[ERROR] Failed to fetch page $page from $url" >&2 + return 1 + } + + # Check if response is empty array or null + if [[ "$response" == "[]" || "$response" == "null" ]]; then + break + fi + + # Extract results from current page + local page_results + page_results=$(echo "$response" | jq -r '.[].id' 2>/dev/null) || { + echo "[ERROR] Failed to parse JSON response from page $page" >&2 + return 1 + } + + # If no results on this page, we're done + if [[ -z "$page_results" ]]; then + break + fi + + # Count projects found and show progress + local page_count + page_count=$(echo "$page_results" | wc -l) + TOTAL_PROJECTS_FOUND=$((TOTAL_PROJECTS_FOUND + page_count)) + echo "[PROGRESS] Found $page_count projects on page $page (total: $TOTAL_PROJECTS_FOUND)" >&2 + + # Output page results + echo "$page_results" + + # If we got less than per_page results, we're on the last page + local item_count + item_count=$(echo "$response" | jq '. | length' 2>/dev/null) || 0 + if [[ "$item_count" -lt "$per_page" ]]; then + break + fi + + ((page++)) + done +} + create_hook() { local pid=$1 @@ -118,6 +184,7 @@ create_hook() { # Mark as processed PROCESSED_PROJECTS[$pid]=1 + PROJECTS_PROCESSED=$((PROJECTS_PROCESSED + 1)) local encoded_pid # URL encode if pid is not purely numeric @@ -127,6 +194,22 @@ create_hook() { encoded_pid=$(url_encode "$pid") fi + # Check if webhook already exists + local existing_webhooks + existing_webhooks=$("${CURL_BASE[@]}" "${API}/projects/${encoded_pid}/hooks" 2>/dev/null) || { + echo "[ERROR] Failed to fetch existing webhooks for project $pid" >&2 + return 1 + } + + # Check if our webhook URL already exists + if echo "$existing_webhooks" | jq -e --arg url "$HOOK_URL" '.[] | select(.url == $url)' >/dev/null 2>&1; then + [[ "$VERBOSE" == "true" ]] && echo "[INFO] Webhook already exists for project: $pid" >&2 + EXISTING_WEBHOOK_PROJECTS+=("$pid") + return 0 + fi + + [[ "$VERBOSE" == "true" ]] && echo "[INFO] Adding webhook to project: $pid" >&2 + "${CURL_BASE[@]}" --request POST \ --data-urlencode "url=${HOOK_URL}" \ --data "token=${HOOK_SECRET}" \ @@ -151,38 +234,64 @@ traverse_group() { else encoded_gid=$(url_encode "$gid") fi - # projects (includes nested sub-groups) + + # projects (includes nested sub-groups) - with pagination while IFS= read -r pid; do [[ -n "$pid" ]] && create_hook "$pid" done < <( - "${CURL_BASE[@]}" \ - "${API}/groups/${encoded_gid}/projects?include_subgroups=true&per_page=100" | - jq -r '.[].id' + fetch_paginated "${API}/groups/${encoded_gid}/projects?include_subgroups=true" ) - # recurse explicit subgroups (older GitLab) + + # recurse explicit subgroups (older GitLab) - with pagination while IFS= read -r sg; do [[ -n "$sg" ]] && traverse_group "$sg" done < <( - "${CURL_BASE[@]}" "${API}/groups/${encoded_gid}/subgroups?per_page=100" | - jq -r '.[].id' + fetch_paginated "${API}/groups/${encoded_gid}/subgroups" ) } ############################################################################## # Main ############################################################################## +echo "[INFO] Starting webhook processing..." >&2 + if [[ -n $PROJECT ]]; then + echo "[INFO] Processing single project: $PROJECT" >&2 create_hook "$PROJECT" else + echo "[INFO] Processing group and subgroups: $GROUP" >&2 traverse_group "$GROUP" fi +echo "[INFO] Finished processing all projects" >&2 + # Print final summary -if [[ ${#WEBHOOK_PROJECTS[@]} -eq 0 ]]; then - echo "❌ No webhooks were installed." +total_projects=$((${#WEBHOOK_PROJECTS[@]} + ${#EXISTING_WEBHOOK_PROJECTS[@]})) + +if [[ $total_projects -eq 0 ]]; then + echo "[INFO] No projects were processed" else - echo "✅ Webhooks installed successfully on ${#WEBHOOK_PROJECTS[@]} project(s):" - for pid in "${WEBHOOK_PROJECTS[@]}"; do - echo " - Project ID: $pid" - done + if [[ ${#WEBHOOK_PROJECTS[@]} -gt 0 ]]; then + if [[ "$VERBOSE" == "true" ]]; then + echo "[INFO] Webhooks installed successfully on ${#WEBHOOK_PROJECTS[@]} project(s):" + for pid in "${WEBHOOK_PROJECTS[@]}"; do + echo " - Project ID: $pid" + done + else + echo "[INFO] Webhooks installed successfully on ${#WEBHOOK_PROJECTS[@]} project(s)" + fi + fi + + if [[ ${#EXISTING_WEBHOOK_PROJECTS[@]} -gt 0 ]]; then + if [[ "$VERBOSE" == "true" ]]; then + echo "[INFO] Webhooks already existed on ${#EXISTING_WEBHOOK_PROJECTS[@]} project(s):" + for pid in "${EXISTING_WEBHOOK_PROJECTS[@]}"; do + echo " - Project ID: $pid" + done + else + echo "[INFO] Webhooks already existed on ${#EXISTING_WEBHOOK_PROJECTS[@]} project(s)" + fi + fi + + echo "[INFO] Total projects processed: $total_projects" fi diff --git a/static/img/finishing-touches/utg.gif b/static/img/finishing-touches/utg.gif new file mode 100644 index 00000000..4d685239 Binary files /dev/null and b/static/img/finishing-touches/utg.gif differ diff --git a/static/schema/schema.v2.json b/static/schema/schema.v2.json index 1014db62..b31867ae 100644 --- a/static/schema/schema.v2.json +++ b/static/schema/schema.v2.json @@ -195,6 +195,11 @@ "default": true, "description": "Generate sequence diagrams in the walkthrough." }, + "estimate_code_review_effort": { + "type": "boolean", + "default": true, + "description": "Estimate the code review effort in the walkthrough." + }, "assess_linked_issues": { "type": "boolean", "default": true, @@ -322,7 +327,7 @@ "type": "string" }, "default": [], - "description": "Restrict automatic reviews to only those pull requests that match one of the specified labels." + "description": "List of labels to control which PRs/MRs to review. Labels starting with '!' are negative matches. Examples: ['bug', 'feature'] - reviews PRs with 'bug' OR 'feature' label. ['!wip'] - reviews all PRs except those with 'wip' label. ['bug', '!wip'] - reviews PRs with 'bug' label but not if they have 'wip' label." }, "drafts": { "type": "boolean", @@ -374,6 +379,81 @@ "additionalProperties": false, "default": {} }, + "pre_merge_checks": { + "type": "object", + "properties": { + "docstrings": { + "type": "object", + "properties": { + "mode": { + "type": "string", + "enum": ["off", "warning", "error"], + "default": "warning", + "description": "Mode | Level of enforcement for docstring coverage check. Warning only generates a warning and does not require the user to resolve the check. While error requires the user to resolve issues before merging pull request." + }, + "threshold": { + "type": "number", + "minimum": 0, + "maximum": 100, + "default": 80, + "description": "Percentage threshold for docstring coverage check." + } + }, + "additionalProperties": false, + "default": {}, + "description": "Docstring Coverage | Checks if the code has sufficient docstrings." + }, + "title": { + "type": "object", + "properties": { + "mode": { + "type": "string", + "enum": ["off", "warning", "error"], + "default": "warning", + "description": "Mode | Level of enforcement for pull request title check. Warning only generates a warning and does not require the user to resolve the check. While error requires the user to resolve issues before merging pull request." + }, + "requirements": { + "type": "string", + "default": "", + "description": "Requirements | Requirements for the pull request title. Example: 'Title should be concise and descriptive, ideally under 50 characters.'" + } + }, + "additionalProperties": false, + "default": {}, + "description": "Title Check | Checks if the pull request title is appropriate and follows best practices." + }, + "description": { + "type": "object", + "properties": { + "mode": { + "type": "string", + "enum": ["off", "warning", "error"], + "default": "warning", + "description": "Mode | Level of enforcement for pull request description check. Warning only generates a warning and does not require the user to resolve the check. While error requires the user to resolve issues before merging pull request." + } + }, + "additionalProperties": false, + "default": {}, + "description": "Description Check | Checks if the pull request description is appropriate and follows best practices." + }, + "issue_assessment": { + "type": "object", + "properties": { + "mode": { + "type": "string", + "enum": ["off", "warning", "error"], + "default": "warning", + "description": "Mode | Level of enforcement for linked issue assessment. Warning only generates a warning and does not require the user to resolve the check. While error requires the user to resolve issues before merging pull request." + } + }, + "additionalProperties": false, + "default": {}, + "description": "Linked Issue Assessment | Checks if the pull request addresses the linked issues. Generate an assessment of how well the changes address the linked issues." + } + }, + "additionalProperties": false, + "default": {} + }, "tools": { "type": "object", "properties": { @@ -535,7 +615,7 @@ "enabled": { "type": "boolean", "default": true, - "description": "Enable Biome | Biome is a fast formatter, linter, and analyzer for web projects. | Enable Biome integration. | v1.9.4" + "description": "Enable Biome | Biome is a fast formatter, linter, and analyzer for web projects. | Enable Biome integration. | v2.1.2" } }, "additionalProperties": false, @@ -636,7 +716,7 @@ "enabled": { "type": "boolean", "default": true, - "description": "Enable golangci-lint | golangci-lint is a fast linters runner for Go. | Enable golangci-lint integration. | v1.64.8" + "description": "Enable golangci-lint | golangci-lint is a fast linters runner for Go. | Enable golangci-lint integration. | v2.2.2" }, "config_file": { "type": "string", @@ -817,7 +897,7 @@ "enabled": { "type": "boolean", "default": true, - "description": "Enable Semgrep | Semgrep is a static analysis tool designed to scan code for security vulnerabilities and code quality issues. | Enable Semgrep integration. | v1.122.0" + "description": "Enable Semgrep | Semgrep is a static analysis tool designed to scan code for security vulnerabilities and code quality issues. | Enable Semgrep integration. | v1.128.1" }, "config_file": { "type": "string", @@ -899,12 +979,12 @@ "enabled": { "type": "boolean", "default": true, - "description": "Enable OXC | OXC is a JavaScript/TypeScript linter written in Rust. | v0.16.10" + "description": "Enable Oxlint | Oxlint is a JavaScript/TypeScript linter for OXC written in Rust. | v0.16.10" } }, "additionalProperties": false, "default": {}, - "description": "OXC is a JavaScript/TypeScript linter written in Rust." + "description": "Oxlint is a JavaScript/TypeScript linter for OXC written in Rust." }, "shopifyThemeCheck": { "type": "object", diff --git a/tailwind.config.js b/tailwind.config.js index b24582d0..dd081f63 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -21,7 +21,7 @@ module.exports = { preflight: false, // disable Tailwind's reset }, content: ["./src/**/*.{js,jsx,ts,tsx}", "../docs/**/*.mdx"], // my markdown stuff is in ../docs, not /src - darkMode: ["class", '[data-theme="dark"]'], // hooks into docusaurus' dark mode settigns + darkMode: ["class", '[data-theme="dark"]'], // hooks into docusaurus' dark mode settings theme: { fontFamily: { figtree: ["Figtree", "sans-serif"], pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy