SalvadorC
1412d0c6ed
new rule: unexported-naming ( #443 )
...
* new rule: unexported-naming
* better failure message
2020-07-23 02:17:20 +03:00
chavacava
ad3100c9ec
adds defer rule
2020-06-08 09:40:38 -07:00
chavacava
e9bdc9ed8f
removes type-checking from empty-block rule
2020-05-20 12:05:56 -07:00
chavacava
ef265b07dd
removes commented code
2020-05-13 23:42:09 +02:00
chavacava
65beded8c4
Merge remote-tracking branch 'upstream/master' into unconditional-recursion
2020-05-13 22:13:08 +02:00
SalvadorC
1da965b65f
fix issue 386: Incorrectly identifies channel draining as "empty code… ( #415 )
...
* fix issue 386: Incorrectly identifies channel draining as "empty code block"
* updates doc of empty-block rule
2020-05-10 17:43:56 -07:00
chavacava
7a55cafc36
adds support for control exit statements
2020-05-09 21:43:12 +02:00
chavacava
91adb8bc8a
first working version
2020-05-09 17:10:34 +02:00
chavacava
5939a81c8a
removes unused code
2020-05-08 22:43:14 +02:00
chavacava
0c49c6a991
identical-branches initial implementation
2020-05-08 22:08:16 +02:00
chavacava
579c7c761f
utils.gofmt now accepts a interface{}
2020-05-08 22:08:16 +02:00
SalvadorC
67c83886d7
Late return rule ( #406 )
...
* fisrt working version of late-return rule
* late-update: adds doc
* renames to early-return
* fix rule failure condition
* fix alphabetical sorting of early-return
2020-05-08 11:14:21 -07:00
Bernhard Reisenberger
22014c3f08
Add rule 'range-val-address' ( #353 )
...
* Add rule 'range-val-address'
* range-val-address: replace pick with visitor; avoid nesting; improve failure message
* range-val-address: not all callexprs are bad. limit to 'append'
2020-02-26 10:33:00 -10:00
SalvadorC
8f61c9ad71
fix issue #355 ( #356 )
2020-02-26 10:32:47 -10:00
SalvadorC
a24e8e7b81
String of int ( #342 )
...
* string-of-int: working version
* adds doc of string-to-int
2020-02-18 09:38:01 -08:00
SalvadorC
2bec93f05f
fixes issue 290 ( #294 )
2020-01-07 14:46:21 -08:00
SalvadorC
9d5ed110c9
fixes issue #280 ( #282 )
2019-12-21 12:17:51 -08:00
chavacava
777e1b9e60
simpler implem of binEpr complexity computation
2019-12-17 22:11:32 +01:00
chavacava
e63e7cbd3d
fixes computation of complexity of Bool exprs
2019-12-16 23:02:12 +01:00
chavacava
0cdcc25bc7
removes unused return value
2019-12-15 10:57:26 +01:00
chavacava
d877a0d7e8
fix binexp complexity logic
2019-12-14 16:18:53 +01:00
chavacava
2eae0cd122
fix method comment
2019-12-14 09:12:36 +01:00
chavacava
611c6f7c81
firts working version
2019-12-14 08:27:06 +01:00
dshemin
a5c77eed9f
Add check for argument length to "file-header" rule
2019-12-02 02:04:49 +07:00
dshemin
9bb943735e
Fix review comments
2019-11-28 10:14:21 +07:00
dshemin
3c93b9c1a4
Fix #245 File header rule: index out of range [0] with length 0
2019-11-28 01:38:43 +07:00
SalvadorC
84deee4163
fixes issue #229 ( #231 )
2019-09-10 10:26:47 -07:00
SalvadorC
9649b1c2a1
fix 208 struct-tag linter false positive ( #209 )
2019-08-05 09:21:20 -07:00
SalvadorC
c967fd68ea
struct-tag warns on private fields with tags ( #131 )
2019-06-01 10:34:43 +02:00
SalvadorC
c8ee35a500
adds blacklist to unhandled-error ( #128 )
...
* adds blacklist for unhandled-error
* uses ignoreList in place of blackList
2019-04-29 19:56:12 -07:00
SalvadorC
8aa0cd8bd4
unhandled-error (new rule) ( #124 )
...
* unhandled-error (new rule)
* better failure msg
* encapsulates error type detection
2019-04-27 19:23:17 -07:00
SalvadorC
e8c1baf8ac
optimizes import-blacklist ( #123 )
2019-04-22 10:58:02 -07:00
SalvadorC
2474f6cecb
simpler and more efficient implementation of unused-parameter ( #121 )
2019-04-21 10:13:03 -07:00
SalvadorC
00a86ae1fd
new rule: unused-receiver ( #119 )
...
* new rule: unused-receiver
* unused-receiver: adds more test cases
2019-04-18 10:35:51 -07:00
SalvadorC
745bcf65aa
bare-return (first working version) ( #117 )
...
New rule bare-return
2019-04-17 22:55:52 +02:00
SalvadorC
2ce440cf96
new rule: import shadowing ( #114 )
...
* Adds rule superfluous-else (an extension of indent-error-flow)
* Fix superfluous-else rule struct namming.
* Adds superfuous-else rule to the rules table
* Adds confusing-naming rule
* adds multifile test
* clean-up
* fix config.go
* clean master
* new ADS rule: newerr
* ADS-print working version
* ads-print final version
* ads-lost-err working version
* fix ads-print
* removes ads rules from master
* new rule: import-shadowing
* removes ads rules from master
* new rule: import-shadowing
* fix defaults
* adds explanations on the rule implementation
2019-03-27 11:46:20 -07:00
Dian
44eed7edb7
fix error return rule to allow multiple error return values ( #110 )
...
* fix error return rule to allow multiple error return values
please check golint related updates here: golang/lint@8379672
When returning multiple values with an error,
lint checks if the error is the last return value.
But the implementation actually is checking for all return values
except for the last one, and throw the alert if it found an error.
There is a (edge) case where some function returning more than one error
is getting a false positive even when the last return value is an error.
This patch adds an early check, to see if the last return value is an error
and if so, it will pass silently.
* Fix return error
* add test changes
2019-03-20 11:54:27 -07:00
SalvadorC
fbefad8558
New rule: duplicated-imports ( #111 )
...
* Adds rule superfluous-else (an extension of indent-error-flow)
* Fix superfluous-else rule struct namming.
* Adds superfuous-else rule to the rules table
* Adds confusing-naming rule
* adds multifile test
* clean-up
* fix config.go
* clean master
* new ADS rule: newerr
* ADS-print working version
* ads-print final version
* ads-lost-err working version
* adds duplicated-imports rule
* adds duplicated-imports rule
2019-03-20 11:54:03 -07:00
SalvadorC
55fe366696
call-to-gc (new rule) ( #90 )
2018-10-31 07:32:23 -07:00
mgechev
376425d517
refactor: remove URL field from the failure struct
2018-10-30 15:37:27 -07:00
xuri
3c177e2824
New rule: line-length-limit ( #86 )
...
* New rule: line-length-limit
* simplify the panic message of rule line-length-limit
* Refactors `line-length-limit` rule, use private `check` method instead of `Visit`
2018-10-19 08:18:33 -04:00
SalvadorC
3cae2fa6f9
Update empty-lines.go
...
removes warning on unused parameter
2018-10-13 20:13:29 +02:00
Genadi Samokovarov
b7d9bce0b6
Fix the same-line comments detection in the empty-lines rule
...
Fixes #84 .
2018-10-13 09:47:29 -07:00
Genadi Samokovarov
04516d2f82
Handle multi-line statements edge-cases in the multi-line rule ( #83 )
...
There were many cases where the multi-line statements at the end of a
block were marked as containing empty lines, while they didn't. Or vice
versa.
2018-10-12 22:38:08 -07:00
Genadi Samokovarov
d2e0e5a0ed
Introduce the empty-lines rule that verifies there are no {head,trail}ing lines ( #81 )
2018-10-11 14:52:46 -07:00
SalvadorC
da63d0a965
Refactors atomic
rule code to move gofmt
function to utils.go (issue #79 ) ( #80 )
...
* Refactoring on atomic rule:
-Main modification: move func gofmt to utils.go
* Refactoring on constant-logical-expr rule
Simplifies equality check of subexpressions by using gofmt function
2018-10-03 11:56:57 -07:00
xuri
7d2c43c827
Rename rule name waitgroup-by-copy to waitgroup-by-value
2018-10-03 16:01:41 +08:00
xuri
9545122d39
New rule: atomic ( #77 )
2018-10-01 12:24:17 -07:00
SalvadorC
6ebe5bbb1e
waitgroup-by-value (new rule) ( #76 )
...
* waitgroup-by-value (new rule)
* code simplification
2018-09-30 12:29:11 -07:00
SalvadorC
f3834d0604
Removes linter warning
...
Renamed unused parameter `arguments` to `_`
2018-09-29 07:04:10 +02:00
xuri
924e3db3ba
Rename rule range-loop-var
to range-val-in-closure
.
2018-09-29 11:32:32 +08:00
xuri
b34a6c053e
New rule: range-loop-var
2018-09-27 23:21:10 +08:00
SalvadorC
388baa3eeb
Fix linter warnings (recommended config) in the code ( #71 )
2018-09-22 15:27:22 -07:00
Sylvain Kerkour
02575a7674
Add the imports-blacklist rule ( #68 )
...
* Add the imports-blacklist rule with tests
* Add the imports-blacklist rule to README.md
* Update the imports-blacklist rule to use map[string]bool so that we can have the algorithm in Visit below with O(n) instead of O(n*m)
* Fix the imports-blacklist rule to be case sensitive
2018-09-17 13:06:42 -07:00
SalvadorC
7240bd56d0
Merge pull request #62 from xuri/return-value-limit
...
New rule: return-result-limit
2018-09-17 21:56:59 +02:00
xuri
f02afab00f
Check max value and add more information about what the rule received as argument.
2018-09-17 20:17:21 +08:00
xuri
0c243f004c
Rename rule return-argument-limit
to function-result-limit
2018-09-17 17:06:53 +08:00
xuri
f0ec17c8d5
New rule: return-argument-limit
2018-09-17 15:22:07 +08:00
mgechev
90f51530cc
Add white & black lists for var-naming
...
This PR introduces a white & black lists of initialisms for the
`var-naming` rule.
Now the rule can be configured with:
```toml
[rule.var-naming]
arguments = [["ID"], ["VM", "BAR"]]
```
This way, the linter will ignore `customId` but will throw on `customVm` or `customBar`.
Fix #41
2018-09-15 15:05:31 -07:00
SalvadorC
f004425b6e
redefines-builtin-id (new rule) ( #60 )
2018-09-13 19:19:49 -07:00
SalvadorC
eeabcb5376
removes debug trace ( #57 )
2018-09-09 08:33:45 -07:00
SalvadorC
81bdff4472
constant-logical-expr (new rule) ( #55 )
...
* suspicious-logical-expr (new rule)
* renames 'suspicious-logical-expression' to 'constant-logical-expression'
2018-08-23 11:45:10 -07:00
SalvadorC
771aa23069
bool-literal-in-expr (new rule) ( #54 )
...
* bool-literal-in-expr (new rule)
* bool-literal-in-expr: add test case and fix typo
2018-08-23 11:10:17 -07:00
SalvadorC
a2a52e398b
Refactoring: removes unused function from modifies-param rule code ( #50 )
2018-08-13 15:19:00 -07:00
SalvadorC
613fd24a3b
modifies-value-receiver (new rule) ( #51 )
2018-08-13 15:18:28 -07:00
SalvadorC
8ea88db68f
struct-tag: add support for asn1 and bson ( #49 )
2018-08-07 11:28:45 -07:00
SalvadorC
6fa95fb6ba
struct-tag (new rule) ( #47 )
2018-07-28 09:07:31 -07:00
SalvadorC
0404d66548
unnecessary-stmt (new rule) ( #45 )
...
* simpler (new rule)
* simpler: checks unitary switches
* unnecessary-stmt (new rule)
2018-07-27 22:38:39 -07:00
SalvadorC
3d8d46af0b
flag-parameter (new rule) ( #44 )
...
* flag-parameter (new rule)
* fix failure confidence
2018-07-21 22:58:48 -07:00
chavacava
5248ad8ed9
add-constant (new rule) ( #39 )
2018-07-17 12:21:27 -07:00
chavacava
db6c522a37
New rule: unreachable-code ( #38 )
...
* Adds rule superfluous-else (an extension of indent-error-flow)
* Fix superfluous-else rule struct namming.
* Adds superfuous-else rule to the rules table
* Adds confusing-naming rule
* adds multifile test
* [WIP] fix multiple file test
* draft solution for detecting confusing-names through multiple files
* [WIP] confusing-name multiple files
* clean-up
* draft working version
* cleaner version + more informative messages
* adds check on struct field names
* fix config.go
* clean master
* new ADS rule: newerr
* ADS-print working version
* ads-print final version
* ads-lost-err working version
* confusing-namming: fix tests
* removes ads-* rules
* rule unreachable-code
* unreachable-code refactored version
* skip corner case of mandatory return
2018-07-16 14:23:47 -07:00
chavacava
d95910df55
Refactoring: move pick function to rule/utils.go ( #30 )
...
* Adds rule superfluous-else (an extension of indent-error-flow)
* Fix superfluous-else rule struct namming.
* Adds superfuous-else rule to the rules table
* Adds confusing-naming rule
* adds multifile test
* [WIP] fix multiple file test
* draft solution for detecting confusing-names through multiple files
* [WIP] confusing-name multiple files
* clean-up
* draft working version
* cleaner version + more informative messages
* adds check on struct field names
* fix config.go
* clean master
* new ADS rule: newerr
* ADS-print working version
* ads-print final version
* ads-lost-err working version
* confusing-namming: fix tests
* moves pick to rule/utils for better reusability
2018-07-09 03:00:44 +10:00
Minko Gechev
f966283f3e
Fix rule for documentation of exported types ( #29 )
...
* Fix rule for documentation of exported types
The rule was failing in the following case:
```go
// A is an awesome type
type A = int
```
Because revive was skipping the leading `A`, considering it as an article.
* Add "This" article and update Makefile
2018-07-08 08:14:15 +10:00
chavacava
c2e2dbac85
New rule: unused-parameter ( #28 )
...
* Adds rule superfluous-else (an extension of indent-error-flow)
* Fix superfluous-else rule struct namming.
* Adds superfuous-else rule to the rules table
* Adds confusing-naming rule
* adds multifile test
* [WIP] fix multiple file test
* draft solution for detecting confusing-names through multiple files
* [WIP] confusing-name multiple files
* clean-up
* draft working version
* cleaner version + more informative messages
* adds check on struct field names
* fix config.go
* clean master
* new ADS rule: newerr
* ADS-print working version
* ads-print final version
* ads-lost-err working version
* confusing-namming: fix tests
* unused-parameter: working version
* WIP adds scopes - still imprecise ( eg a:=a is not detected as use)
* w/scopes and more precise
* adds test on structs
* adds test w/ var shadowing
* more precise handling of for/switch statements
* fix check of +=, -=, *= and the like. Adds better support for slices and switchs
2018-07-07 18:40:02 +10:00
chavacava
b8eababb0d
New rule: confusing-results ( #27 )
...
* Adds rule superfluous-else (an extension of indent-error-flow)
* Fix superfluous-else rule struct namming.
* Adds superfuous-else rule to the rules table
* Adds confusing-naming rule
* adds multifile test
* clean-up
* fix config.go
* confusing-results working version
2018-07-02 12:09:58 +10:00
chavacava
443bfc9e0b
New rule: Confusing naming ( #16 )
...
* Adds rule superfluous-else (an extension of indent-error-flow)
* Fix superfluous-else rule struct namming.
* Adds superfuous-else rule to the rules table
* Adds confusing-naming rule
* adds multifile test
* [WIP] fix multiple file test
* draft solution for detecting confusing-names through multiple files
* [WIP] confusing-name multiple files
* draft working version
* cleaner version + more informative messages
* adds check on struct field names
* confusing-namming: fix tests
2018-07-02 12:05:20 +10:00
chavacava
68deb55492
New rule deep-exit ( #26 )
...
* Adds rule superfluous-else (an extension of indent-error-flow)
* Fix superfluous-else rule struct namming.
* Adds superfuous-else rule to the rules table
* Adds confusing-naming rule
* adds multifile test
* clean-up
* fix config.go
* deep-exit: first working version
* fix pbs from @mgechev review
* deep-exit: modifies failure message
2018-06-27 06:21:03 +10:00
chavacava
b2532b3c33
New rule: modifies-parameter ( #25 )
...
* Adds rule superfluous-else (an extension of indent-error-flow)
* Fix superfluous-else rule struct namming.
* Adds superfuous-else rule to the rules table
* Adds confusing-naming rule
* adds multifile test
* clean-up
* fix config.go
* working version
2018-06-24 17:26:21 +10:00
chavacava
7e89359269
superfuous-else handles more cases ( #24 )
...
* Adds rule superfluous-else (an extension of indent-error-flow)
* Fix superfluous-else rule struct namming.
* Adds superfuous-else rule to the rules table
* Adds confusing-naming rule
* adds multifile test
* clean-up
* fix config.go
* superflous-else now detects "jumps" caused by functions like os.Exit and log.Fatal
2018-06-24 17:24:50 +10:00
chavacava
f8c1094ecd
New rule: get-return ( #23 )
...
* Adds rule superfluous-else (an extension of indent-error-flow)
* Fix superfluous-else rule struct namming.
* Adds superfuous-else rule to the rules table
* Adds confusing-naming rule
* adds multifile test
* clean-up
* clean master
* running version
* isGetter now checks for non lowercase characters
2018-06-22 21:21:09 +10:00
chavacava
4e19174270
Fix issue19 ( #20 )
...
* Adds rule superfluous-else (an extension of indent-error-flow)
* Fix superfluous-else rule struct namming.
* Adds superfuous-else rule to the rules table
* fix issue 19
2018-06-13 07:01:31 -07:00
chavacava
c9bde6c503
empty-block: ignore checking blocks of funcs and func literals ( #17 )
...
* Adds rule superfluous-else (an extension of indent-error-flow)
* Fix superfluous-else rule struct namming.
* Adds superfuous-else rule to the rules table
* Modifies empty-block rule to ignore bodies of
func literals and funcs
* add test cases on functions with a receiver for completeness
2018-06-11 12:08:58 -07:00
Tamir Duberstein
32df8ca880
Avoid false positives when returning interface values ( #6 )
...
* Use subtests
* Make unexported-return type check
* Avoid false positives when returning interface values
Fixes #5 .
2018-06-11 11:22:33 -07:00
chavacava
1fa5046357
Adds new rule empty-block ( #14 )
...
* Adds rule superfluous-else (an extension of indent-error-flow)
* initial (non functional) version
* empty-block working version
* adds tests for empty-block rule
* Adds empty-block to the rules table
* code clean-up
2018-06-08 12:41:49 -07:00
chavacava
cbe45ffc79
Adds rule superfluous-else (an extension of indent-error-flow) ( #13 )
...
* Adds rule superfluous-else (an extension of indent-error-flow)
* Fix superfluous-else rule struct namming.
* Adds superfuous-else rule to the rules table
2018-06-08 07:06:29 -07:00
mgechev
1686f0b237
Introduce optional type checking
...
Enable optional type checking.
2018-05-31 21:43:02 -07:00
mgechev
55145d7427
Run var-naming on test files
2018-05-30 17:41:02 -07:00
mgechev
6c9ea8cf2d
Refactoring and renaming
2018-05-26 21:28:31 -07:00
mgechev
8c53dad5ec
Rename and docs
2018-05-26 16:14:36 -07:00
mgechev
655402f527
Add tests for the arguments limit
2018-02-04 15:10:35 -08:00
mgechev
b5fc0eaffc
Add extra rule
2018-02-04 14:51:19 -08:00
mgechev
2ff1cccfd2
Add new rule
2018-02-02 13:32:03 -05:00
mgechev
deb72d6238
Add default formatter
2018-01-27 17:01:18 -08:00
mgechev
5ec3daa762
API improvements
2018-01-26 20:45:17 -08:00
mgechev
466e9339e4
Fix issues and add improvements
2018-01-26 20:34:20 -08:00
mgechev
9f437c09a5
Basic configuration
2018-01-26 20:20:49 -08:00
mgechev
e2e5db7203
Add cyclomatic complexity and improve tests
2018-01-26 19:48:44 -08:00
mgechev
3c3a6b538d
Add all built-in rules
2018-01-25 11:34:38 -08:00
mgechev
a3c28563b7
Add increment decrement
2018-01-25 11:16:28 -08:00
mgechev
d6a6d6290d
Add receiver name
2018-01-25 11:12:27 -08:00
mgechev
f9a08cd60f
Add error rules
2018-01-25 11:06:56 -08:00
mgechev
f35fad066d
Add errorf rule
2018-01-25 10:42:39 -08:00
mgechev
7d066071ce
Add rules
2018-01-25 10:35:27 -08:00
mgechev
f926547659
Refactoring
2018-01-24 15:44:03 -08:00
mgechev
4f31c1639f
Implement severity
2018-01-24 15:41:40 -08:00
mgechev
b2e276ddf8
Add names
2018-01-24 15:17:19 -08:00
mgechev
cc249b6cfa
Add extra rule
2018-01-23 23:01:49 -08:00
mgechev
cac7f0e036
Add extra rules and tests
2018-01-23 19:13:02 -08:00
mgechev
1dc6e7cabd
Remove useless getter
2018-01-21 18:48:51 -08:00
mgechev
9c979ed65f
Implement proper var declaration rule
2018-01-21 18:41:38 -08:00
mgechev
98dce265c6
Refactoring
2018-01-21 18:04:41 -08:00
mgechev
f2e19894a1
Add extra rule
2017-11-26 18:48:07 -08:00
mgechev
8f8a8b5587
Implement extra rule
2017-11-19 18:23:01 -08:00
mgechev
836c184aaf
Further refactoring
2017-11-19 17:58:28 -08:00
mgechev
af459bbef6
Refactor
2017-11-19 17:35:56 -08:00
mgechev
5d652029ae
Refactor revive
2017-11-19 17:18:16 -08:00
mgechev
5bdfe48c09
Update disabled intervals
2017-09-01 21:46:54 -07:00
mgechev
7b970568f5
Implement initial basic version of enabling/disabling rules
2017-09-01 21:03:10 -07:00
mgechev
08c42c7475
Add extra primitives
2017-09-01 18:36:47 -07:00
mgechev
1cdf90891b
Refactoring
2017-08-29 10:47:29 -07:00