Sijawusz Pur Rahnama
e8a68a80d5
Fix several misspellings ( #94 )
2019-02-23 07:06:28 +02:00
Hannes Käufler
e850bff60f
Hk cyclomatic complexity ( #92 )
...
* Proof of concept for cyclomatic complexity
* Enable configurability of rule
* Use the same nodes to increment the complexity as rubocop
* Fix typo in test description
* Properly indent code and simplify macro
* Move metric into metrics
* Cover a violation supressed by increased threshold
* Extract visitor into its own file
* Document cyclomatic complexity rule and visitor
* Refactor specs to use a macro
* Indent code inside macro
* Replace array with tuple for string formatting.
`Tuple` is stack based, whereas `Array` is allocated on the heap increasing GC pressure.
* Fix formatting
* Enable cyclomatic complexity rule by default
2019-02-16 21:03:44 +02:00
Vitalii Elenhaupt
3c5e3cdef4
Exclude globs as arguments
...
Examples:
$ ameba path/to/shard/*.cr !path/to/shard/lib
$ ameba . !lib
2019-01-13 10:48:46 +02:00
Vitalii Elenhaupt
866af184f1
Redundant return ( #87 )
2018-12-30 09:04:59 +02:00
Vitalii Elenhaupt
c91da1aa08
Let ameba explain the issue at the specified location ( #86 )
2018-12-27 23:34:10 +02:00
Vitalii Elenhaupt
32ac199162
Correct trailing blank line position
2018-12-24 00:44:15 +02:00
Vitalii Elenhaupt
60ce034f1b
UnusedArgument: fix crystal upgrade regression
2018-12-12 22:21:33 +02:00
Vitalii Elenhaupt
f671d6f857
Show affected code while using a default formatter
2018-12-12 21:45:00 +02:00
Vitalii Elenhaupt
20938da89a
Dynamically load rule documentation
2018-12-08 22:52:32 +02:00
Vitalii Elenhaupt
f8dab3bc34
MethodNames: correct reported location/end_location
2018-11-25 00:56:21 +02:00
Vitalii Elenhaupt
e951c0772a
ConstantNames: correct reported end_location
2018-11-25 00:37:46 +02:00
Vitalii Elenhaupt
9885457227
Track issue.end_location properly
2018-11-24 19:38:13 +02:00
V. Elenhaupt
0fd5890738
Extend UnreachableCode rule: handle control flow ( #83 )
2018-11-22 10:38:32 +02:00
Vitalii Elenhaupt
eca0f3f350
Handle raise, exit, abort in unreachable code
2018-11-11 20:33:48 +02:00
Vitalii Elenhaupt
67d76116f7
Basic implementation of UnreachableCode rule
2018-11-05 21:39:27 +02:00
Vitalii Elenhaupt
12aa48c98f
Fix Style/RedundantBegin: begin-end in a proc literal
...
closes #80
2018-09-22 21:58:38 +03:00
Vitalii Elenhaupt
d7b0e10d1e
Normalize sources for tests
2018-09-07 15:07:03 +03:00
V. Elenhaupt
cb5f802012
Correctly process record declaration at a top level ( #78 )
2018-09-07 00:47:02 +03:00
Vitalii Elenhaupt
18ac04d992
Generate UTC time in todo
2018-09-06 18:48:36 +03:00
V. Elenhaupt
fd78d17c40
New rule: Performance/FirstLastAfterFilter ( #76 )
2018-09-06 17:59:11 +03:00
Vitalii Elenhaupt
a1b34eb7be
New rule: Performance/AnyAfterFilter
2018-09-03 22:55:10 +03:00
Vitalii Elenhaupt
790b519653
Performance/Count -> Performance/SizeAfterFilter
2018-09-03 22:44:30 +03:00
Vitalii Elenhaupt
799c0fd5e1
Correct location name of reported issue
2018-09-03 13:26:19 +03:00
Vitalii Elenhaupt
446f557c23
New rule: Performance/Count
2018-09-03 01:07:34 +03:00
Vitalii Elenhaupt
f4680a75f4
Apply default formatting
2018-09-03 00:17:56 +03:00
Vitalii Elenhaupt
d60aea102f
Add --no-color cli flag
...
closes #72
2018-08-13 00:05:11 +03:00
Vitalii Elenhaupt
248c5a656b
Add --all
cli flag that enables all available rules
2018-07-04 15:20:35 +03:00
Vitalii Elenhaupt
dbac46b68a
Ignore outer shadowing of throwaway variables
...
closes #67
2018-06-25 17:02:46 +03:00
Vitalii Elenhaupt
98f0aa71e9
Allow to disable group of rules using inline directives
2018-06-23 16:52:48 +03:00
Vitalii Elenhaupt
04c7300964
Handle type declarations in scopes
...
closes #66
2018-06-23 08:48:13 +03:00
V. Elenhaupt
fafc5f4bdc
Allow filtering by group name ( #65 )
2018-06-18 10:25:06 +03:00
V. Elenhaupt
4cb5328513
Add rule namespaces: style, lint, layout ( #63 )
2018-06-16 14:50:59 +03:00
Vitalii Elenhaupt
23245d0e52
Add end_location to json formatter
2018-06-12 12:55:56 +03:00
Vitalii Elenhaupt
f8d14d4222
Rename Error to Issue
2018-06-12 12:55:56 +03:00
Vitalii Elenhaupt
e1b51f62a5
Exclude file pattern match
...
closes #61
2018-05-29 13:19:00 +03:00
Vitalii Elenhaupt
c12b4f1aa5
Shadowed argument
2018-05-29 09:47:32 +03:00
Vitalii Elenhaupt
15bb8f5331
Detect shadowing outer local vars
2018-05-29 09:47:20 +03:00
Vitalii Elenhaupt
3887da1438
Redundant begin: do not report if there is an inner handler
...
fixes #56
2018-05-25 11:23:11 +03:00
Brian J. Cardiff
3e099e9afc
Support upcoming Crystal 0.25.0
...
The changes are compatible with crystal 0.24.2
2018-05-23 13:29:27 +03:00
Vitalii Elenhaupt
1cea21b147
Do not report float numbers as large if fraction has less than 3 digits
2018-05-13 19:04:15 +03:00
Vitalii Elenhaupt
402a0c0dab
Unused argument name suggession
2018-05-13 14:13:57 +03:00
Vitalii Elenhaupt
bf907ee98b
Rework variable references detection in macro
2018-05-12 20:08:24 +03:00
Vitalii Elenhaupt
efe67212b0
Support of Crystal::UnitializedVar
2018-05-12 18:29:31 +03:00
Vitalii Elenhaupt
415432713a
Prevent false positiveness cause by macro literals
...
https://github.com/crystal-lang/crystal/pull/6055#issuecomment-386376227
2018-05-12 17:37:54 +03:00
Vitalii Elenhaupt
6579c8f573
Ignore config if todo formatter is used
...
Fixes #53
2018-05-11 21:39:09 +03:00
Vitalii Elenhaupt
4546b90b54
Add JSON formatter
2018-05-11 21:28:30 +03:00
Vitalii Elenhaupt
1fc0c525bd
Do not report unneeded disable directive if directive is used one line above
2018-05-09 00:14:46 +03:00
Vitalii Elenhaupt
eab5499f8e
Add a workaround for https://github.com/crystal-lang/crystal/pull/6032
2018-05-08 22:18:15 +03:00
V. Elenhaupt
c2aa526e21
Unused argument rule ( #52 )
...
* Unused argument rule
* IgnoreDefs, IgnoreBlocks, IgnoreProcs parameters
* Implicit reference by super keyworkd
* Handle macro arguments
2018-05-08 22:00:17 +03:00
V. Elenhaupt
6475c2bb25
Variable scope & useless assignments ( #41 )
...
* AST::Visitor -> AST::NodeVisitor
* Scope & ScopeVisitor
* Useless assignment rule
* Instance vars and useless assignments
* Multiple assigns one by one
* Support outer scope
* Variable used in the useless assignment
* Support OpAssign & MultiAssign
* Captured by block
* Variable, Assignment, Reference & Refactoring
* Variable has references, Assignment can be referenced
* Branch entity
* Handle useless assignments in branches
* Handle assignments in a loop
* Handle branch equality
* Handle special var `$?` assignment
* Improve captured by block stuff
* Avoid assignments in property definitions
(UselessAssign rule reports an warning)
* Support MacroIf and MacroFor branches
* Handle assignments with shadowed vars in inner scopes
* Add method arguments as scope variables
* Handle case if branch is blank
* Top level scope
* Handle case when branch is nop?
2018-05-03 18:57:47 +03:00