Skip to content

Add linter documentation #59

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 13 commits into from
Jul 15, 2024
Merged
2 changes: 1 addition & 1 deletion docs/guides/commands.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ sidebar_label: CodeRabbit Commands
description:
CodeRabbit offers various commands that can be invoked as PR comments to
control the review process.
sidebar_position: 3
sidebar_position: 4
---

The following commands are available (invoked as PR comments):
Expand Down
2 changes: 1 addition & 1 deletion docs/guides/delete-account.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
title: Delete CodeRabbit Account
sidebar_label: Delete CodeRabbit Account
# description:
sidebar_position: 3
sidebar_position: 5
---

The guide explains how to delete your CodeRabbit account and all the data
Expand Down
3 changes: 1 addition & 2 deletions docs/guides/ondemand-reports.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ title: On-demand Reports
sidebar_label: On-demand Reports (Beta)
description:
CodeRabbit offers a way to generate on-demand reports using a simple API request
sidebar_position: 5
sidebar_position: 6
---

```mdx-code-block
Expand Down Expand Up @@ -54,7 +54,6 @@ Sample output:
]
```


:::info

If you get a 401 UNAUTHORIZED error, check if you're passing the right API key in the `x-coderabbitai-api-key` header
Expand Down
2 changes: 1 addition & 1 deletion docs/guides/review-instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ description:
CodeRabbit offers various customization options to tailor the reviews to your
specific requirements. Customizations can be made using one of the below
options.
sidebar_position: 2
sidebar_position: 3
---

The guide explains how to add custom review instructions for the entire project.
Expand Down
4 changes: 4 additions & 0 deletions docs/guides/tools/_category_.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
label: Linters
position: 2
collapsible: true
collapsed: true
37 changes: 37 additions & 0 deletions docs/guides/tools/languagetool.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
---
title: LanguageTool
sidebar_label: LanguageTool
description: CodeRabbit's guide to LanguageTool.
sidebar_position: 3
---

