File Manager
rules:
- id: rbs.no_mark
pattern: 💪👽🚨
message: Do you forget to delete `arglists` section?
glob:
- "{core,stdlib}/**/*.rbs"
fail:
- |
# arglists 💪👽🚨 << Delete this section
# File.absolute_path?(file_name) -> true or false
#
- id: rbs.no_arg
pattern:
regexp: arg\d+
message: |
Stop using parameter names like `arg0` or `arg1`
The parameter names like `arg0` or `arg1` is not informative enough.
Try finding good parameter names from documents or arglists.
If you cannot find a good name, just delete the name of the parameters.
justification:
- Documents (comments) may contain that pattern.
glob:
- "{core,stdlib}/**/*.rbs"
fail:
- "def `send`: (String | Symbol arg0, *untyped arg1) -> untyped"
pass:
- "def `send`: (String | Symbol, *untyped) -> untyped"
- id: rbs.prefer_boolish
pattern:
- regexp: '\([^(]*\bbool\b[^\n]*\)'
- token: "-> bool }"
message: |
Prefer `boolish` over `bool` for method arguments and block return values
See the doc below:
https://github.com/ruby/rbs/blob/78d04a2db0f1c4925d2b13c2939868edf9465d6c/docs/syntax.md#bool-or-boolish
glob:
- "**/*.rbs"
justification:
- When you strictly want `true | false`.
pass:
- "(arg: boolish)"
- "{ () -> boolish }"
fail:
- "(arg: bool)"
- "{ () -> bool }"
- id: deprecate_stdlib_test
pattern:
token: < StdlibTest
message: |
StdlibTest is deprecated
We recommend writing tests based on `TypeAssertions` and `#assert_send_type`.
justification:
- When you are updating existing tests.
- When you are writing tests for callback, which cannot be done with `#assert_send_type`.
glob:
- "test/stdlib/**/*_test.rb"
fail:
- |
class IntegerTest < StdlibTest
target Integer
def test_plus
1 + 2
end
end
pass:
- |
class IntegerTest < Test::Unit::TestCase
include TypeAssertions
testing "Integer"
def test_plus
assert_send_type "(::Integer) -> ::Integer",
1, :+, 2
end
end
- id: no_trailing_whitespace
pattern:
regexp: '[ \t]+$'
message: |
Trim trailing whitespaces
glob:
- '**/*.rb'
- '**/*.rbs'
- '**/*.md'
justification:
- Let the maintainers know if it is an autogenerated files.
pass:
- "Hello world"
- "Hello\nworld"
- "Hello\n\nworld"
fail:
- "Hello world "
- "Hello \nworld"
File Manager Version 1.0, Coded By Lucas
Email: hehe@yahoo.com