Commit graph

452 commits

Author SHA1 Message Date
Sijawusz Pur Rahnama
6a180757f3 Use Enumerable#zip ftw 2022-11-23 16:16:34 +01:00
Sijawusz Pur Rahnama
1399aa3cdf Doc fixes 2022-11-23 16:16:03 +01:00
Sijawusz Pur Rahnama
75482a06cf Use warning as a default severity for Metrics and Performance groups 2022-11-23 15:06:24 +01:00
Sijawusz Pur Rahnama
3b7cd3723c Refactor rules’ default group severity handling 2022-11-23 15:04:47 +01:00
Sijawusz Pur Rahnama
735ec2462a Refactor usages of \ to sth more readable if possible 2022-11-23 05:50:32 +01:00
Sijawusz Pur Rahnama
2c67fe2c3f Use tuple instead of an array 2022-11-23 03:23:42 +01:00
Sijawusz Pur Rahnama
8b43a40a65 Misc refactors 2022-11-23 03:22:27 +01:00
Sijawusz Pur Rahnama
ffd63ef028 Fix typo in AST::Branchable example 2022-11-23 03:21:49 +01:00
Sijawusz Pur Rahnama
4500181ddb Remove redundant blank comment lines 2022-11-23 03:21:15 +01:00
Sijawusz Pur Rahnama
2af58cabd4 Use property? for defining Bool-returning Rule properties 2022-11-22 19:49:16 +01:00
Sijawusz Pur Rahnama
c7c75ee36a Rule#enabled -> Rule#enabled? 2022-11-22 19:47:37 +01:00
Sijawusz Pur Rahnama
31392046e0 Always return Bool value from Rule#excluded? 2022-11-22 19:45:16 +01:00
Sijawusz Pur Rahnama
39cc286263 Use tuple instead of array for Rule::SPECIAL 2022-11-22 19:44:38 +01:00
Sijawusz Pur Rahnama
5ee4074c1b Rename RedundantParentheses -> ParenthesesAroundCondition
Also rename the option: `parenthesized_assignments` -> `allow_safe_assignment`
2022-11-18 21:06:51 +01:00
Sijawusz Pur Rahnama
eabe463386 Instead of adding the new rule to support enforcing parens around assignments, refactor existing RedundantParentheses rule 2022-11-18 05:27:05 +01:00
Sijawusz Pur Rahnama
94a271b2a1 Add Style/ParenthesizedAssignments rule 2022-11-17 21:32:47 +01:00
Sijawusz Pur Rahnama
496e8930e2
Merge pull request #303 from crystal-ameba/Sija/lint-literal-assignments-in-expressions-rule
Add `Lint/LiteralAssignmentsInExpressions` rule
2022-11-17 14:19:17 +01:00
Sijawusz Pur Rahnama
95d68114c7 Fix typos throughout the code 2022-11-16 16:55:32 +01:00
Sijawusz Pur Rahnama
f9b6b17657
Merge pull request #305 from crystal-ameba/Sija/followup-to-pr-300
Few more readability refactors
2022-11-16 16:26:59 +01:00
Sijawusz Pur Rahnama
5c08b64e72 Add Lint/LiteralAssignmentsInExpressions rule 2022-11-16 15:08:41 +01:00
Sijawusz Pur Rahnama
28e2871165
Merge pull request #301 from crystal-ameba/Sija/style-redundant-parentheses-rule
Add `Style/RedundantParentheses` rule
2022-11-16 12:22:39 +01:00
Sijawusz Pur Rahnama
935296b041 Refactor ternary handling in Style/RedundantParentheses rule 2022-11-16 03:54:31 +01:00
Sijawusz Pur Rahnama
e54029d8ed Few more readability refactors 2022-11-15 20:55:32 +01:00
Sijawusz Pur Rahnama
76a4209706 Tweak comments in AST::Util 2022-11-15 17:42:08 +01:00
Sijawusz Pur Rahnama
2fb37da80f Refactor AST::Util#literal? helper 2022-11-15 17:42:08 +01:00
Sijawusz Pur Rahnama
3340613a6a Fix newly found issue 2022-11-15 15:17:32 +01:00
Sijawusz Pur Rahnama
cbf5d3de74 Add Style/RedundantParentheses rule 2022-11-15 15:17:32 +01:00
Sijawusz Pur Rahnama
04b19a60db
Merge pull request #300 from crystal-ameba/Sija/some-refactors
Misc refactors
2022-11-14 17:27:29 +01:00
Sijawusz Pur Rahnama
e668ba5bf5 Readability-related refactors 2022-11-14 02:26:52 +01:00
Sijawusz Pur Rahnama
a6ebb48f14 Remove redundant parentheses in if expressions
+ `elsif` -> `case`
2022-11-14 01:52:07 +01:00
Sijawusz Pur Rahnama
d1bfdaabeb Use #in? instead of #includes? in several places
Because:

