Commit Graph

298 Commits

Author SHA1 Message Date
Sijawusz Pur Rahnama c89d32fcf6 Use issue expectation helpers in `Lint::UselessConditionInWhen` rule spec 2022-04-04 21:11:04 +02:00
Sijawusz Pur Rahnama c8daaf4324 Use issue expectation helpers in `Lint::UnneededDisableDirective` rule spec 2022-04-04 21:10:54 +02:00
Sijawusz Pur Rahnama 614fcfa6a8 Skip macro scopes in `ShadowingOuterLocalVar` 2022-04-04 01:38:04 +02:00
Sijawusz Pur Rahnama ad5d56b313 Use issue expectation helpers in `ShadowingOuterLocalVar` spec 2022-04-04 01:30:27 +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 1f4dda1c4a
Add conditional check using semantic version 2022-04-03 20:16:00 +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 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 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
Johannes Müller 63bafba72e
Fix unexpected token compiler error match 2021-11-29 22:04:59 +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 ⌃ ⌥ d06812ea8e Add `VariableNames` test for method with multiple instance vars 2021-11-09 11:52:31 -08: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 ⌃ ⌥ bd1a1a1fd4 Shorten long line in `Stye/VerboseBlock` spec 2021-11-09 09:07:19 -08:00
fn ⌃ ⌥ b32b00adad Convert remaining `Style` specs 2021-11-08 14:24:11 -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 ⌃ ⌥ 265bc51481 Convert `Style/UnlessElse` spec 2021-11-08 14:07:35 -08:00
fn ⌃ ⌥ 06c0887136 Convert `Style/TypeNames` spec 2021-11-08 14:07:35 -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
fn ⌃ ⌥ 78071722c4 Rename `s` to `source` 2021-11-01 08:55:48 -07:00
fn ⌃ ⌥ c2aa2fedb6 Return `source` from `expect_issue` 2021-10-31 22:44:48 -07:00
fn ⌃ ⌥ 437584f9db Raise error if infinite correction loop 2021-10-26 22:22:22 -07:00
fn ⌃ ⌥ 1d5f554e88 Apply suggestions from code review 2021-10-26 12:06:24 -07:00
fn ⌃ ⌥ f39a7a4cd4 Re-run autocorrect until all correctable issues have been corrected 2021-10-25 15:09:44 -07:00
fn ⌃ ⌥ 573881cb8a Autocorrect `Layout/TrailingBlankLines` partially 2021-10-25 12:38:29 -07:00
fn ⌃ ⌥ e5fb0526e0 Autocorrect `Style/LargeNumbers` 2021-10-25 12:38:29 -07:00
fn ⌃ ⌥ c1b4add094 Add `Source::Corrector` and `Source::Rewriter` 2021-10-25 12:38:29 -07:00
fn ⌃ ⌥ 9f0b9a709e Allow named replacements in expect_issue 2021-10-23 01:37:24 -07:00
fn ⌃ ⌥ 3d432fdee8
Add expect_issue and expect_no_issues spec helpers (#245) 2021-10-22 19:54:39 +02:00
fn ⌃ ⌥ 48b15b9bf8
Add Lint/AmbiguousAssignment rule (#244) 2021-10-19 11:44:41 +02:00
Sijawusz Pur Rahnama 43dea0e49d Fix typos throughout the codebase 2021-07-03 14:15:23 +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
Vitalii Elenhaupt a64f48b543
ShadowingOuterLocalVar while it is not in macro
closes #224
2021-04-18 20:55:10 +03:00
Vitalii Elenhaupt 9e2d4f1856
Disable performance rules for spec files
closes #220
2021-04-18 09:39:55 +03:00
Sijawusz Pur Rahnama 2694a0c865 Remove “join” from the list of trigger methods 2021-04-12 06:22:54 +02:00
Vitalii Elenhaupt 58d7775d65
Merge branch 'master' into develop 2021-04-04 21:08:02 +03:00
Sijawusz Pur Rahnama 8d21733b10 Skip macro code in Style/IsAFilter rule 2021-04-04 11:19:45 +02:00
Stephen Dolan 04ba9cd57a
Change Style/VerboseBlock - ExcludeOperators - setting default (#218) 2021-03-24 21:16:51 +01:00
Vitalii Elenhaupt 13605afe4a
Do not report IsAFilter if there is a block with multiple args 2021-03-23 20:57:50 +02:00
Sijawusz Pur Rahnama 56110b3883 Default to exclude_multiple_line_blocks in Style/VerboseBlock rule 2021-03-03 00:31:53 +01:00
Sijawusz Pur Rahnama 8f308e73e5 Add ~ as the prefix operator 2021-03-02 12:40:46 +01:00
Sijawusz Pur Rahnama 694c41650c Remove redundant check and add a few more test cases 2021-02-05 01:23:29 +01:00
Sijawusz Pur Rahnama a9d1b17deb Support named arguments in VerboseBlock#node_to_s 2021-02-05 01:23:29 +01:00
Sijawusz Pur Rahnama 16743a756c Add ExcludePrefixOperators option to Style/VerboseBlock rule 2021-02-04 21:59:23 +01:00
Sijawusz Pur Rahnama eed094b928 Fix couple of edge-cases in VerboseBlock rule 2021-02-04 21:59:23 +01:00
Sijawusz Pur Rahnama 4b7f3ba6ee Add MaxLineLength option to Style/VerboseBlock rule 2021-02-04 21:59:22 +01:00
Sijawusz Pur Rahnama a53d44617d Fix newly found issues 2021-02-04 21:59:22 +01:00
Sijawusz Pur Rahnama 0739fad670 Add Style/VerboseBlock rule 2021-02-04 21:59:22 +01: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 f8c22a6e77
Utilize Source#spec? 2021-02-03 17:25:46 +02:00
Vitalii Elenhaupt ecad80a96b
NewRule: SpecFocus
closes #172
2021-02-03 17:10:07 +02: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 fac8072ec1
Merge pull request #197 from crystal-ameba/feature/any-instead-of-empty
Add Performance/AnyInsteadOfEmpty rule
2021-01-28 10:28:30 +01:00
Sijawusz Pur Rahnama 7b3c814914 Fix newly found issues 2021-01-28 01:03:48 +01:00
Sijawusz Pur Rahnama d71091a40c Add Performance/AnyInsteadOfEmpty rule 2021-01-28 01:03:48 +01:00
Sijawusz Pur Rahnama 95d340c3ad Add Style/IsAFilter rule 2021-01-28 00:58:06 +01:00
Sijawusz Pur Rahnama ea98554191
Add support for showing end location marker (#200)
* Add support for showing end location marker

* Cleanup Reportable method definitions

There’s no need for double splats, since they mess up method resolution, and obscure the actual - single (!) - argument - `status`, so… be gone

Also, all of the helpers return the constructed `Issue` like a behaving good methods.

* Refactor Util#affected_code

* Increase max length of trimmed lines to 120 characters

* Refactor Issue to use enum instead of a symbol for #status

* Optimize Reportable#valid?

* Add spec coverage for newly added Util methods

* Refactor DotFormatter a bit

Make text format moar in line with Crystal spec runner.

* Update README.md
2021-01-26 08:38:19 +02:00
Sijawusz Pur Rahnama 6acb8ad2eb ChainedCallsWithNoBang -> ChainedCallWithNoBang 2021-01-22 17:24:45 +01:00
Sijawusz Pur Rahnama d3b952f58a Add Performance/ChainedCallsWithNoBang rule 2021-01-21 12:47:10 +01:00
Vitalii Elenhaupt 7aa7efd4bd Do not report if variable is assigned and referenced in MacroFor/MacroIf/MacroExpression
closes #194
2021-01-20 13:14:42 +02:00
Sijawusz Pur Rahnama ad8f570a04 Change Rule to class 2021-01-19 22:17:17 +01:00
Sijawusz Pur Rahnama ddaa58f475
Merge pull request #192 from crystal-ameba/feature/flatten-after-map-rule
Add Performance/FlattenAfterMap rule
2021-01-19 22:16:10 +01:00
Sijawusz Pur Rahnama 23b4b4c4f0 Add Performance/FlattenAfterMap rule 2021-01-18 18:04:54 +01:00
Sijawusz Pur Rahnama b7286dc673 Add Performance/CompactAfterMap rule 2021-01-18 18:04:12 +01:00
Sijawusz Pur Rahnama d2fa75280f
Extend JoinAfterMap to check also calls to `sum/product` and rename it to MapInsteadOfBlock (#190) 2021-01-18 17:42:50 +02: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
Sijawusz Pur Rahnama a892cd43b0 Add Performance/JoinAfterMap rule 2021-01-17 16:57:15 +01:00
Sijawusz Pur Rahnama 1a091c1f1a
Optimize rules (#185)
* Replace pointless interpolations with actual values

* Rules optimizations

* Stylistic refactors

* Remove extraneous blank lines

* Remove some instances of .not_nil! usage
2021-01-17 14:16:04 +02:00
Sijawusz Pur Rahnama c4d34d74d8
Add support for showing code context lines (#181)
* Add support for showing code context lines

* Show context lines only in ExplainFormatter

* Add spec coverage for context_lines option
2021-01-12 17:20:43 +02:00
Sijawusz Pur Rahnama 2eff832669 Add --rules switch to the CLI 2021-01-09 21:01:04 +01: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 7f501a1df5
RedundantStringCoercion: do not report to_s with named args
closes #160
2020-06-24 09:26:03 +03:00
Vitalii Elenhaupt c3260c1740
Move to YAML::Serializable 2020-06-15 14:29:49 +03:00
Vladislav Trotsenko bdeb6e3391
Feature/Layout trailing lines, final newline checkup (#152) 2020-05-05 16:52:24 +03:00
Matheus Richard f1adf14527
Handle duplicated files on GlobUtils (#151)
* Handle duplicated files on GlobUtils

* Update src/ameba/glob_utils.cr

Co-Authored-By: George Dietrich <yomoejoe@gmail.com>

Co-authored-by: George Dietrich <yomoejoe@gmail.com>
2020-04-19 11:52:15 +03:00
Vitalii Elenhaupt 478da94c20
Allow constants to be in PascalCase (i.e. Log, SuperConstant)
closes #148
2020-04-13 09:38:05 +03:00
Sijawusz Pur Rahnama 1a25583036
Make InlineComments::COMMENT_DIRECTIVE_REGEX more strict (#146) 2020-04-11 09:55:41 +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
Vitalii Elenhaupt 99c65b5a28
New rule: Lint/BadDirective (#143)
* New rule: Lint/BadDirective

* Address PR feedback
2020-04-06 15:10:34 +03:00
Vitalii Elenhaupt db6b54e63c
New rule: Style/IsANil 2020-03-29 19:45:13 +03:00
Vitalii Elenhaupt 04497feeed
Lint/LiteralInInterpolation: properly report node position 2020-03-27 19:44:04 +02:00
Brian J. Cardiff 24b9156f19 Avoid creating an invalid RegexLiteral 2020-03-27 09:21:13 -03:00
Vitalii Elenhaupt 59bc021e57
Do not report if Object#to_s is called without receiver 2020-03-26 23:51:54 +02:00
Vitalii Elenhaupt ff1669ebe8
New rule: Lint/RedundantStringCoercion 2020-03-26 16:26:27 +02:00
Vitalii Elenhaupt a6958ab455
New rule: EmptyLoop 2020-03-26 10:27:00 +02:00