# We will use cops to detect bugs in an early stage # Feel free to use .rubocop_todo.yml by --auto-gen-config inherit_from: .rubocop_todo.yml require: - rubocop-performance - rubocop-rubycw - rubocop-rake AllCops: # drop support for 2.7 (since 0.3.0) TargetRubyVersion: 3.0 # accept new cops if any NewCops: enable # === # Globally I change these 3 cops from default # alias is hard to see separately Style/Alias: EnforcedStyle: prefer_alias_method # For consistency and portability Style/TrailingCommaInArrayLiteral: EnforcedStyleForMultiline: comma Style/TrailingCommaInHashLiteral: EnforcedStyleForMultiline: comma # Should not set for Style/TrailingCommaInArguments # === # To let you know the possibility of refactoring === # Max: 120 # This cop supports safe autocorrection (--autocorrect). # Configuration parameters: AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, AllowedPatterns, IgnoredPatterns. # URISchemes: http, https Layout/LineLength: Max: 90 Exclude: - 'test/**/*' # EnforcedStyle: aligned Layout/MultilineMethodCallIndentation: EnforcedStyle: indented_relative_to_receiver # Disabled to define Vector operators # Offense count: 38 Lint/BinaryOperatorWithIdenticalOperands: Exclude: - 'test/test_vector_binary_element_wise.rb' Lint/Debugger: Exclude: - 'bin/example' # Need for test with empty block # Offense count: 1 # Configuration parameters: AllowComments, AllowEmptyLambdas. Lint/EmptyBlock: Exclude: - 'test/test_group.rb' # avoid unused variable asignment # Offense count: 6 Lint/UselessAssignment: Exclude: - 'test/**/*' # <= 17 satisfactory # 18..30 unsatisfactory # > 30 dangerous # Offense count: 28 # Configuration parameters: AllowedMethods, AllowedPatterns, IgnoredMethods, CountRepeatedAttributes. Metrics/AbcSize: Max: 30 CountRepeatedAttributes: false AllowedMethods: [ 'join', # 51.87 'dataframe_info', # 46.5 'format_table', # 84.62 'to_long', # 33.66 'to_wide', #38.22 'slice_by', # 38.29 'remove', # 44.42 'drop', # 31.42 '[]', # 33.76 'split', # 37.35 'aggregate', # 38.13 ] # Max: 25 # Offense count: 57 # Configuration parameters: CountComments, CountAsOne, ExcludedMethods, AllowedMethods, AllowedPatterns, IgnoredMethods. # AllowedMethods: refine Metrics/BlockLength: Max: 25 Exclude: - 'test/**/*' - 'lib/red_amber/helper.rb' # 32 # It's ok if class is big # Max: 100 # Offense count: 15 # Configuration parameters: CountComments, CountAsOne. Metrics/ClassLength: Exclude: - 'test/**/*' - 'lib/red_amber/data_frame.rb' # 162 - 'lib/red_amber/group.rb' # 105 - 'lib/red_amber/subframes.rb' # 110 - 'lib/red_amber/vector.rb' # 152 - 'lib/red_amber/vector_binary_element_wise.rb' # 109 # Only for monitoring. I will measure by PerceivedComplexity. # Max: 7 # Offense count: 16 # Configuration parameters: AllowedMethods, AllowedPatterns, IgnoredMethods. Metrics/CyclomaticComplexity: Max: 12 AllowedMethods: [ 'split', # 33 'format_table', # 21 'normalize_element', # 17 'slice_by', # 16 'assign_update', # 14 'join', # 14 'parse_range', # 14 'remove', # 14 '[]', # 13 'drop', # 13 'aggregate', # 13 ] # Max: 10 # Offense count: 34 # Configuration parameters: CountComments, CountAsOne, ExcludedMethods, AllowedMethods, AllowedPatterns, IgnoredMethods. Metrics/MethodLength: Max: 30 AllowedMethods: [ 'join', # 47 'dataframe_info', # 33 'format_table', # 53 'slice_by', # 38 'assign_update', # 35 'drop', # 32 'aggregate', # 31 ] # Max: 100 # Offense count: 5 # Configuration parameters: CountComments, CountAsOne. Metrics/ModuleLength: Max: 100 Exclude: - 'lib/red_amber/data_frame_combinable.rb' # Max: 149 - 'lib/red_amber/data_frame_displayable.rb' # Max: 226 - 'lib/red_amber/data_frame_selectable.rb' # Max: 175 - 'lib/red_amber/data_frame_variable_operation.rb' # Max: 171 - 'lib/red_amber/vector_functions.rb' # Max: 165 - 'lib/red_amber/vector_selectable.rb' # Max: 104 - 'lib/red_amber/vector_updatable.rb' # Max: 103 # Max: 5 # Offense count: 1 # Configuration parameters: CountKeywordArgs, MaxOptionalParameters. Metrics/ParameterLists: Exclude: - 'lib/red_amber/data_frame_combinable.rb' # Max: 6, at 'join' # Max: 8 # Offense count: 15 # Configuration parameters: AllowedMethods, AllowedPatterns, IgnoredMethods. Metrics/PerceivedComplexity: Max: 10 AllowedMethods: [ 'format_table', # 22 'slice_by', # 20 'normalize_element', # 17 'assign_update', # 15 'parse_range', # 15 'join', # 14 'remove', # 14 'split', # 14 'dataframe_info', # 13 'replace', # 13 'drop', # 12 'initialize', # 12 'aggregate', # 12 '[]', # 11 'filters', # 11 'html_table', # 11 'slice', # 11 'pick', # 11 ] # Offense count: 1 # Configuration parameters: ExpectMatchingDefinition, CheckDefinitionPathHierarchy, CheckDefinitionPathHierarchyRoots, Regex, IgnoreExecutableScripts, AllowedAcronyms. # CheckDefinitionPathHierarchyRoots: lib, spec, test, src # AllowedAcronyms: CLI, DSL, ACL, API, ASCII, CPU, CSS, DNS, EOF, GUID, HTML, HTTP, HTTPS, ID, IP, JSON, LHS, QPS, RAM, RHS, RPC, SLA, SMTP, SQL, SSH, TCP, TLS, TTL, UDP, UI, UID, UUID, URI, URL, UTF8, VM, XML, XMPP, XSRF, XSS Naming/FileName: Exclude: - 'lib/red-amber.rb' # Necessary to define is_na, is_in, etc. # Offense count: 3 # Configuration parameters: NamePrefix, ForbiddenPrefixes, AllowedMethods, MethodDefinitionMacros. # NamePrefix: is_, has_, have_ # ForbiddenPrefixes: is_, has_, have_ # AllowedMethods: is_a? # MethodDefinitionMacros: define_method, define_singleton_method Naming/PredicateName: Exclude: - 'lib/red_amber/vector.rb' - 'lib/red_amber/vector_functions.rb' - 'lib/red_amber/vector_selectable.rb' # avoid unused variable asignment Rubycw/Rubycw: Exclude: - 'test/**/*' - 'bin/example' # Offense count: 16 # This cop supports safe autocorrection (--autocorrect). Style/OperatorMethodCall: Exclude: - 'test/test_vector_binary_element_wise.rb' # Necessary to test when range.end == -1 # Offense count: 2 # This cop supports unsafe autocorrection (--autocorrect-all). Style/SlicingWithRange: Exclude: - 'test/test_data_frame_selectable.rb' Style/MixinUsage: Exclude: - 'bin/example' # Necessary to Vector < 0 element-wise comparison # Offense count: 5 # This cop supports unsafe autocorrection (--autocorrect-all). # Configuration parameters: EnforcedStyle, AllowedMethods, AllowedPatterns, IgnoredMethods. # SupportedStyles: predicate, comparison Style/NumericPredicate: Exclude: - 'lib/red_amber/data_frame_selectable.rb' - 'lib/red_amber/vector_selectable.rb'