Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ jobs:
- '3.2'
- '3.3'
- '3.4'
- '4.0'
experimental: [false]
include:
- ruby-version: 'ruby-head'
Expand Down Expand Up @@ -61,6 +62,7 @@ jobs:
- '3.2'
- '3.3'
- '3.4'
- '4.0'
experimental: [false]
include:
- ruby-version: 'ruby-head'
Expand Down Expand Up @@ -91,6 +93,7 @@ jobs:
- '3.2'
- '3.3'
- '3.4'
- '4.0'
experimental: [false]
include:
- ruby-version: 'ruby-head'
Expand Down Expand Up @@ -121,6 +124,7 @@ jobs:
- '3.2'
- '3.3'
- '3.4'
- '4.0'
experimental: [false]
include:
- ruby-version: 'ruby-head'
Expand Down Expand Up @@ -149,7 +153,7 @@ jobs:
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: '3.4'
ruby-version: '4.0'
bundler-cache: true
cache-version: 1
continue-on-error: ${{ matrix.experimental }}
Expand Down
90 changes: 43 additions & 47 deletions .rubocop.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,62 +13,25 @@ AllCops:
- 'gemfiles/*'
TargetRubyVersion: 3.2

Metrics/BlockLength:
Enabled: false

Metrics/MethodLength:
Gemspec/DevelopmentDependencies:
Exclude:
- "lib/rubycritic/configuration.rb"

Layout/LineLength:
Max: 120

Style/Documentation:
Enabled: false

Style/HashSyntax:
EnforcedShorthandSyntax: either

Security/MarshalLoad:
Enabled: false
Include:
- 'lib/rubycritic/serializer.rb'

Style/RedundantFreeze:
Enabled: false
Include:
- 'lib/rubycritic/core/smell.rb'
- 'lib/rubycritic/generators/json/simple.rb'
- 'lib/rubycritic/revision_comparator.rb'
- 'lib/rubycritic/source_control_systems/perforce.rb'
- 'lib/rubycritic/source_locator.rb'
- 'lib/rubycritic/version.rb'
- 'rubycritic.gemspec'

Layout/BlockAlignment:
Enabled: false
Exclude:
- 'features/step_definitions/rake_task_steps.rb'

Naming/RescuedExceptionsVariableName:
Exclude:
- 'lib/rubycritic/analysers/coverage.rb'
- 'lib/rubycritic/cli/application.rb'
- 'lib/rubycritic/reporter.rb'

Lint/EmptyClass:
Exclude:
- 'test/lib/rubycritic/reporter_test.rb'
Layout/LineLength:
Max: 120

Lint/ConstantDefinitionInBlock:
Exclude:
- 'test/lib/rubycritic/reporter_test.rb'

Style/OpenStructUse:
Lint/EmptyClass:
Exclude:
- 'test/lib/rubycritic/generators/turbulence_test.rb'
- 'test/lib/rubycritic/generators/console_report_test.rb'
- 'test/lib/rubycritic/core/analysed_module_test.rb'
- 'test/analysers_test_helper.rb'
- 'test/lib/rubycritic/reporter_test.rb'

Lint/MissingSuper:
Exclude:
Expand All @@ -81,10 +44,6 @@ Lint/MissingSuper:
- 'lib/rubycritic/generators/html/code_index.rb'
- 'lib/rubycritic/generators/html/line.rb'

Gemspec/DevelopmentDependencies:
Exclude:
- 'rubycritic.gemspec'

Lint/StructNewOverride:
Exclude:
- 'lib/rubycritic/source_control_systems/git/churn.rb'
Expand All @@ -93,10 +52,47 @@ Metrics/AbcSize:
Exclude:
- 'lib/rubycritic/configuration.rb'

Metrics/BlockLength:
Enabled: false

Metrics/MethodLength:
Exclude:
- 'lib/rubycritic/configuration.rb'

Naming/RescuedExceptionsVariableName:
Exclude:
- 'lib/rubycritic/analysers/coverage.rb'
- 'lib/rubycritic/cli/application.rb'
- 'lib/rubycritic/reporter.rb'

