lint/docs/disabling-linters.md
2020-06-26 21:52:38 +02:00

19 KiB

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

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

RuboCop disable single line

method(argument) # rubocop:disable SomeRule, SomeOtherRule

RuboCop disable code block

# 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

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 Config file

  • There is no top level configuration file available at this time

Shellcheck disable single line

echo "Terrible stuff" # shellcheck disable=SC2059,SC2086

Shellcheck disable code block

# 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
#!/bin/sh
# shellcheck disable=SC2059,SC1084

echo "stuff"
moreThings()

Ansible

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

- 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

- name: this would typically fire GitHasVersionRule 401
  git: src=/path/to/git/repo dest=checkout
  tags:
  - skip_ansible_lint

Ansible-lint disable entire file

- name: this would typically fire GitHasVersionRule 401
  git: src=/path/to/git/repo dest=checkout
  tags:
  - skip_ansible_lint

YAML

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

This line is waaaaaaaaaay too long  # yamllint disable-line

Yamllint disable code block

# 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

# 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 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

global VAR # pylint: disable=global-statement

Pylint disable code block

"""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

#!/bin/python3
# pylint: skip-file

var = "terrible code down here..."

AWS CloudFormation templates

cfn-lint Config file

  • .github/linters/.cfnlintrc.yml
  • You can pass multiple rules and overwrite default rules
  • File should be located at: .github/linters/.cfnlintrc.yml

cfn-lint disable single line

  • There is currently No way to disable rules inline of the file(s)

cfn-lint disable code block

You can disable both template or resource via metadata:

Resources:
  myInstance:
    Type: AWS::EC2::Instance
    Metadata:
      cfn-lint:
        config:
          ignore_checks:
          - E3030
    Properties:
      InstanceType: nt.x4superlarge
      ImageId: ami-abc1234

cfn-lint disable entire file

If you need to ignore an entire file, you can update the .github/linters/.cfnlintrc.yml to ignore certain files and locations

ignore_templates:
- codebuild.yaml

JSON

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 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

## 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

## 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 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 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

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 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

# 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

# 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

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

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

/*eslint-disable */

//suppress all warnings between comments
alert('foo')

/*eslint-enable */

Javascript eslint disable entire file

  • Place at the top of the file:
/* eslint-disable */

Javascript standard

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

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

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

/*eslint-disable */

//suppress all warnings between comments
alert('foo')

/*eslint-enable */

Typescript eslint disable entire file

/* eslint-disable */

Typescript standard

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 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 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 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 standard Config file

  • .github/linters/.stylelintrc.json

stylelint disable single line

#id {
  /* stylelint-disable-next-line declaration-no-important */
  color: pink !important;
}

stylelint disable code block

/* stylelint-disable */
a {}
/* stylelint-enable */

stylelint disable entire file

  • You can disable entire files with the ignoreFiles property in .stylelintrc.json
{
  "ignoreFiles": [
    "styles/ignored/wildcards/*.css",
    "styles/ignored/specific-file.css"
   ]
}

ENV

dotenv-linter Config file

  • There is no top level configuration file available at this time

dotenv-linter disable single line

# 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 Config file

  • There is no top level configuration file available at this time

ktlint disable single line

import package.* // ktlint-disable no-wildcard-imports

ktlint disable code block

/* 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

OpenAPI Config file

  • .github/linters/.openapirc.yml
  • You can add, extend, and disable rules
  • Documentation at Spectral Custom Rulesets
  • 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 in the config for individual file(s).

Clojure

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

{:output {:exclude-files ["path/to/file"]}}