@@ -10,6 +10,10 @@ because that's clearly a non-descriptive name.
1010-  [ Adding a new lint] ( #adding-a-new-lint ) 
1111 -  [ Setup] ( #setup ) 
1212 -  [ Getting Started] ( #getting-started ) 
13+  -  [ Defining Our Lint] ( #defining-our-lint ) 
14+  -  [ Standalone] ( #standalone ) 
15+  -  [ Specific Type] ( #specific-type ) 
16+  -  [ Tests Location] ( #tests-location ) 
1317 -  [ Testing] ( #testing ) 
1418 -  [ Cargo lints] ( #cargo-lints ) 
1519 -  [ Rustfix tests] ( #rustfix-tests ) 
@@ -36,17 +40,38 @@ See the [Basics](basics.md#get-the-code) documentation.
3640## Getting Started  
3741
3842There is a bit of boilerplate code that needs to be set up when creating a new
39- lint. Fortunately, you can use the clippy  dev tools to handle this for you. We
43+ lint. Fortunately, you can use the Clippy  dev tools to handle this for you. We
4044are naming our new lint ` foo_functions `  (lints are generally written in snake
41- case), and we don't need type information so it will have an early pass type
42- (more on this later on). If you're not sure if the name you chose fits the lint,
43- take a look at our [ lint naming guidelines] [ lint_naming ] . To get started on this
44- lint you can run `cargo dev new_lint --name=foo_functions --pass=early
45- --category=pedantic` (category will default to nursery if not provided). This
46- command will create two files: ` tests/ui/foo_functions.rs `  and
47- ` clippy_lints/src/foo_functions.rs ` , as well as [ registering the
48- lint] ( #lint-registration ) . For cargo lints, two project hierarchies (fail/pass)
49- will be created by default under ` tests/ui-cargo ` .
45+ case), and we don't need type information, so it will have an early pass type
46+ (more on this later). If you're unsure if the name you chose fits the lint,
47+ take a look at our [ lint naming guidelines] [ lint_naming ] .
48+ 
49+ ## Defining Our Lint  
50+ To get started, there are two ways to define our lint.
51+ 
52+ ### Standalone  
53+ Command: ` cargo dev new_lint --name=foo_functions --pass=early --category=pedantic ` 
54+ (category will default to nursery if not provided)
55+ 
56+ This command will create a new file: ` clippy_lints/src/foo_functions.rs ` , as well
57+ as [ register the lint] ( #lint-registration ) .
58+ 
59+ ### Specific Type  
60+ Command: ` cargo dev new_lint --name=foo_functions --type=functions --category=pedantic ` 
61+ 
62+ This command will create a new file: ` clippy_lints/src/{type}/foo_functions.rs ` .
63+ 
64+ Notice how this command has a ` --type `  flag instead of ` --pass ` . Unlike a standalone
65+ definition, this lint won't be registered in the traditional sense. Instead, you will
66+ call your lint from within the type's lint pass, found in ` clippy_lints/src/{type}/mod.rs ` .
67+ 
68+ A "type" is just the name of a directory in ` clippy_lints/src ` , like ` functions `  in
69+ the example command. These are groupings of lints with common behaviors, so if your
70+ lint falls into one, it would be best to add it to that type.
71+ 
72+ ### Tests Location  
73+ Both commands will create a file: ` tests/ui/foo_functions.rs ` . For cargo lints,
74+ two project hierarchies (fail/pass) will be created by default under ` tests/ui-cargo ` .
5075
5176Next, we'll open up these files and add our lint!
5277
0 commit comments