1. it’s more semantically descriptive
2. it’s shorter
2022-11-14 01:18:43 +01:00
Sijawusz Pur Rahnama
ed6085e6a6 Several refactors in Style/GuardClause rule
Mostly readability related
2022-11-14 01:18:43 +01:00
Sijawusz Pur Rahnama
353c0a1583 Fix typo + add NOTE pragma 2022-11-14 01:05:13 +01:00
Sijawusz Pur Rahnama
5db7a2cf5a Turn on Style/PredicateName rule by default 2022-11-13 20:12:39 +01:00
Sijawusz Pur Rahnama
52bf0a5be4 Refactor Style/PredicateName rule
Do not report `has_<name>?` method names
2022-11-13 20:12:23 +01:00
Sijawusz Pur Rahnama
84540d2a22 Change to alternative approach skipping all macro contexts 2022-11-13 01:25:24 +01:00
Sijawusz Pur Rahnama
5491d31b5f Fix the edge case re: free var comparison 2022-11-13 01:24:59 +01:00
Sijawusz Pur Rahnama
aee5de517b Add Crystal::Path to the list of primitive types
So, the  comparisons like `Regex == 1=42` will also be detected.
2022-11-02 02:06:22 +01:00
Sijawusz Pur Rahnama
6bf8db81e3 Refactor Lint/StaticComparison to LiteralsComparison 2022-11-02 02:00:37 +01:00
Sijawusz Pur Rahnama
ea42911c3c Extend StaticComparison w/ support of === operator 2022-11-01 03:35:20 +01:00
Sijawusz Pur Rahnama
849be52618 Add Lint/StaticComparison rule 2022-11-01 03:34:28 +01:00
Sijawusz Pur Rahnama
63407c1bd1 Rename to Lint/NotNilAfterNoBang 2022-11-01 02:13:04 +01:00
Sijawusz Pur Rahnama
9515e624c3 Add Lint/NotNilWithNoBang rule 2022-10-31 14:17:47 +01:00
Sijawusz Pur Rahnama
8d4a4dfd7a
Merge pull request #290 from crystal-ameba/Sija/remove-trailing-dots-from-rule-descriptions
Remove trailing dots from rule descriptions
2022-10-30 23:51:32 +01:00
Sijawusz Pur Rahnama
038a3657c0
Merge pull request #288 from crystal-ameba/Sija/lint-not-nil-rule
Add `Lint/NotNil` rule
2022-10-30 23:50:38 +01:00
Sijawusz Pur Rahnama
d942524efa Remove trailing dots from rule descriptions 2022-10-30 21:53:09 +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
67356f246b Add Lint/NotNil rule 2022-10-30 21:36:47 +01:00
Sijawusz Pur Rahnama
6834292265
Merge pull request #287 from crystal-ameba/enable-lint-empty-expression-by-default
Enable `Lint/EmptyExpression` by default
2022-10-30 21:01:28 +01:00
Sijawusz Pur Rahnama
e54e5d0534 Fix Source::Corrector#remove_{leading,trailing} methods 2022-10-30 19:50:25 +01:00
Sijawusz Pur Rahnama
2d3bca7b1a
Enable Lint/EmptyExpression by default 2022-10-30 15:30:55 +01:00
Sijawusz Pur Rahnama
400954ebb5 Use String#hash instead of Digest::SHA1.hexdigest 2022-10-29 21:49:00 +02:00
Sijawusz Pur Rahnama
4700ae7649
Merge pull request #282 from crystal-ameba/Sija/fix-issue-270
Populate `Rule::Base+.parsed_doc` on compile time
2022-10-29 18:12:55 +02:00
Sijawusz Pur Rahnama
ca2c5a7273 Small refactor to DocFinder#visit 2022-10-29 18:07:52 +02:00
Sijawusz Pur Rahnama
d55b93c866 Rename read_rule_doc -> read_type_doc
Also, move the helper script into the `contrib` directory
2022-10-29 18:03:30 +02:00
Sijawusz Pur Rahnama
a9ae491aca
Merge pull request #280 from crystal-ameba/Sija-verbose-block-configuration-example-typo 2022-10-29 11:59:06 +02:00
Sijawusz Pur Rahnama
3d61254739 Populate Rule::Base+.parsed_doc on compile time 2022-10-29 01:35:34 +02:00
Sijawusz Pur Rahnama
ffc712a838 Reduce usage of Object#not_nil! 2022-10-29 00:03:39 +02:00
Sijawusz Pur Rahnama
4063290530
Fix typo in a Style/VerboseBlock configuration example 2022-10-28 23:48:47 +02:00
Vitalii Elenhaupt
60bf8e13ce
fix(style): properly tokenize in RedundantBegin rule 2022-10-14 21:09:30 +03:00
Vitalii Elenhaupt
d2fbf484f4
Crystal 1.6 support 2022-10-14 20:55:29 +03:00
Anton Maminov
1bef5fc5c1
fix restriction issue (#271)
Co-authored-by: Sijawusz Pur Rahnama <sija@sija.pl>
2022-08-01 23:50:30 +02:00
Sijawusz Pur Rahnama
fbd72a5171 Fix regression in AnyInsteadOfEmpty rule 2022-04-22 00:58:37 +02:00
Sijawusz Pur Rahnama
e2faffacfe
Merge branch 'master' into fix/crystal-nightly 2022-04-05 00:37:48 +02:00
Sijawusz Pur Rahnama
e6ad7c5d24 Fix bug in AST::Scope#in_macro? not taking account for Crystal::MacroFor 2022-04-04 02:05:13 +02:00
Sijawusz Pur Rahnama
71de3f0012 Cleanup method docs in AST::Scope 2022-04-04 02:05:13 +02:00
Sijawusz Pur Rahnama
614fcfa6a8 Skip macro scopes in ShadowingOuterLocalVar 2022-04-04 01:38:04 +02:00
Sijawusz Pur Rahnama
2e9ef7fcb2 Reword visit(node) methods comment in AST::NodeVisitor 2022-04-04 01:35:59 +02:00
Sijawusz Pur Rahnama
a38cfd1661 Refactor AST::ScopeVisitor similarly to AST::NodeVisitor 2022-04-04 01:35:32 +02:00
Sijawusz Pur Rahnama
3f7ade573a Add ability to skip some of the nodes in AST::ScopeVisitor 2022-04-04 01:34:34 +02:00
Sijawusz Pur Rahnama
353d09df29 Rename file according to the rule name 2022-04-04 00:42:22 +02:00
Vitalii Elenhaupt
8d4730182f
Rework breaking specs, break backward compatibility 2022-04-04 00:59:21 +03:00
Vitalii Elenhaupt
2f29999106
Return boolean 2022-04-03 19:43:51 +03:00
Vitalii Elenhaupt
087f470f15
Backward compatibility to Crystal 1.3 2022-04-03 19:17:47 +03:00
Vitalii Elenhaupt
7192b64df0
Fix rest of the specs 2022-03-11 18:00:25 +02:00
Vitalii Elenhaupt
1cfc926a28
Fix specs for tokenizer 2022-03-11 16:18:33 +02:00
Vitalii Elenhaupt
03adc20872
Pass on crystal-nightly 2022-03-11 14:15:05 +02:00
Sijawusz Pur Rahnama
dad72341cb
Merge pull request #258 from crystal-ameba/bump-large-numbers-min-int-digits
Bump default value of `LargeNumbers#int_min_digits` to 6
2022-03-08 14:48:45 +01:00
Sijawusz Pur Rahnama
1795bd2959 Bump default value of LargeNumbers#int_min_digits to 6
As most of the error codes are smaller than 6 digits
2022-03-08 14:42:32 +01:00
Sijawusz Pur Rahnama
9e81777e7e
Disable Style/LargeNumbers by default 2022-03-05 22:38:36 +01:00
Sijawusz Pur Rahnama
66ee7642cf Add Lint/DebugCalls rule 2021-12-31 16:44:02 +01:00
fn ⌃ ⌥
f288cc3c4f
Add Style/GuardClause rule (#254) 2021-12-09 21:33:47 +01: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 ⌃ ⌥
c9ba487373 Add custom NodeVisitor subclass for Style/VariableNames 2021-11-09 09:26:00 -08:00
fn ⌃ ⌥
72a3487bb6 Autocorrect Stye/WhileTrue 2021-11-08 14:24:11 -08:00
fn ⌃ ⌥
571969265f Convert Style/VerboseBlock spec 2021-11-08 14:24:11 -08:00
fn ⌃ ⌥
e93dfe9cdc Convert Style/VariableNames spec 2021-11-08 14:24:11 -08:00
fn ⌃ ⌥
e7cfe387d6 Autocorrect Stye/RedundantNext and Style/RedundantReturn 2021-11-08 14:07:35 -08:00
fn ⌃ ⌥
7b437fbd2f
Remove normalize parameter from expect_issue (#249)
* Add `normalize` parameter to `expect_correction`

* Convert Style/IsAFilter spec

* Revert "Add `normalize` parameter to `expect_correction`"

This reverts commit 4b67e4b900.

* Remove `normalize` parameter from `expect_issue`

* Require indentation if multiple issues on a single line

* Update `Style/IsAFilter` spec

* Update `ExpectIssue` documentation

* Add missing `expect_no_corrections`

* Use carets and space with issues at column 1 or 2

* Update `expect_issue` docs
2021-11-06 15:15:19 +02:00
Sijawusz Pur Rahnama
7cb0c15747
Merge pull request #248 from FnControlOption/autocorrect
Add autocorrect
2021-11-01 20:24:43 +01:00
fn ⌃ ⌥
c2aa2fedb6 Return source from expect_issue 2021-10-31 22:44:48 -07:00
fn ⌃ ⌥
470e41cb7b Raise error if attempting to both explain issue and autocorrect 2021-10-31 22:23:14 -07:00
fn ⌃ ⌥
a40fdee33f Revert "Add autocorrect checks to ExplainFormatter"
This reverts commit 1b6fe40a3b.
2021-10-31 22:12:21 -07:00
Vitalii Elenhaupt
3e1df339ae
Consistent parser options 2021-11-01 02:08:16 +02:00
fn ⌃ ⌥
61fc99e107 Inline the do_combine method 2021-10-27 11:19:15 -07:00
fn ⌃ ⌥
73e97ac42e Avoid using iterators and throw-away heap allocations 2021-10-27 11:08:18 -07:00
fn ⌃ ⌥
b7bb282b99 Apply suggestions from code review 2021-10-27 10:08:36 -07:00
fn ⌃ ⌥
d51ef27d54 Add remove_preceding, remove_leading, remove_trailing 2021-10-26 22:22:22 -07:00