- Shows linting errors on GitHub commits and PRs
- Allows auto-fixing issues
- Supports many linters and formatters
Note: The behavior of actions like this one is currently limited in the context of forks. See Limitations.
- CSS:
- Go:
- JavaScript:
- PHP:
- Python:
- Ruby:
- Swift:
- swift-format (official)
- SwiftFormat (by Nick Lockwood)
- SwiftLint
Create a new GitHub Actions workflow in your project, e.g. at .github/workflows/lint.yml. The content of the file should be in the following format:
name: Lint
on: push
jobs:
run-linters:
name: Run linters
runs-on: ubuntu-latest
steps:
- name: Check out Git repository
uses: actions/checkout@v2
# Install your linters here
- name: Run linters
uses: wearerequired/lint-action@v1
with:
github_token: ${{ secrets.github_token }}
# Enable your linters hereAll linters are disabled by default. To enable a linter, simply set the option with its name to true, e.g. eslint: true.
The action doesn't install the linters for you; you are responsible for installing them in your CI environment.
name: Lint
on: push
jobs:
run-linters:
name: Run linters
runs-on: ubuntu-latest
steps:
- name: Check out Git repository
uses: actions/checkout@v2
- name: Set up Node.js
uses: actions/setup-node@v1
with:
node-version: 12
# ESLint and Prettier must be in `package.json`
- name: Install Node.js dependencies
run: npm install
- name: Run linters
uses: wearerequired/lint-action@v1
with:
github_token: ${{ secrets.github_token }}
# Enable linters
eslint: true
prettier: truename: Lint
on: push
jobs:
run-linters:
name: Run linters
runs-on: ubuntu-latest
steps:
- name: Check out Git repository
uses: actions/checkout@v2
- name: Set up PHP
uses: shivammathur/setup-php@v2
with:
php-version: "7.4"
coverage: none
tools: phpcs
- name: Run linters
uses: wearerequired/lint-action@v1
with:
github_token: ${{ secrets.github_token }}
# Enable linters
php_codesniffer: true
# Optional: Ignore warnings
php_codesniffer_args: "-n"If you prefer to use Composer you can also use this:
name: Lint
on: push
jobs:
run-linters:
name: Run linters
runs-on: ubuntu-latest
steps:
- name: Check out Git repository
uses: actions/checkout@v2
- name: Set up PHP
uses: shivammathur/setup-php@v2
with:
php-version: "7.4"
coverage: none
tools: composer
- name: Install PHP dependencies
run: |
composer install --prefer-dist --no-suggest --no-progress --no-ansi --no-interaction
echo "::add-path::vendor/bin"
- name: Run linters
uses: wearerequired/lint-action@v1
with:
github_token: ${{ secrets.github_token }}
# Enable linters
php_codesniffer: truename: Lint
on: push
jobs:
run-linters:
name: Run linters
runs-on: ubuntu-latest
steps:
- name: Check out Git repository
uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v1
with:
python-version: 3.8
- name: Install Python dependencies
run: pip install black flake8
- name: Run linters
uses: wearerequired/lint-action@v1
with:
github_token: ${{ secrets.github_token }}
# Enable linters
black: true
flake8: true[linter] can be one of black, eslint, flake8, gofmt, golint, mypy, php_codesniffer, prettier, rubocop, stylelint, swift_format_official, swift_format_lockwood, swiftlint and xo:
[linter]: Enables the linter in your repository. Default:false[linter]_args: Additional arguments to pass to the linter. Example:eslint_args: "--max-warnings 0"if ESLint checks should fail even if there are no errors and only warnings. Default:""[linter]_dir: Directory where the linting command should be run. Example:eslint_dir: server/if ESLint is installed in theserversubdirectory. Default: Repository root[linter]_extensions: Extensions of files to check with the linter. Example:eslint_extensions: js,tsto lint JavaScript and TypeScript files with ESLint. Default: Varies by linter, seeaction.yml[linter]_command_prefix: Command prefix to be run before the linter command. Default:"".
-
auto_fix: Whether linters should try to fix code style issues automatically. If some issues can be fixed, the action will commit and push the changes to the corresponding branch. Default:false -
git_name: Username for auto-fix commits. Default:"Lint Action" -
git_email: Email address for auto-fix commits. Default:"[email protected]" -
commit_message: Template for auto-fix commit messages. The${linter}variable can be used to insert the name of the linter. Default:"Fix code style issues with ${linter}" -
check_name: Template for the name of the check run. Use this to ensure unique names when the action is used more than once in a workflow. The${linter}and${dir}variables can be used to insert the name and directory of the linter. Default:"${linter}"
Some options are not be available for specific linters:
| Linter | auto-fixing | extensions |
|---|---|---|
| black | ✅ | ✅ |
| eslint | ✅ | ✅ |
| flake8 | ❌ | ✅ |
| gofmt | ✅ | ❌ (go) |
| golint | ❌ | ❌ (go) |
| mypy | ✅ | ✅ |
| php_codesniffer | ❌ | ✅ |
| prettier | ✅ | ✅ |
| rubocop | ✅ | ❌ (rb) |
| stylelint | ✅ | ✅ |
| swift_format_official | ✅ | ✅ |
| swift_format_lockwood | ✅ | ❌ (swift) |
| swiftlint | ✅ | ❌ (swift) |
| xo | ✅ | ✅ |
There are currently some limitations as to how this action (or any other action) can be used in the context of pull_request events from forks:
- The action doesn't have permission to push auto-fix changes to the fork. This is because the
pull_requestevent runs on the upstream repo, where thegithub_tokenis lacking permissions for the fork. Source - The action doesn't have permission to create annotations for commits on forks and can therefore not display linting errors. Source 1, source 2
For details and comments, please refer to #13.
- Electron Builder Action – GitHub Action for building and releasing Electron apps
- Maven Publish Action – GitHub Action for automatically publishing Maven packages


