Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/qnighy/clippy-reviewdog-filter
A filter for integrating Clippy with Reviewdog
https://github.com/qnighy/clippy-reviewdog-filter
clippy code-review codereview linter reviewdog rust
Last synced: about 2 months ago
JSON representation
A filter for integrating Clippy with Reviewdog
- Host: GitHub
- URL: https://github.com/qnighy/clippy-reviewdog-filter
- Owner: qnighy
- Created: 2018-10-14T05:45:31.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2024-05-05T13:17:44.000Z (8 months ago)
- Last Synced: 2024-10-06T02:42:32.162Z (3 months ago)
- Topics: clippy, code-review, codereview, linter, reviewdog, rust
- Language: Rust
- Homepage:
- Size: 313 KB
- Stars: 3
- Watchers: 3
- Forks: 3
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## A filter for integrating [Clippy](https://github.com/rust-lang/rust-clippy) with [Reviewdog](https://github.com/haya14busa/reviewdog)
![screenshot](images/screenshot.png)
### What's this?
[Reviewdog](https://github.com/haya14busa/reviewdog) is an automated review tool. It extracts relevant parts for the patch from an output of an external linter, and reports the result in several formats, including GitHub Checks and GitHub comments.
`clippy-reviewdog-filter` is a simple filter for feeding Reviewdog an output of Clippy, the official linter for Rust.
### How to try this locally
No more interesting than simply running Clippy if you run this locally, but if you want to try this out before putting this into a CI:
Install reviewdog: get [the binary release](https://github.com/haya14busa/reviewdog/releases) or
```
$ go get -u github.com/haya14busa/reviewdog/cmd/reviewdog
```Install clippy-reviewdog-filter: get [the binary release](https://github.com/qnighy/clippy-reviewdog-filter/releases) or
```
$ cargo install --git https://github.com/qnighy/clippy-reviewdog-filter.git
``````
cargo clippy --message-format json 2>&1 | clippy-reviewdog-filter | reviewdog -f=checkstyle -diff="git diff master"
```### Configuration example
Configuration taken from [a sample repository](https://github.com/qnighy/reviewdog-test):
`travis.yml`:
```yaml
language: rust
env:
global:
# See the reviewdog manual for how to obtain the token.
# Beware that, encrypted environment variables cannnot be seen in
# builds for pull requests from fork repositories.
- REVIEWDOG_GITHUB_API_TOKEN=0123456789abcdef0123456789abcdef0123456789abcdef
install:
- mkdir -p ~/bin
- export PATH="$HOME/bin/:$PATH"
- curl -fSL https://github.com/haya14busa/reviewdog/releases/download/0.9.11/reviewdog_linux_amd64 -o ~/bin/reviewdog
- curl -fSL https://github.com/qnighy/clippy-reviewdog-filter/releases/download/v0.1.1/clippy-reviewdog-filter-x86_64-unknown-linux-musl -o ~/bin/clippy-reviewdog-filter
- chmod +x ~/bin/reviewdog ~/bin/clippy-reviewdog-filter
- rustup component add clippy-preview
script:
- reviewdog -reporter=github-pr-review
````.reviewdog.yml`:
```yaml
runner:
clippy:
cmd: 'find . -type f -name \*.rs -exec touch {} \;; cargo clippy --message-format json 2>&1 | clippy-reviewdog-filter'
format: checkstyle
```### Note on security
If you want to use the `github-pr-review` reporter in `.travis.yml`, you're essentially going to publish your API Token to the submitters of pull requests, as they're free to run modified versions of `.travis.yml` on your Travis CI repo.
For better security, you may want to use the `github-pr-check` reporter instead or run `reviewdog -reporter=github-pr-review` in a more isolated environment, like in a dedicated GitHub Webhook server.
Of course, there's no problem with using `github-pr-review` in a private repository with no forks. In that case, you can just encrypt the github token using the `travis encrypt` command.