Skip to content
This repository has been archived by the owner on Jan 30, 2023. It is now read-only.

Commit

Permalink
add defer in loop rule
Browse files Browse the repository at this point in the history
  • Loading branch information
peakle committed Dec 20, 2021
1 parent 8509762 commit df72df8
Show file tree
Hide file tree
Showing 2 changed files with 597 additions and 0 deletions.
27 changes: 27 additions & 0 deletions rules.go
Original file line number Diff line number Diff line change
Expand Up @@ -221,3 +221,30 @@ func simplifyErrorReturnWithErrorsPkg(m dsl.Matcher) {
// Report(`in exported functions return concrete type instead of interface`).
// At(m["name"])
//}

func deferInLoop(m dsl.Matcher) {
m.Match(
`for $*_; $*_; $*_ { $*_; defer func($*args) $*_ { $*_ }($*_); $*_ }`,
`for $*_; $*_; $*_ { $*_; defer $_($*args); $*_ }`,

`for { $*_; defer func($*args) $*_ { $*_ }($*_); $*_ }`,
`for { $*_; defer $_($*args); $*_ }`,

`for $_, $_ := range $_ { $*_; defer func($*args) $*_ { $*_ }($*_); $*_ }`,
`for $_, $_ := range $_ { $*_; defer $_($*args); $*_ }`,

`for $_, $_ = range $_ { $*_; defer func($*args) $*_ { $*_ }($*_); $*_ }`,
`for $_, $_ = range $_ { $*_; defer $_($*args); $*_ }`,

`for $_ := range $_ { $*_; defer func($*args) $*_ { $*_ }($*_); $*_ }`,
`for $_ := range $_ { $*_; defer $_($*args); $*_ }`,

`for $_ = range $_ { $*_; defer func($*args) $*_ { $*_ }($*_); $*_ }`,
`for $_ = range $_ { $*_; defer $_($*args); $*_ }`,

`for range $_ { $*_; defer func($*args) $*_ { $*_ }($*_); $*_ }`,
`for range $_ { $*_; defer $_($*args); $*_ }`,
).
Report(`Possible resource leak, 'defer' is called in the 'for' loop`).
At(m["args"])
}
Loading

0 comments on commit df72df8

Please sign in to comment.