Security/MarshalLoad:
Enabled: false
Include:
- 'lib/rubycritic/serializer.rb'

Style/Documentation:
Enabled: false

Style/HashSyntax:
EnforcedShorthandSyntax: either

Style/OpenStructUse:
Exclude:
- 'test/lib/rubycritic/generators/turbulence_test.rb'
- 'test/lib/rubycritic/generators/console_report_test.rb'
- 'test/lib/rubycritic/core/analysed_module_test.rb'
- 'test/analysers_test_helper.rb'

Style/RedundantAssignment:
Exclude:
- 'lib/rubycritic/configuration.rb'

Style/RedundantFreeze:
Enabled: false
Include:
- 'lib/rubycritic/core/smell.rb'
- 'lib/rubycritic/generators/json/simple.rb'
- 'lib/rubycritic/revision_comparator.rb'
- 'lib/rubycritic/source_control_systems/perforce.rb'
- 'lib/rubycritic/source_locator.rb'
- 'lib/rubycritic/version.rb'
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,12 @@
* [CHORE] ...
* [FEATURE] ...

* [CHORE] Bump fakefs (by [@faisal][])
* [CHORE] In RubyCritic::Generator::Html::Line, require cgi/escape rather than cgi, as the latter is removed from Ruby 4.0 (by [@faisal][])
* [CHORE] In RubyCritic::Generator::Html::Line, require cgi/escape rather than cgi, as the latter is removed from Ruby 4.0 (by [@faisal][])
* [CHORE] Run Markdown linting in CI using Ruby 4.0 (by [@faisal][])
* [CHORE] Start testing library with Ruby 4.0 (by [@etagwerker][])
* [CHORE] Sorted cops in .rubocop.yml to make it easier for maintainers to add or modify cop settings, and unified duplicate Metrics/MethodLength settings. (by [@faisal][])
* [CHANGE] Drop support for Ruby 3.1.x and JRuby 9.4 (by [@faisal][])
* [CHANGE] Add CI support for JRuby 10.0 (by [@faisal][])
* [CHANGE] Bump cucumber dependency (by [@faisal][])
Expand Down
5 changes: 4 additions & 1 deletion lib/rubycritic/analysers/smells/reek.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,10 @@ class ReekSmells
include Colorize

def initialize(analysed_modules)
@analysed_modules = analysed_modules.reject { Reek.configuration.path_excluded?(_1.pathname) }
@analysed_modules = analysed_modules.reject do |mod|
path_string = mod.pathname.to_s
Reek.configuration.path_excluded?(Pathname.new(path_string))
end
end

def run
Expand Down
2 changes: 1 addition & 1 deletion lib/rubycritic/generators/html/line.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# frozen_string_literal: true

require 'cgi'
require 'cgi/escape'
require 'rubycritic/generators/html/base'

module RubyCritic
Expand Down
3 changes: 1 addition & 2 deletions rubycritic.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,7 @@ Gem::Specification.new do |spec|
end
spec.add_development_dependency 'cucumber', '~> 10.2.0', '>= 10.1.0'
spec.add_development_dependency 'diff-lcs', '~> 1.3'
spec.add_development_dependency 'fakefs', '~> 3.0.0'
spec.add_development_dependency 'irb'
spec.add_development_dependency 'fakefs', '~> 3.2.0'
spec.add_development_dependency 'mdl', '~> 0.15.0', '>= 0.12.0'
spec.add_development_dependency 'minitest', '~> 6.0.0'
spec.add_development_dependency 'minitest-around', '~> 0.6.0'
Expand Down
11 changes: 11 additions & 0 deletions test/fakefs_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -24,3 +24,14 @@ def home(user = Etc.getlogin)
end
end
FakeFS::Dir.singleton_class.prepend(FakeFSPatch)

# Patch FakeFS::Pathname to include the path method for Ruby 4.0.0 compatibility
# This is needed because Reek's configuration internally calls Pathname#== which
# requires the path method to be present
module FakeFS
class Pathname
def path
to_s
end
end
end
Loading