[LanguageTool](https://github.com/languagetool-org/languagetool) is a style and grammar checker.

## Files

LanguageTool will run on files with the following extensions:

- `.md`
- `.mdx`
- `.markdown`
- `.txt`

## Configuration

LanguageTool's style and grammar check depends on the language selected in CodeRabbit's configuration. You can set the language by setting the `language` field in your project's `.coderabbit.yaml` file or setting the "Review Language" field in CodeRabbit's settings page.

CodeRabbit allows further configuring LanguageTool by setting specific rules and categories to be enabled/disabled. This can be done under the `reviews.tools.languagetool` field in your project's `.coderabbit.yaml` file or setting the various options under "Review → Tools → LanguageTool" in CodeRabbit's settings page. The following options are available:

- `enabled` - Enable or disable LanguageTool.
- `enabled_rules` - Enable specific rules.
- `disabled_rules` - Disable specific rules.
- `enabled_categories` - Enable specific categories.
- `disabled_categories` - Disable specific categories.
- `enabled_only`- Enable only the rules and categories of IDs are specified with 'enabledRules' or 'enabledCategories'.
- `level` - Set the level of feedback to be provided by LanguageTool. The following levels are available:
- `default` - Provides feedback on common issues.
- `picky` - Provides feedback on more issues, rules that you might only find useful when checking formal text.

## Links

- [LanguageTool Rules](https://community.languagetool.org/rule/list?lang=en)
75 changes: 75 additions & 0 deletions docs/guides/tools/markdownlint.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
---
title: Markdownlint
sidebar_label: Markdownlint
description: CodeRabbit's guide to Markdownlint.
sidebar_position: 3
---

[Markdownlint](https://github.com/DavidAnson/markdownlint) is a linter for Markdown files.

## Files

Markdownlint will run on files with the following extensions:

- `.md`
- `.markdown`

## Configuration

Markdownlint supports the following config files:

- `.markdownlint.jsonc`
- `.markdownlint.json`
- `.markdownlint.yaml`
- `.markdownlint.yml`

CodeRabbit will use the following settings based on the profile selected if no config file is found:

### Chill

```json
{
"default": true,
"line-length": false,
"no-duplicate-heading": {
"siblings_only": true
},
"no-trailing-punctuation": {
"punctuation": ".,;:"
},
"ol-prefix": false,
"list-marker-space": false,
"no-inline-html": false,
"first-line-h1": false,
"no-trailing-spaces": false,
"single-h1": false,
"blank_lines": false,
}
```

### Assertive

```json
{
"default": true,
"line-length": false,
"no-duplicate-heading": {
"siblings_only": true
},
"no-trailing-punctuation": {
"punctuation": ".,;:"
},
"ol-prefix": true,
"list-marker-space": false,
"no-inline-html": true,
"first-line-h1": true,
"no-trailing-spaces": true,
"single-h1": true,
"blank_lines": true,
}

```

## Links

- [Markdownlint Configuration](https://github.com/DavidAnson/markdownlint?tab=readme-ov-file#configuration)
128 changes: 128 additions & 0 deletions docs/guides/tools/ruff.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
---
title: Ruff
sidebar_label: Ruff
description: CodeRabbit's guide to Ruff.
sidebar_position: 2
---

[Ruff](https://docs.astral.sh/ruff/) is a linter and code formatter for Python.

## Files

Ruff will run on files with the following extensions:

- `.py`

## Configuration

Ruff supports the following config files:

- `pyproject.toml`
- `ruff.toml`
- `.ruff.toml`

CodeRabbit will use the following settings based on the profile selected if no config file is found:

### Chill

```toml
[lint]
select = [
# pycodestyle subset rules
"E7",
"E9",
# Pyflakes
"F",
# flake8-bugbear
"B",
# flake8-simplify
"SIM",
# isort subset rules
"I002",
]
[lint.per-file-ignores]
"**/__init__.py" = ["E402"]
"**/conftest.py" = ["E402"]
```

### Assertive

```toml
[lint]
select = [
# pycodestyle subset rules
"E7",
"E9",
# Pyflakes
"F",
# flake8-bugbear
"B",
# flake8-simplify
"SIM",
# isort subset rules
"I002",
# pycodestyle subset rules
"E4",
"E101",
# mccabe
"C90",
# flake8-annotations
"ANN",
# flake8-async
"ASYNC",
# flake8-trio
"TRIO",
# flake8-bandit
"S",
# flake8-blind-except
"BLE",
# flake8-boolean-trap
"FBT",
# flake8-commas
"COM",
# flake8-comprehensions
"C4",
# flake8-datetimez
"DTZ",
# flake8-debugger
"T10",
# flake8-django
"DJ",
# flake8-executable
"EXE",
# flake8-implicit-str-concat
"ISC",
# flake8-logging
"LOG",
# flake8-logging-format
"G",
# flake8-pie
"PIE",
# flake8-pytest-style
"PT",
# flake8-raise
"RSE",
# flake8-return
"RET",
# flake8-unused-arguments
"ARG",
# tryceratops
"TRY",
# flynt
"FLY",
# Ruff-specific rules
"RUF",
# pyupgrade
"UP",
]
[lint.per-file-ignores]
"**/__init__.py" = ["E402"]
"**/conftest.py" = ["E402"]
"**/*_test.py" = ["S101"]
"**/test_*.py" = ["S101"]
"**/{test,tests}/**/*.py" = ["S101"]
```

## Links

- [Ruff Configuration](https://docs.astral.sh/ruff/configuration/)
37 changes: 37 additions & 0 deletions docs/guides/tools/shellcheck.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
---
title: ShellCheck
sidebar_label: ShellCheck
description: CodeRabbit's guide to ShellCheck.
sidebar_position: 1
---

[ShellCheck](https://www.shellcheck.net/) is a linter for shell scripts.

## Files

ShellCheck will run on files with the following extensions:

- `.sh`
- `.bash`
- `.ksh`
- `.dash`

## Configuration

CodeRabbit will use the following settings based on the profile selected:

### Chill

```shell
--severity=warning
```

### Assertive

```shell
--severity=style
```

## Links

- [ShellCheck Wiki](https://www.shellcheck.net/wiki/)
39 changes: 39 additions & 0 deletions docs/guides/tools/tools.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
---
title: Tools
sidebar_label: Tools
description: Overview of CodeRabbit's supported linters and security analysis tools.
sidebar_position: 1
---

CodeRabbit supports various linters and security analysis tools to improve the code review process. The output of these tools is used to enhance the feedback provided by CodeRabbit, making it possible to provide 1-click fixes for common issues.

## Enabling/Disabling Tools

You can enable or disable tools by setting `reviews.tools.<linter>.enabled` in your project's `.coderabbit.yaml` file or setting the "Review → Tools → Linter → Enabled" field in CodeRabbit's settings page.

## Customizing Tools

CodeRabbit supports customizing the strictness of tools by setting `reviews.profile` in your project's `.coderabbit.yaml` file or setting the "Review → Profile" field in CodeRabbit's settings page. The following profiles are available:

- `Chill` - Yields less feedback, that may be considered lenient.
- `Assertive` - Yields more feedback, that may be considered nit-picky.

Apart from the overall profile, you can also configure each tool by providing a configuration file (specific to the tool) in your project. This would allow you to further customize the tool's behavior, by enabling/disabling specific rules, setting rule severity, etc.

## Checking Tool Output

When a tool is enabled, CodeRabbit will run it on your change request and attach the output under "Review details" comment in the change request. The output will be displayed in a structured format, with information on the file, line number, and the issue detected. For example:

```text
Ruff
fib.py
21-21: f-string without any placeholders

Remove extraneous f prefix

(F541)
```

## Supported Tools

- [Ruff](./ruff.md)