mirror of
https://github.com/rust-lang/rust-clippy
synced 2024-11-10 07:04:18 +00:00
CONTRIBUTING
This commit is contained in:
parent
228f06a960
commit
678a79d45a
1 changed files with 51 additions and 0 deletions
51
CONTRIBUTING.md
Normal file
51
CONTRIBUTING.md
Normal file
|
@ -0,0 +1,51 @@
|
|||
# Contributing to rust-clippy
|
||||
|
||||
Hello fellow Rustacean! Great to see your interest in compiler internals and lints!
|
||||
|
||||
## Getting started
|
||||
|
||||
All issues on Clippy are mentored, if you want help with a bug just ask @Manishearth or @llogiq.
|
||||
|
||||
Some issues are easier than others. The [E-easy](https://github.com/Manishearth/rust-clippy/labels/E-easy)
|
||||
label can be used to find the easy issues. If you want to work on an issue, please leave a comment
|
||||
so that we can assign it to you!
|
||||
|
||||
Issues marked [T-AST](https://github.com/Manishearth/rust-clippy/labels/T-AST) involve simple
|
||||
matching of the syntax tree structure, and are generally easier than
|
||||
[T-middle](https://github.com/Manishearth/rust-clippy/labels/T-middle) issues, which involve types
|
||||
and resolved paths.
|
||||
|
||||
Issues marked [E-medium](https://github.com/Manishearth/rust-clippy/labels/E-medium) are generally
|
||||
pretty easy too, though it's recommended you work on an E-easy issue first.
|
||||
|
||||
[Llogiq's blog post on lints](https://llogiq.github.io/2015/06/04/workflows.html) is a nice primer
|
||||
to lint-writing, though it does get into advanced stuff. Most lints consist of an implementation of
|
||||
`LintPass` with one or more of its default methods overridden. See the existing lints for examples
|
||||
of this.
|
||||
|
||||
T-AST issues will generally need you to match against a predefined syntax structure. To figure out
|
||||
how this syntax structure is encoded in the AST, it is recommended to run `rustc -Z ast-json` on an
|
||||
example of the structure and compare with the
|
||||
[nodes in the AST docs](http://manishearth.github.io/rust-internals-docs/syntax/ast/). Usually
|
||||
the lint will end up to be a nested series of matches and ifs,
|
||||
[like so](https://github.com/Manishearth/rust-clippy/blob/de5ccdfab68a5e37689f3c950ed1532ba9d652a0/src/misc.rs#L34)
|
||||
|
||||
T-middle issues can be more involved and require verifying types. The
|
||||
[`middle::ty`](http://manishearth.github.io/rust-internals-docs/rustc/middle/ty) module contains a
|
||||
lot of methods that are useful, though one of the most useful would be `expr_ty` (gives the type of
|
||||
an AST expression). `match_def_path()` in Clippy's `utils` module can also be useful.
|
||||
|
||||
## Contributions
|
||||
|
||||
Clippy welcomes contributions from everyone.
|
||||
|
||||
Contributions to Clippy should be made in the form of GitHub pull requests. Each pull request will
|
||||
be reviewed by a core contributor (someone with permission to land patches) and either landed in the
|
||||
main tree or given feedback for changes that would be required.
|
||||
|
||||
## Conduct
|
||||
|
||||
We follow the [Rust Code of Conduct](http://www.rust-lang.org/conduct.html).
|
||||
|
||||
|
||||
<! -- adapted from https://github.com/servo/servo/blob/master/CONTRIBUTING.md -->
|
Loading…
Reference in a new issue