mirror of
https://github.com/super-linter/super-linter.git
synced 2024-11-29 17:41:00 -05:00
699 lines
19 KiB
Markdown
699 lines
19 KiB
Markdown
# Disabling linters and Rules
|
|
If you find you need to ignore certain **errors** and **warnings**, you will need to know the *format* to disable the **Super-Linter** rules.
|
|
Below are examples and documentation for each language and the various methods to disable.
|
|
|
|
## Table of Linters
|
|
- [Ruby](#ruby)
|
|
- [Shell](#shell)
|
|
- [Ansible](#ansible)
|
|
- [YAML](#yaml)
|
|
- [Python](#python3)
|
|
- [JSON](#json)
|
|
- [Markdown](#markdown)
|
|
- [Perl](#perl)
|
|
- [PHP](#php)
|
|
- [XML](#xml)
|
|
- [Coffeescript](#coffeescript)
|
|
- [Javascript Eslint](#javascript-eslint)
|
|
- [Javascript Standard](#javascript-standard)
|
|
- [Typescript Eslint](#typescript-eslint)
|
|
- [Typescript Standard](#typescript-standard)
|
|
- [Golang](#golang)
|
|
- [Dockerfile](#dockerfile)
|
|
- [Terraform](#terraform)
|
|
- [CSS](#stylelint)
|
|
- [ENV](#dotenv-linter)
|
|
- [Kotlin](#kotlin)
|
|
- [OpenAPI](#openapi)
|
|
- [Protocol Buffers](#protocol-buffers)
|
|
|
|
<!-- toc -->
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
## Ruby
|
|
- [RuboCop](https://github.com/rubocop-hq/rubocop)
|
|
|
|
### RuboCop Config file
|
|
- `.github/linters/.ruby-lint.yml`
|
|
- You can pass multiple rules and overwrite default rules
|
|
- File should be located at: `.github/linters/.ruby-lint.yml`
|
|
- **Note:** We use the Default **GitHub** Rule set from [RuboCop-GitHub](https://github.com/github/rubocop-github)
|
|
|
|
### RuboCop disable single line
|
|
```ruby
|
|
method(argument) # rubocop:disable SomeRule, SomeOtherRule
|
|
```
|
|
|
|
### RuboCop disable code block
|
|
```ruby
|
|
# rubocop:disable
|
|
This is a long line
|
|
var="this is some other stuff"
|
|
# rubocop:enable
|
|
```
|
|
|
|
### RuboCop disable entire file
|
|
If you need to ignore an entire file, you can update the `.github/linters/.ruby-lint.yml` to ignore certain files and locations
|
|
|
|
```yml
|
|
inherit_from:
|
|
- .rubocop_todo.yml
|
|
- .rubocop_app_overrides.yml
|
|
|
|
inherit_mode:
|
|
merge:
|
|
- Exclude
|
|
|
|
Rails:
|
|
Enabled: true
|
|
|
|
AllCops:
|
|
TargetRubyVersion: 2.5.1
|
|
EnabledByDefault: true
|
|
Exclude:
|
|
- 'db/**/*'
|
|
- 'config/**/*'
|
|
- 'script/**/*'
|
|
- 'bin/{rails,rake}'
|
|
- !ruby/regexp /old_and_unused\.rb$/
|
|
```
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
## Shell
|
|
- [Shellcheck](https://github.com/koalaman/shellcheck)
|
|
|
|
### Shellcheck Config file
|
|
- There is no top level *configuration file* available at this time
|
|
|
|
### Shellcheck disable single line
|
|
```bash
|
|
echo "Terrible stuff" # shellcheck disable=SC2059,SC2086
|
|
```
|
|
|
|
### Shellcheck disable code block
|
|
```bash
|
|
# shellcheck disable=SC2059,SC2086
|
|
echo "some hot garbage"
|
|
echo "More garbage code"
|
|
```
|
|
|
|
### Shellcheck disable entire file
|
|
- **Note:** The disable must be on the second line of the code right after the shebang
|
|
```bash
|
|
#!/bin/sh
|
|
# shellcheck disable=SC2059,SC1084
|
|
|
|
echo "stuff"
|
|
moreThings()
|
|
```
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
## Ansible
|
|
- [ansible-lint](https://github.com/ansible/ansible-lint)
|
|
|
|
### Ansible-lint Config file
|
|
- `.github/linters/.ansible-lint.yml`
|
|
- You can pass multiple rules and overwrite default rules
|
|
- File should be located at: `.github/linters/.ansible-lint.yml`
|
|
|
|
### Ansible-lint disable single line
|
|
```yml
|
|
- name: this would typically fire GitHasVersionRule 401 and BecomeUserWithoutBecomeRule 501
|
|
become_user: alice # noqa 401 501
|
|
git: src=/path/to/git/repo dest=checkout
|
|
```
|
|
### Ansible-lint disable code block
|
|
```yml
|
|
- name: this would typically fire GitHasVersionRule 401
|
|
git: src=/path/to/git/repo dest=checkout
|
|
tags:
|
|
- skip_ansible_lint
|
|
```
|
|
|
|
### Ansible-lint disable entire file
|
|
```yml
|
|
- name: this would typically fire GitHasVersionRule 401
|
|
git: src=/path/to/git/repo dest=checkout
|
|
tags:
|
|
- skip_ansible_lint
|
|
```
|
|
--------------------------------------------------------------------------------
|
|
|
|
## YAML
|
|
- [YamlLint](https://github.com/adrienverge/yamllint)
|
|
|
|
### Yamllint Config file
|
|
- `.github/linters/.yaml-lint.yml`
|
|
- You can pass multiple rules and overwrite default rules
|
|
- File should be located at: `.github/linters/.yaml-lint.yml`
|
|
|
|
### Yamllint disable single line
|
|
```yml
|
|
This line is waaaaaaaaaay too long # yamllint disable-line
|
|
```
|
|
|
|
### Yamllint disable code block
|
|
```yml
|
|
# yamllint disable rule:colons
|
|
- Key : value
|
|
dolor : sit,
|
|
foo : bar
|
|
# yamllint enable
|
|
```
|
|
|
|
### Yamllint disable entire file
|
|
If you need to ignore an entire file, you can update the `.github/linters/.yaml-lint.yml` to ignore certain files and locations
|
|
```yml
|
|
# For all rules
|
|
ignore: |
|
|
*.dont-lint-me.yaml
|
|
/bin/
|
|
!/bin/*.lint-me-anyway.yaml
|
|
|
|
rules:
|
|
key-duplicates:
|
|
ignore: |
|
|
generated
|
|
*.template.yaml
|
|
trailing-spaces:
|
|
ignore: |
|
|
*.ignore-trailing-spaces.yaml
|
|
/ascii-art/*
|
|
```
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
## Python3
|
|
- [pylint](https://www.pylint.org/)
|
|
|
|
### Pylint Config file
|
|
- `.github/linters/.python-lint`
|
|
- You can pass multiple rules and overwrite default rules
|
|
- File should be located at: `.github/linters/.python-lint`
|
|
|
|
### Pylint disable single line
|
|
```python
|
|
global VAR # pylint: disable=global-statement
|
|
```
|
|
|
|
### Pylint disable code block
|
|
```python
|
|
"""pylint option block-disable"""
|
|
|
|
__revision__ = None
|
|
|
|
class Foo(object):
|
|
"""block-disable test"""
|
|
|
|
def __init__(self):
|
|
pass
|
|
|
|
def meth1(self, arg):
|
|
"""this issues a message"""
|
|
print(self)
|
|
|
|
def meth2(self, arg):
|
|
"""and this one not"""
|
|
# pylint: disable=unused-argument
|
|
print(self\
|
|
+ "foo")
|
|
|
|
def meth3(self):
|
|
"""test one line disabling"""
|
|
# no error
|
|
print(self.baz) # pylint: disable=no-member
|
|
# error
|
|
print(self.baz)
|
|
```
|
|
|
|
### Pylint disable entire file
|
|
```python
|
|
#!/bin/python3
|
|
# pylint: skip-file
|
|
|
|
var = "terrible code down here..."
|
|
```
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
## JSON
|
|
- [jsonlint](https://github.com/zaach/jsonlint)
|
|
|
|
### JsonLint Config file
|
|
- There is no top level *configuration file* available at this time
|
|
|
|
### JsonLint disable single line
|
|
- There is currently **No** way to disable rules inline of the file(s)
|
|
|
|
### JsonLint disable code block
|
|
- There is currently **No** way to disable rules inline of the file(s)
|
|
|
|
### JsonLint disable entire file
|
|
- There is currently **No** way to disable rules inline of the file(s)
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
## Markdown
|
|
- [markdownlint-cli](https://github.com/igorshubovych/markdownlint-cli#readme)
|
|
- [markdownlint rule documentation](https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md)
|
|
- [markdownlint inline comment syntax](https://github.com/DavidAnson/markdownlint#configuration)
|
|
|
|
### markdownlint Config file
|
|
- `.github/linters/.markdown-lint.yml`
|
|
- You can pass multiple rules and overwrite default rules
|
|
- File should be located at: `.github/linters/.markdownlint.yml`
|
|
|
|
### markdownlint disable single line
|
|
```markdown
|
|
## Here is some document
|
|
Here is some random data
|
|
<!-- markdownlint-disable -->
|
|
any violation you want
|
|
<!-- markdownlint-restore -->
|
|
Here is more data
|
|
```
|
|
### markdownlint disable code block
|
|
```markdown
|
|
## Here is some document
|
|
Here is some random data
|
|
<!-- markdownlint-disable -->
|
|
any violations you want
|
|
<!-- markdownlint-restore -->
|
|
Here is more data
|
|
```
|
|
|
|
### markdownlint disable entire file
|
|
- You can encapsulate the entire file with the *code block format* to disable an entire file from being parsed
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
## Perl
|
|
- [perl](https://pkgs.alpinelinux.org/package/edge/main/x86/perl)
|
|
|
|
### Perl Config file
|
|
- There is no top level *configuration file* available at this time
|
|
|
|
### Perl disable single line
|
|
- There is currently **No** way to disable rules inline of the file(s)
|
|
|
|
### Perl disable code block
|
|
- There is currently **No** way to disable rules inline of the file(s)
|
|
|
|
### Perl disable entire file
|
|
- There is currently **No** way to disable rules inline of the file(s)
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
## PHP
|
|
- [PHP](https://www.php.net/)
|
|
|
|
### PHP Config file
|
|
- There is no top level *configuration file* available at this time
|
|
|
|
### PHP disable single line
|
|
- There is currently **No** way to disable rules inline of the file(s)
|
|
|
|
### PHP disable code block
|
|
- There is currently **No** way to disable rules inline of the file(s)
|
|
|
|
### PHP disable entire file
|
|
- There is currently **No** way to disable rules inline of the file(s)
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
## XML
|
|
- [XML](http://xmlsoft.org/)
|
|
|
|
### LibXML Config file
|
|
- There is no top level *configuration file* available at this time
|
|
|
|
### LibXML disable single line
|
|
- There is currently **No** way to disable rules inline of the file(s)
|
|
|
|
### LibXML disable code block
|
|
- There is currently **No** way to disable rules inline of the file(s)
|
|
|
|
### LibXML disable entire file
|
|
- There is currently **No** way to disable rules inline of the file(s)
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
## Coffeescript
|
|
- [coffeelint](https://coffeelint.github.io/)
|
|
|
|
### coffeelint Config file
|
|
- `.github/linters/.coffee-lint.yml`
|
|
- You can pass multiple rules and overwrite default rules
|
|
- File should be located at: `.github/linters/.coffee.yml`
|
|
|
|
### coffeelint disable single line
|
|
```Coffeescript
|
|
# coffeelint: disable=max_line_length
|
|
foo = "some/huge/line/string/with/embed/#{values}.that/surpasses/the/max/column/width"
|
|
# coffeelint: enable=max_line_length
|
|
```
|
|
|
|
### coffeelint disable code block
|
|
```Coffeescript
|
|
# coffeelint: disable
|
|
foo = "some/huge/line/string/with/embed/#{values}.that/surpasses/the/max/column/width"
|
|
bar = "some/huge/line/string/with/embed/#{values}.that/surpasses/the/max/column/width"
|
|
baz = "some/huge/line/string/with/embed/#{values}.that/surpasses/the/max/column/width"
|
|
taz = "some/huge/line/string/with/embed/#{values}.that/surpasses/the/max/column/width"
|
|
# coffeelint: enable
|
|
```
|
|
|
|
### coffeelint disable entire file
|
|
- You can encapsulate the entire file with the *code block format* to disable an entire file from being parsed
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
## Javascript eslint
|
|
- [eslint](https://eslint.org/)
|
|
|
|
### Javascript eslint Config file
|
|
- `.github/linters/.eslintrc.yml`
|
|
- You can pass multiple rules and overwrite default rules
|
|
- File should be located at: `.github/linters/.eslintrc.yml`
|
|
|
|
### Javascript eslint disable single line
|
|
```javascript
|
|
var thing = new Thing(); // eslint-disable-line no-use-before-define
|
|
thing.sayHello();
|
|
|
|
function Thing() {
|
|
|
|
this.sayHello = function() { console.log("hello"); };
|
|
|
|
}
|
|
```
|
|
|
|
### Javascript eslint disable code block
|
|
```javascript
|
|
/*eslint-disable */
|
|
|
|
//suppress all warnings between comments
|
|
alert('foo')
|
|
|
|
/*eslint-enable */
|
|
```
|
|
### Javascript eslint disable entire file
|
|
- Place at the top of the file:
|
|
```javascript
|
|
/* eslint-disable */
|
|
```
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
## Javascript standard
|
|
- [standard js](https://standardjs.com/)
|
|
|
|
### Javascript standard Config file
|
|
- There is no top level *configuration file* available at this time
|
|
|
|
### Javascript standard disable single line
|
|
- There is currently **No** way to disable rules inline of the file(s)
|
|
|
|
### Javascript standard disable code block
|
|
- There is currently **No** way to disable rules inline of the file(s)
|
|
|
|
### Javascript standard disable entire file
|
|
- There is currently **No** way to disable rules inline of the file(s)
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
## Typescript eslint
|
|
- [eslint](https://eslint.org/)
|
|
|
|
### Typescript eslint Config file
|
|
- `.github/linters/.eslintrc.yml`
|
|
- You can pass multiple rules and overwrite default rules
|
|
- File should be located at: `.github/linters/.eslintrc.yml`
|
|
|
|
### Typescript eslint disable single line
|
|
```typescript
|
|
var thing = new Thing(); // eslint-disable-line no-use-before-define
|
|
thing.sayHello();
|
|
|
|
function Thing() {
|
|
|
|
this.sayHello = function() { console.log("hello"); };
|
|
|
|
}
|
|
```
|
|
|
|
### Typescript eslint disable code block
|
|
```typescript
|
|
/*eslint-disable */
|
|
|
|
//suppress all warnings between comments
|
|
alert('foo')
|
|
|
|
/*eslint-enable */
|
|
```
|
|
### Typescript eslint disable entire file
|
|
```typescript
|
|
/* eslint-disable */
|
|
```
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
## Typescript standard
|
|
- [standardjs](https://standardjs.com/)
|
|
|
|
### Typescript standard Config file
|
|
- There is no top level *configuration file* available at this time
|
|
|
|
### Typescript standard disable single line
|
|
- There is currently **No** way to disable rules inline of the file(s)
|
|
|
|
### Typescript standard disable code block
|
|
- There is currently **No** way to disable rules inline of the file(s)
|
|
|
|
### Typescript standard disable entire file
|
|
- There is currently **No** way to disable rules inline of the file(s)
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
## Golang
|
|
- [golangci-lint](https://github.com/golangci/golangci-lint)
|
|
|
|
### golangci-lint standard Config file
|
|
- `.github/linters/.golangci.yml`
|
|
- You can pass multiple rules and overwrite default rules
|
|
- File should be located at: `.github/linters/.golangci.yml`
|
|
|
|
### golangci-lint disable single line
|
|
- There is currently **No** way to disable rules inline of the file(s)
|
|
|
|
### golangci-lint disable code block
|
|
- There is currently **No** way to disable rules inline of the file(s)
|
|
|
|
### golangci-lint disable entire file
|
|
- There is currently **No** way to disable rules inline of the file(s)
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
## Dockerfile
|
|
- [dockerfilelint](https://github.com/replicatedhq/dockerfilelint.git)
|
|
|
|
### Dockerfilelint standard Config file
|
|
- `.github/linters/.dockerfilelintrc`
|
|
- You can pass multiple rules and overwrite default rules
|
|
- File should be located at: `.github/linters/.dockerfilelintrc`
|
|
|
|
### Dockerfilelint disable single line
|
|
- There is currently **No** way to disable rules inline of the file(s)
|
|
|
|
### Dockerfilelint disable code block
|
|
- There is currently **No** way to disable rules inline of the file(s)
|
|
|
|
### Dockerfilelint disable entire file
|
|
- There is currently **No** way to disable rules inline of the file(s)
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
## Terraform
|
|
- [tflint](https://github.com/terraform-linters/tflint)
|
|
|
|
### tflint standard Config file
|
|
- `.github/linters/.tflint.hcl`
|
|
- You can pass multiple rules and overwrite default rules
|
|
- File should be located at: `.github/linters/.tflint.hcl`
|
|
|
|
### tflint disable single line
|
|
- There is currently **No** way to disable rules inline of the file(s)
|
|
|
|
### tflint disable code block
|
|
- There is currently **No** way to disable rules inline of the file(s)
|
|
|
|
### tflint disable entire file
|
|
- There is currently **No** way to disable rules inline of the file(s)
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
## CSS
|
|
- [stylelint](https://stylelint.io/)
|
|
|
|
### stylelint standard Config file
|
|
- `.github/linters/.stylelintrc.json`
|
|
|
|
### stylelint disable single line
|
|
```css
|
|
#id {
|
|
/* stylelint-disable-next-line declaration-no-important */
|
|
color: pink !important;
|
|
}
|
|
```
|
|
|
|
### stylelint disable code block
|
|
```css
|
|
/* stylelint-disable */
|
|
a {}
|
|
/* stylelint-enable */
|
|
```
|
|
|
|
### stylelint disable entire file
|
|
- You can disable entire files with the `ignoreFiles` property in `.stylelintrc.json`
|
|
```json
|
|
{
|
|
"ignoreFiles": [
|
|
"styles/ignored/wildcards/*.css",
|
|
"styles/ignored/specific-file.css"
|
|
]
|
|
}
|
|
```
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
## ENV
|
|
- [dotenv-linter](https://github.com/dotenv-linter/dotenv-linter)
|
|
|
|
### dotenv-linter Config file
|
|
- There is no top level *configuration file* available at this time
|
|
|
|
### dotenv-linter disable single line
|
|
```env
|
|
# Comment line will be ignored
|
|
```
|
|
|
|
### dotenv-linter disable code block
|
|
- There is currently **No** way to disable rules inline of the file(s)
|
|
|
|
### dotenv-linter disable entire file
|
|
- There is currently **No** way to disable rules inline of the file(s)
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
## Kotlin
|
|
- [ktlint](https://github.com/pinterest/ktlint)
|
|
|
|
### ktlint Config file
|
|
- There is no top level *configuration file* available at this time
|
|
|
|
### ktlint disable single line
|
|
```kotlin
|
|
import package.* // ktlint-disable no-wildcard-imports
|
|
```
|
|
|
|
### ktlint disable code block
|
|
```kotlin
|
|
/* ktlint-disable no-wildcard-imports */
|
|
import package.a.*
|
|
import package.b.*
|
|
/* ktlint-enable no-wildcard-imports */
|
|
```
|
|
|
|
### ktlint disable entire file
|
|
- There is currently **No** way to disable rules inline of the file(s)
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
## OpenAPI
|
|
- [spectral](https://github.com/stoplightio/spectral)
|
|
|
|
### OpenAPI Config file
|
|
- `.github/linters/.openapirc.yml`
|
|
- You can add, extend, and disable rules
|
|
- Documentation at [Spectral Custom Rulesets](https://stoplight.io/p/docs/gh/stoplightio/spectral/docs/guides/4-custom-rulesets.md)
|
|
- File should be located at: `.github/linters/.openapirc.yml`
|
|
|
|
### OpenAPI disable single line
|
|
- There is currently **No** way to disable rules inline of the file(s)
|
|
|
|
### OpenAPI disable code block
|
|
- There is currently **No** way to disable rules inline of the file(s)
|
|
|
|
### OpenAPI disable entire file
|
|
- There is currently **No** way to disable rules inline of the file(s)
|
|
- However, you can make [rule exceptions](https://stoplight.io/p/docs/gh/stoplightio/spectral/docs/guides/6-exceptions.md?srn=gh/stoplightio/spectral/docs/guides/6-exceptions.md) in the config for individual file(s).
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
## Protocol Buffers
|
|
|
|
- [protolint](https://github.com/yoheimuta/protolint)
|
|
|
|
### protolint Config file
|
|
|
|
- `.github/linters/.protolintrc.yml`
|
|
- You can add, extend, and disable rules
|
|
- Documentation at [Rules](https://github.com/yoheimuta/protolint#rules) and [Configuring](https://github.com/yoheimuta/protolint#configuring)
|
|
|
|
### protolint disable single line
|
|
|
|
```protobuf
|
|
enum Foo {
|
|
// protolint:disable:next ENUM_FIELD_NAMES_UPPER_SNAKE_CASE
|
|
firstValue = 0;
|
|
second_value = 1; // protolint:disable:this ENUM_FIELD_NAMES_UPPER_SNAKE_CASE
|
|
THIRD_VALUE = 2;
|
|
}
|
|
```
|
|
|
|
### protolint disable code block
|
|
|
|
```protobuf
|
|
// protolint:disable ENUM_FIELD_NAMES_UPPER_SNAKE_CASE
|
|
enum Foo {
|
|
firstValue = 0;
|
|
second_value = 1;
|
|
THIRD_VALUE = 2;
|
|
}
|
|
// protolint:enable ENUM_FIELD_NAMES_UPPER_SNAKE_CASE
|
|
```
|
|
|
|
### protolint disable entire file
|
|
|
|
- You can disable entire files with the `lint.files.exclude` property in `.protolintrc.yml`
|
|
|
|
```yaml
|
|
# Lint directives.
|
|
lint:
|
|
# Linter files to walk.
|
|
files:
|
|
# The specific files to exclude.
|
|
exclude:
|
|
- path/to/file
|
|
```
|
|
|
|
## Clojure
|
|
- [clj-kondo](https://github.com/borkdude/clj-kondo)
|
|
- Since clj-kondo approaches static analysis in a very Clojure way, it is advised to read the [configuration docs](https://github.com/borkdude/clj-kondo/blob/master/doc/config.md)
|
|
|
|
### clj-kondo standard Config file
|
|
- `.github/linters/.clj-kondo/config.edn`
|
|
|
|
### clj-kondo disable single line
|
|
- There is currently **No** way to disable rules in a single line
|
|
|
|
### clj-kondo disable code block
|
|
- There is currently **No** way to disable rules in a code block
|
|
|
|
### clj-kondo disable entire file
|
|
```clojure
|
|
{:output {:exclude-files ["path/to/file"]}}
|
|
```
|