Commit Graph

579 Commits

Author SHA1 Message Date
Sijawusz Pur Rahnama 6e5a9a60b3 Refactor `Lint::Documentation` and ignore macro hooks 2023-05-29 17:09:39 +02:00
Sijawusz Pur Rahnama 09fdac6be9 Refactor `Lint::Documentation` rule to use a custom visitor 2023-05-29 16:33:45 +02:00
Sijawusz Pur Rahnama 1a9a58b3cd Add `Lint/Documentation` rule 2023-05-29 16:32:51 +02:00
Sijawusz Pur Rahnama d0d8b18c83
Raise when empty severity provided to `SeverityYamlConverter.from_yaml` 2023-05-09 13:02:10 +02:00
Sijawusz Pur Rahnama 14f6ba0c0b
Merge pull request #323 from crystal-ameba/Sija/lint-not-nil-after-no-bang-reports-rindex-calls
Make `Lint/NotNilAfterNoBang` report calls to `#rindex`
2023-05-01 11:16:42 +02:00
Billy.Zheng 239f64c278 Refactor 2023-03-09 12:41:40 +08:00
Billy.Zheng d45285d1c9 Skip all config when use with --gen-config. 2023-03-08 22:34:46 +08:00
Sijawusz Pur Rahnama 4c59858f25 Apply code review suggestions 2023-03-06 21:22:47 +01:00
Sijawusz Pur Rahnama 8d56f22af1 Document the new `Config.load` behaviour 2023-03-06 21:19:47 +01:00
Sijawusz Pur Rahnama e481a8d139 Use `FILENAME` constant consistently 2023-03-06 20:54:35 +01:00
Sijawusz Pur Rahnama 102e2834b6 Honor `XDG_CONFIG_HOME` ENV variable
Following XDG Spec: https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
2023-03-06 20:54:35 +01:00
Sijawusz Pur Rahnama 749da0984c Rename `Config::PATH` to `Config::DEFAULT_PATH` 2023-03-06 20:54:35 +01:00
Sijawusz Pur Rahnama 9534104942 Support hierarchical loading of the config file 2023-03-06 20:54:17 +01:00
Vitalii Elenhaupt 81177dc7e4
Merge pull request #356 from crystal-ameba/chore/crystal-nightly
chore: fix crystal-nightly compatibility
2023-02-19 18:06:31 +02:00
Vitalii Elenhaupt d03f058cae
Add semicolon to the error message 2023-02-19 17:39:25 +02:00
Vitalii Elenhaupt be8862837f
Improve error message reported to end user 2023-02-19 14:45:07 +02:00
Vitalii Elenhaupt 63a54986dd Reformat code example 2023-02-19 13:24:54 +01:00
Vitalii Elenhaupt c9c5fb655f
fix(style): correct typo in rule doc 2023-02-19 13:47:17 +02:00
Vitalii Elenhaupt 17e9566c7e
fix(lint): Lint/UnusedBlockArgument is triggered by abstract def
closes #352
2023-02-19 10:51:52 +02:00
Vitalii Elenhaupt 031c1daf58
chore: fix crystal-nightly compatibility 2023-02-19 09:30:05 +02: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
Vitalii Elenhaupt 14a9ec3a75
Incorporate changes for shadowing outer local var 2023-02-04 20:53:41 +02:00
Vitalii Elenhaupt ddbcf5cb3f
fix(lint): useless assignment for type definition
closes #342
2023-02-04 16:57:46 +02:00
Sijawusz Pur Rahnama ce4dd7236a Make `Lint/NotNilAfterNoBang` report calls to `#rindex` 2023-01-10 13:37:28 +01:00
Sijawusz Pur Rahnama 3b79392ef2 Simplify implementation of `Lint/EmptyExpression` rule 2023-01-10 13:10:05 +01:00
Sijawusz Pur Rahnama 6f0b6ffcd0 Remove buggy auto-correction from `Performance/AnyInsteadOfEmpty` rule 2023-01-04 02:40:07 +01:00
Sijawusz Pur Rahnama caaf803ecd Tweak reported location for `Style/UnlessElse` 2022-12-23 14:46:45 +01:00
Sijawusz Pur Rahnama bbbfdfc5a2 Tweak reported location for `Lint/UnusedBlockArgument` 2022-12-23 14:46:23 +01:00
Sijawusz Pur Rahnama 2d9e328d97
Merge pull request #325 from FnControlOption/unless_else
Add autocorrect for `Style/UnlessElse`
2022-12-22 21:43:49 +01:00
Sijawusz Pur Rahnama 2cedd72b09 Apply review sugggestions 2022-12-22 19:18:27 +01:00
Sijawusz Pur Rahnama 4f8b79ec6b
Merge pull request #324 from crystal-ameba/Sija/extend-several-rule-with-corrections
Extend `Lint/UnusedArgument` and `Lint/UnusedBlockArgument` rules with corrections
2022-12-22 18:42:35 +01:00
Sijawusz Pur Rahnama 3586b4242f Extend `Lint/UnusedBlockArgument` rule with corrections 2022-12-22 17:15:46 +01:00
Sijawusz Pur Rahnama f26cd7f823 Extend `Lint/UnusedArgument` rule with corrections 2022-12-22 17:15:46 +01:00
Sijawusz Pur Rahnama b9bc5aaab2
Merge pull request #327 from crystal-ameba/Sija/specs-cleanup 2022-12-22 12:08:44 +01:00
Sijawusz Pur Rahnama 206b5ab604 Refactor: `Source#correct` -> `Source#correct?` 2022-12-20 17:04:34 +01:00
Sijawusz Pur Rahnama cabf203e0d
Merge pull request #326 from crystal-ameba/Sija/lint-formatting 2022-12-20 16:20:48 +01:00
Sijawusz Pur Rahnama 47b92fbb76 Fix newly found issues 2022-12-20 15:31:14 +01:00
Sijawusz Pur Rahnama 597372c645 Add `Lint/MissingBlockArgument` rule 2022-12-20 15:31:14 +01:00
Sijawusz Pur Rahnama 3bc8bda008 Add `Lint/Formatting` rule 2022-12-20 04:10:56 +01:00
Sijawusz Pur Rahnama 4e3caf2986 Few tweaks and readability refactors 2022-12-20 03:26:13 +01:00
Sijawusz Pur Rahnama ab059616b5 Switch from `Hash` to `NamedTuple` for `AmbiguousAssignment::MISTAKES` 2022-12-20 03:25:14 +01:00
Sijawusz Pur Rahnama 8112dddc8f Specs cleanup 2022-12-20 03:25:06 +01:00
fn ⌃ ⌥ d7795c0d7d Add autocorrect for `Style/UnlessElse` 2022-12-19 06:40:28 -08:00
Sijawusz Pur Rahnama bb0c0eeec6 Consider `previous_def` implicitly accessing variables, in the same way as `super` does 2022-12-15 18:35:16 +01:00
Sijawusz Pur Rahnama b6f3d41211 Small refactor 2022-12-15 18:35:16 +01:00
Sijawusz Pur Rahnama 7f6bd2289e Do not report unused block arguments in `Lint/UnusedArgument` rule 2022-12-15 18:35:16 +01:00
Sijawusz Pur Rahnama 858557bc07 Add `Lint/UnusedBlockArgument` rule 2022-12-15 18:35:16 +01:00
Sijawusz Pur Rahnama 6ffb635dcc Add `Scope#yields?` 2022-12-15 18:35:16 +01:00
Sijawusz Pur Rahnama 9df66e890b Do not report anonymous block arguments in `Lint/UnusedArgument` 2022-12-12 18:21:19 +01:00
Sijawusz Pur Rahnama 4d9cd4d56c Fix typo 2022-12-10 00:24:04 +01:00
Sijawusz Pur Rahnama a8fca61b22 Doc tweaks 2022-12-10 00:20:20 +01:00
Sijawusz Pur Rahnama 2dc21a00d9 Remove treating paths as literals in `AST::Util#literal?` & friends 2022-12-08 17:47:22 +01:00
Sijawusz Pur Rahnama 0bd4ed0c45 Do not treat paths as literals in `Lint/LiteralAssignmentsInExpressions` 2022-12-08 17:47:22 +01:00
Sijawusz Pur Rahnama db3ef762b9 Uncomment forgotten line 2022-12-08 17:47:22 +01:00
Sijawusz Pur Rahnama 07ce595ef2 Readability refactors 2022-12-08 17:47:22 +01:00
Sijawusz Pur Rahnama 784e3ac616 Use bang variants in couple of places more 2022-12-08 13:59:42 +01:00
Sijawusz Pur Rahnama 5ab4b05add Fix incorrect `Reportable#add_issue(&)` definition 2022-12-08 13:59:03 +01:00
Sijawusz Pur Rahnama 7d88455b7f Add corrector to the `Style/IsANil` rule 2022-12-08 13:58:35 +01:00
Sijawusz Pur Rahnama 2cb8c1381f Don’t treat crystal paths as literals in `Lint/LiteralsComparison` 2022-12-08 13:55:29 +01:00
Sijawusz Pur Rahnama cdf0405496 Refactor `Style/IsANil` rule to use newly added `path_named?` helper 2022-12-08 02:16:16 +01:00
Sijawusz Pur Rahnama f45d6a2ef0 Fix newly found issue 2022-12-08 02:16:16 +01:00
Sijawusz Pur Rahnama 1524aad299 Add `Style/QueryBoolMethods` rule 2022-12-08 02:16:16 +01:00
Sijawusz Pur Rahnama 4dd62a3ed1 Colorize also the code in single backticks 2022-11-28 11:49:26 +01:00
Sijawusz Pur Rahnama 2113e8c055 Refactor `MacroReferenceFinder` class a bit 2022-11-28 11:38:41 +01:00
Sijawusz Pur Rahnama a8f953a2b2 Compress identical method definitions 2022-11-28 11:38:41 +01:00
Sijawusz Pur Rahnama b79f3e6e07 Minor refactors in `Style/LargeNumbers` rule 2022-11-28 11:38:41 +01:00
Sijawusz Pur Rahnama 134963ece7 Minor details 2022-11-28 11:38:41 +01:00
Sijawusz Pur Rahnama 523a622b34 Remove leftover from some merge/rebase gone wrong 2022-11-28 11:38:41 +01:00
Sijawusz Pur Rahnama 5502f0f8d1 Small refactor using `Object#in?` 2022-11-28 11:38:41 +01:00
Sijawusz Pur Rahnama 748cab29b4 Remove redundant empty comment lines 2022-11-28 11:38:41 +01:00
Sijawusz Pur Rahnama 629e65127d `if … == nil` -> `unless …` 2022-11-28 11:38:41 +01:00
Sijawusz Pur Rahnama adff510cb6 Autocasting will do the work 2022-11-28 11:38:41 +01:00
Sijawusz Pur Rahnama 33ef9c6293 Refactor `ExplainFormatter` 2022-11-28 11:38:41 +01:00
Sijawusz Pur Rahnama f9b05a309e Redundant whitespace before nl 2022-11-28 11:25:21 +01:00
Sijawusz Pur Rahnama 0f893971dc Avoid one-letter names if possible 2022-11-28 11:25:21 +01:00
Sijawusz Pur Rahnama d19d3b78c4 Implement `Severity#color` property 2022-11-28 06:07:19 +01:00
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