lint/docs/disabling-linters.md

505 lines
14 KiB
Markdown
Raw Normal View History

2020-04-22 11:22:51 -04:00
# 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 linter rules.
Below is examples and documentation for each language and the various methods to disable.
2020-04-23 10:57:18 -04:00
## Table of contents
- [Ruby](#ruby)
- [Shell](#shell)
- [Ansible](#ansible)
- [YAML](#yaml)
- [Python](#python3)
- [JSON](#json)
- [Markdown](#markdown)
- [Perl](#perl)
- [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)
<!-- toc -->
2020-04-23 11:38:33 -04:00
2020-04-22 11:22:51 -04:00
--------------------------------------------------------------------------------
## Ruby
2020-04-22 12:58:51 -04:00
- [Rubocop](https://github.com/rubocop-hq/rubocop)
2020-04-22 11:22:51 -04:00
### Rubocop Config file
2020-04-23 08:55:25 -04:00
- `.github/linters/.ruby-lint.yml`
2020-04-22 12:58:51 -04:00
- You can pass multiple rules and overwrite default rules
- File should be located at: `.github/linters/.ruby-lint.yml`
2020-04-23 08:50:07 -04:00
- **Note:** We use the Default **GitHub** Rule set from [Rubocop-GitHub](https://github.com/github/rubocop-github)
2020-04-22 12:58:51 -04:00
2020-04-22 11:22:51 -04:00
### Rubocop disable single line
2020-04-22 12:58:51 -04:00
```ruby
method(argument) # rubocop:disable SomeRule, SomeOtherRule
```
2020-04-22 11:22:51 -04:00
### Rubocop disable code block
2020-04-22 12:58:51 -04:00
```ruby
# rubocop:disable
This is a long line
var="this is some other stuff"
# rubocop:enable
```
2020-04-22 11:22:51 -04:00
2020-04-22 12:58:51 -04:00
### Rubocop disable entire file
2020-04-23 10:01:15 -04:00
If you need to ignore an entire file, you can update the `.github/linters/.ruby-lint.yml` to ignore certain files and locations
2020-04-23 08:50:07 -04:00
```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$/
```
2020-04-22 11:22:51 -04:00
--------------------------------------------------------------------------------
## Shell
2020-04-23 08:50:07 -04:00
- [Shellcheck](https://github.com/koalaman/shellcheck)
2020-04-22 11:22:51 -04:00
### Shellcheck Config file
2020-04-23 08:50:07 -04:00
- There is no top level *configuration file* available at this time
2020-04-22 11:22:51 -04:00
### Shellcheck disable single line
2020-04-23 08:50:07 -04:00
```bash
echo "Terrible stuff" # shellcheck disable=SC2059,SC2086
```
2020-04-22 11:22:51 -04:00
### Shellcheck disable code block
2020-04-23 08:50:07 -04:00
```bash
# shellcheck disable=SC2059,SC2086
echo "some hot garbage"
echo "More garbage code"
```
2020-04-22 11:22:51 -04:00
### Shellcheck disable entire file
2020-04-23 08:50:07 -04:00
- **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()
```
2020-04-22 11:22:51 -04:00
--------------------------------------------------------------------------------
## Ansible
2020-04-23 10:39:20 -04:00
- [ansible-lint](https://github.com/ansible/ansible-lint)
2020-04-22 11:22:51 -04:00
### Ansible-lint Config file
2020-04-23 10:39:20 -04:00
- `.github/linters/.ansible-lint.yml`
- You can pass multiple rules and overwrite default rules
- File should be located at: `.github/linters/.ansible-lint.yml`
2020-04-22 11:22:51 -04:00
### Ansible-lint disable single line
2020-04-23 10:39:20 -04:00
```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
```
2020-04-22 11:22:51 -04:00
### Ansible-lint disable code block
2020-04-23 10:39:20 -04:00
```yml
- name: this would typically fire GitHasVersionRule 401
git: src=/path/to/git/repo dest=checkout
tags:
- skip_ansible_lint
```
2020-04-22 11:22:51 -04:00
2020-04-23 10:39:20 -04:00
### 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
```
2020-04-22 11:22:51 -04:00
--------------------------------------------------------------------------------
## YAML
2020-04-23 08:55:25 -04:00
- [YamlLint](https://github.com/adrienverge/yamllint)
2020-04-22 11:22:51 -04:00
### Yamllint Config file
2020-04-23 08:55:25 -04:00
- `.github/linters/.yaml-lint.yml`
- You can pass multiple rules and overwrite default rules
- File should be located at: `.github/linters/.yaml-lint.yml`
2020-04-22 11:22:51 -04:00
### Yamllint disable single line
2020-04-23 08:55:25 -04:00
```yml
This line is waaaaaaaaaay too long # yamllint disable-line
```
2020-04-22 11:22:51 -04:00
### Yamllint disable code block
2020-04-23 08:55:25 -04:00
```yml
# yamllint disable rule:colons
- Lorem : ipsum
dolor : sit amet,
consectetur : adipiscing elit
# yamllint enable
```
2020-04-22 11:22:51 -04:00
### Yamllint disable entire file
2020-04-23 10:01:15 -04:00
If you need to ignore an entire file, you can update the `.github/linters/.yaml-lint.yml` to ignore certain files and locations
2020-04-23 08:55:25 -04:00
```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/*
```
2020-04-22 11:22:51 -04:00
--------------------------------------------------------------------------------
## Python3
2020-04-23 10:39:20 -04:00
- [pylint](https://www.pylint.org/)
2020-04-22 11:22:51 -04:00
### Pylint Config file
2020-04-23 10:39:20 -04:00
- `.github/linters/.python-lint`
- You can pass multiple rules and overwrite default rules
- File should be located at: `.github/linters/.python-lint`
2020-04-22 11:22:51 -04:00
### Pylint disable single line
2020-04-23 10:39:20 -04:00
```python
global VAR # pylint: disable=global-statement
```
2020-04-22 11:22:51 -04:00
### Pylint disable code block
2020-04-23 10:39:20 -04:00
```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.bla) # pylint: disable=no-member
# error
print(self.blop)
```
2020-04-22 11:22:51 -04:00
### Pylint disable entire file
2020-04-23 10:39:20 -04:00
```python
#!/bin/python3
# pylint: skip-file
var = "terrible code down here..."
```
2020-04-22 11:22:51 -04:00
--------------------------------------------------------------------------------
## JSON
2020-04-23 10:19:21 -04:00
- [jsonlint](https://github.com/zaach/jsonlint)
2020-04-22 11:22:51 -04:00
### JsonLint Config file
2020-04-23 10:19:21 -04:00
- There is no top level *configuration file* available at this time
2020-04-22 11:22:51 -04:00
### JsonLint disable single line
2020-04-23 10:19:21 -04:00
- There is currently **No** way to disable rules inline of the file(s)
2020-04-22 11:22:51 -04:00
### JsonLint disable code block
2020-04-23 10:19:21 -04:00
- There is currently **No** way to disable rules inline of the file(s)
2020-04-22 11:22:51 -04:00
### JsonLint disable entire file
2020-04-23 10:19:21 -04:00
- There is currently **No** way to disable rules inline of the file(s)
2020-04-22 11:22:51 -04:00
--------------------------------------------------------------------------------
## Markdown
- [Markdownlint-cli](https://github.com/igorshubovych/markdownlint-cli#readme)
- [Markdownlint rules](https://awesomeopensource.com/project/DavidAnson/markdownlint)
### Markdownlint Config file
2020-04-23 10:08:38 -04:00
- `.github/linters/.markdown-lint.yml`
2020-04-22 11:22:51 -04:00
- 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
2020-04-23 10:41:00 -04:00
- [perl](https://pkgs.alpinelinux.org/package/edge/main/x86/perl)
2020-04-22 11:22:51 -04:00
### Perl Config file
2020-04-23 10:41:00 -04:00
- There is no top level *configuration file* available at this time
2020-04-22 11:22:51 -04:00
### Perl disable single line
2020-04-23 10:41:00 -04:00
- There is currently **No** way to disable rules inline of the file(s)
2020-04-22 11:22:51 -04:00
### Perl disable code block
2020-04-23 10:41:00 -04:00
- There is currently **No** way to disable rules inline of the file(s)
2020-04-22 11:22:51 -04:00
### Perl disable entire file
2020-04-23 10:41:00 -04:00
- There is currently **No** way to disable rules inline of the file(s)
2020-04-22 11:22:51 -04:00
--------------------------------------------------------------------------------
## XML
2020-04-23 10:03:56 -04:00
- [XML](http://xmlsoft.org/)
2020-04-22 11:22:51 -04:00
### LibXML Config file
2020-04-23 10:03:56 -04:00
- There is no top level *configuration file* available at this time
2020-04-22 11:22:51 -04:00
### LibXML disable single line
2020-04-23 10:03:56 -04:00
- There is currently **No** way to disable rules inline of the file(s)
2020-04-22 11:22:51 -04:00
### LibXML disable code block
2020-04-23 10:03:56 -04:00
- There is currently **No** way to disable rules inline of the file(s)
2020-04-22 11:22:51 -04:00
### LibXML disable entire file
2020-04-23 10:03:56 -04:00
- There is currently **No** way to disable rules inline of the file(s)
2020-04-22 11:22:51 -04:00
--------------------------------------------------------------------------------
## Coffeescript
2020-04-23 10:08:38 -04:00
- [coffeelint](http://www.coffeelint.org/)
2020-04-22 11:22:51 -04:00
### coffeelint Config file
2020-04-23 10:08:38 -04:00
- `.github/linters/.coffee-lint.yml`
- You can pass multiple rules and overwrite default rules
- File should be located at: `.github/linters/.coffee.yml`
2020-04-22 11:22:51 -04:00
### coffeelint disable single line
2020-04-23 10:08:38 -04:00
```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
```
2020-04-22 11:22:51 -04:00
### coffeelint disable code block
2020-04-23 10:08:38 -04:00
```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
```
2020-04-22 11:22:51 -04:00
### coffeelint disable entire file
2020-04-23 10:08:38 -04:00
- You can encapsulate the entire file with the *code block format* to disable an entire file from being parsed
2020-04-22 11:22:51 -04:00
--------------------------------------------------------------------------------
## Javascript (eslint)
2020-04-23 11:38:33 -04:00
- [eslint](https://eslint.org/)
2020-04-22 11:22:51 -04:00
### Javascript eslint Config file
2020-04-23 11:38:33 -04:00
- `.github/linters/.eslintrc.yml`
- You can pass multiple rules and overwrite default rules
- File should be located at: `.github/linters/.eslintrc.yml`
2020-04-22 11:22:51 -04:00
### Javascript eslint disable single line
2020-04-23 11:38:33 -04:00
```javascript
var thing = new Thing(); // eslint-disable-line no-use-before-define
thing.sayHello();
function Thing() {
this.sayHello = function() { console.log("hello"); };
}
```
2020-04-22 11:22:51 -04:00
### Javascript eslint disable code block
2020-04-23 11:38:33 -04:00
```javascript
/*eslint-disable */
//suppress all warnings between comments
alert('foo')
/*eslint-enable */
```
2020-04-22 11:22:51 -04:00
### Javascript eslint disable entire file
2020-04-23 11:38:33 -04:00
- Place at the top of the file:
```javascript
/* eslint-disable */
```
2020-04-22 11:22:51 -04:00
--------------------------------------------------------------------------------
## Javascript (standard)
2020-04-23 11:38:33 -04:00
- [standard js](https://standardjs.com/)
2020-04-22 11:22:51 -04:00
### Javascript standard Config file
2020-04-23 11:38:33 -04:00
- `.github/linters/.eslintrc.yml`
- You can pass multiple rules and overwrite default rules
- File should be located at: `.github/linters/.eslintrc.yml`
2020-04-22 11:22:51 -04:00
### Javascript standard disable single line
### Javascript standard disable code block
### Javascript standard disable entire file
--------------------------------------------------------------------------------
## Typescript (eslint)
2020-04-23 11:38:33 -04:00
- [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`
2020-04-22 11:22:51 -04:00
### Typescript eslint disable single line
2020-04-23 11:38:33 -04:00
```typescript
var thing = new Thing(); // eslint-disable-line no-use-before-define
thing.sayHello();
function Thing() {
this.sayHello = function() { console.log("hello"); };
}
```
2020-04-22 11:22:51 -04:00
### Typescript eslint disable code block
2020-04-23 11:38:33 -04:00
```typescript
/*eslint-disable */
//suppress all warnings between comments
alert('foo')
/*eslint-enable */
```
2020-04-22 11:22:51 -04:00
### Typescript eslint disable entire file
2020-04-23 11:38:33 -04:00
```typescript
/* eslint-disable */
```
2020-04-22 11:22:51 -04:00
--------------------------------------------------------------------------------
## Typescript (standard)
### Typescript standard Config file
2020-04-23 11:38:33 -04:00
- `.github/linters/.eslintrc.yml`
- You can pass multiple rules and overwrite default rules
- File should be located at: `.github/linters/.eslintrc.yml`
2020-04-22 11:22:51 -04:00
### Typescript standard disable single line
### Typescript standard disable code block
### Typescript standard disable entire file
--------------------------------------------------------------------------------
## Golang
2020-04-23 10:11:42 -04:00
- [golangci-lint](https://github.com/golangci/golangci-lint)
2020-04-22 11:22:51 -04:00
### golangci-lint standard Config file
2020-04-23 10:11:42 -04:00
- `.github/linters/.golangci.yml`
- You can pass multiple rules and overwrite default rules
- File should be located at: `.github/linters/.golangci.yml`
2020-04-22 11:22:51 -04:00
### golangci-lint disable single line
2020-04-23 10:11:42 -04:00
- There is currently **No** way to disable rules inline of the file(s)
2020-04-22 11:22:51 -04:00
### golangci-lint disable code block
2020-04-23 10:11:42 -04:00
- There is currently **No** way to disable rules inline of the file(s)
2020-04-22 11:22:51 -04:00
### golangci-lint disable entire file
2020-04-23 10:11:42 -04:00
- There is currently **No** way to disable rules inline of the file(s)
2020-04-22 11:22:51 -04:00
--------------------------------------------------------------------------------
2020-04-23 10:16:33 -04:00
2020-04-22 11:22:51 -04:00
## Dockerfile
2020-04-23 10:01:15 -04:00
-[dockerfilelint](https://github.com/replicatedhq/dockerfilelint.git)
2020-04-22 11:22:51 -04:00
### Dockerfilelint standard Config file
2020-04-23 10:01:15 -04:00
- `.github/linters/.dockerfilelintrc`
- You can pass multiple rules and overwrite default rules
- File should be located at: `.github/linters/.dockerfilelintrc`
2020-04-22 11:22:51 -04:00
### Dockerfilelint disable single line
2020-04-23 10:01:15 -04:00
- There is currently **No** way to disable rules inline of the file(s)
2020-04-22 11:22:51 -04:00
### Dockerfilelint disable code block
2020-04-23 10:01:15 -04:00
- There is currently **No** way to disable rules inline of the file(s)
2020-04-22 11:22:51 -04:00
### Dockerfilelint disable entire file
2020-04-23 10:01:15 -04:00
- There is currently **No** way to disable rules inline of the file(s)
2020-04-22 11:22:51 -04:00
--------------------------------------------------------------------------------
## Terraform
2020-04-23 10:16:33 -04:00
- [tflint](https://github.com/terraform-linters/tflint)
2020-04-22 11:22:51 -04:00
### tflint standard Config file
2020-04-23 10:16:33 -04:00
- `.github/linters/.tflint.hcl`
- You can pass multiple rules and overwrite default rules
- File should be located at: `.github/linters/.tflint.hcl`
2020-04-22 11:22:51 -04:00
### tflint disable single line
2020-04-23 10:16:33 -04:00
- There is currently **No** way to disable rules inline of the file(s)
2020-04-22 11:22:51 -04:00
### tflint disable code block
2020-04-23 10:16:33 -04:00
- There is currently **No** way to disable rules inline of the file(s)
2020-04-22 11:22:51 -04:00
### tflint disable entire file
2020-04-23 10:16:33 -04:00
- There is currently **No** way to disable rules inline of the file(s)
2020-04-22 11:22:51 -04:00
--------------------------------------------------------------------------------