Sijawusz Pur Rahnama
d23ad7f0ab
Make Scope#*_def?
methods accept check_outer_scopes
parameter
2024-01-10 01:10:36 +01:00
Sijawusz Pur Rahnama
e99a69765f
Few refactors
2024-01-01 14:46:32 +01:00
Sijawusz Pur Rahnama
1dd531740c
Fix reported ameba issue
2023-12-28 15:43:29 +01:00
Sijawusz Pur Rahnama
57898fd797
Make BranchVisitor
treat loop { … }
calls as branchable
2023-12-28 15:31:11 +01:00
Sijawusz Pur Rahnama
15d241e138
Add spec for AST::Util#{static,dynamic}_literal?
2023-11-14 11:22:17 +01:00
Vitalii Elenhaupt
789e1b77e8
fix: crystal next compatibility
...
refs https://github.com/crystal-lang/crystal/pull/11597
fixes https://github.com/crystal-ameba/ameba/issues/406
2023-10-06 18:57:39 +03:00
Sijawusz Pur Rahnama
596b0dd9d0
Misc tweaks and refactors
2023-06-14 15:06:24 +02:00
Sijawusz Pur Rahnama
e12d72cc88
Set the ASTNode#visibility
as well
2023-06-08 04:28:17 +02:00
Sijawusz Pur Rahnama
4c740f394a
Implement Scope#visibility
2023-06-08 01:58:58 +02:00
Billy.Zheng
e2528d93dd
Refactor spec to use be_false replace eq false
2023-03-09 12:39:25 +08:00
Vitalii Elenhaupt
d20cc212b9
Styling changes
2023-02-07 20:03:52 +02:00
Vitalii Elenhaupt
6b2ddcb1d9
Address feedback, add tests
2023-02-07 17:19:04 +02:00
Sijawusz Pur Rahnama
8112dddc8f
Specs cleanup
2022-12-20 03:25:06 +01:00
Sijawusz Pur Rahnama
e668ba5bf5
Readability-related refactors
2022-11-14 02:26:52 +01:00
Sijawusz Pur Rahnama
eb64fde437
Fix few issues reported by the newly added rule
2022-10-30 21:44:55 +01:00
Sijawusz Pur Rahnama
ffc712a838
Reduce usage of Object#not_nil!
2022-10-29 00:03:39 +02:00
Vitalii Elenhaupt
087f470f15
Backward compatibility to Crystal 1.3
2022-04-03 19:17:47 +03:00
fn ⌃ ⌥
63a6c73dc0
Autocorrect various rules ( #253 )
2021-11-16 22:30:33 +01:00
Vitalii Elenhaupt
429f76f8b6
Do not report unreachable code after loops
...
closes #251
2021-11-10 09:16:14 +02:00
fn ⌃ ⌥
01dfcbe76a
Add tests for AST::Util#control_exp_code
2021-11-09 11:52:31 -08:00
fn ⌃ ⌥
48b15b9bf8
Add Lint/AmbiguousAssignment rule ( #244 )
2021-10-19 11:44:41 +02:00
Sijawusz Pur Rahnama
651f70f680
Update spec/ameba/ast/visitors/counting_visitor_spec.cr
2021-06-05 20:49:00 +02:00
Caspian Baska
0ea6238dc6
Count an exhaustive case
's complexity as 1
2021-06-05 22:31:58 +10:00
Sijawusz Pur Rahnama
99da6b6916
Merge remote-tracking branch 'origin/master' into master-into-develop
2021-02-03 22:45:35 +01:00
Vitalii Elenhaupt
51b0a07e81
Avoid exponential recursion while finding variable references in scopes ( #203 )
...
* Avoid exponential recursion while finding variable references in scopes
* Adjust source example in test
2021-01-31 16:40:44 +02:00
Sijawusz Pur Rahnama
7b3c814914
Fix newly found issues
2021-01-28 01:03:48 +01:00
Vitalii Elenhaupt
e9ec91654c
New Rule: Lint/DuplicatedRequire
...
closes https://github.com/crystal-ameba/ameba/issues/176
2021-01-17 22:32:24 +02:00
Vitalii Elenhaupt
5b4b1e817d
Improve forward compatibility with future crystal version
...
https://github.com/crystal-ameba/ameba/issues/168#issuecomment-722051876
2020-11-05 10:23:25 +02:00
Vitalii Elenhaupt
44290a6a5d
Handle case when compiler reports incorrect node location
...
fixes #168
2020-10-23 10:41:17 +03:00
Vitalii Elenhaupt
f8d57345d4
Merge branch 'develop'
2020-08-26 22:46:03 +03:00
Vitalii Elenhaupt
b5bd76dfa8
Useless Assign: ignore variables with '_' prefix
...
closes #164
2020-08-20 21:15:58 +03:00
Vitalii Elenhaupt
d650ca5477
Incorrectly reporting shadowingOuterLocalVar within macro included
...
closes #161
2020-07-15 10:18:12 +03:00
Vitalii Elenhaupt
458c492730
Do not report shadowing outer local var is var is declared below the
...
shadowed var
closes #144
2020-04-10 10:44:42 +03:00
Brian J. Cardiff
24b9156f19
Avoid creating an invalid RegexLiteral
2020-03-27 09:21:13 -03:00
Vitalii Elenhaupt
4f185db0a2
New rule: SharedVarInSpawn
...
closes #132
2020-03-25 17:52:20 +02:00
Vitalii Elenhaupt
a5dd07e9e4
New rule: RedundantNext
...
closes #131
2020-03-24 18:06:01 +02:00
Vitalii Elenhaupt
aff723b682
Incorrectly reporting shadowingOuterLocalVar within macro included
...
closes #129
2020-02-15 20:49:47 +02:00
Vitalii Elenhaupt
74dfa0b934
Lint/UselessAssign: ignore transformed assignemnts by the compiler
...
closes #127
2020-01-11 23:51:28 +02:00
Vitalii Elenhaupt
c95ea297bd
Stop calculating cyclomatic complexity for methods which have Macro conditions ( #99 )
2019-03-31 20:27:20 +03:00
Vitalii Elenhaupt
a059ade305
Remove one-line methods
...
Unnecessary level of abstraction
2019-03-23 19:25:16 +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
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
67d76116f7
Basic implementation of UnreachableCode rule
2018-11-05 21:39:27 +02:00
Vitalii Elenhaupt
c12b4f1aa5
Shadowed argument
2018-05-29 09:47:32 +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
Vitalii Elenhaupt
57b1095c5f
Document entities
2017-11-15 23:37:16 +02:00
Vitalii Elenhaupt
a9421ee79b
AST node source code
2017-11-07 13:28:33 +02:00