Skip to content

Commit

Permalink
Handle frozen source code string literals
Browse files Browse the repository at this point in the history
This change is needed to stop Ruby 3.4 emitting warnings about string
literals being frozen in the future.
  • Loading branch information
mvz committed Feb 17, 2025
1 parent 2dd79bc commit 42ede1e
Show file tree
Hide file tree
Showing 103 changed files with 213 additions and 12 deletions.
7 changes: 0 additions & 7 deletions .rubocop.yml
Original file line number Diff line number Diff line change
Expand Up @@ -84,13 +84,6 @@ RSpec/ExampleLength:
Style/AndOr:
EnforcedStyle: conditionals

# Require comment for files in lib and bin
Style/FrozenStringLiteralComment:
Include:
- 'bin/*'
- 'lib/**/*'
EnforcedStyle: always

# Allow multiline block chains
Style/MultilineBlockChain:
Enabled: false
Expand Down
2 changes: 2 additions & 0 deletions .simplecov
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

SimpleCov.start do
track_files 'lib/**/*.rb'
add_filter 'lib/reek/version.rb' # version.rb is loaded too early to test
Expand Down
2 changes: 2 additions & 0 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

source 'https://rubygems.org'

gemspec
Expand Down
2 changes: 2 additions & 0 deletions Rakefile
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require 'bundler/gem_tasks'
require 'rake/clean'

Expand Down
2 changes: 2 additions & 0 deletions docs/templates/default/docstring/setup.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

def init
super
return unless show_api_marker_section?
Expand Down
2 changes: 2 additions & 0 deletions docs/yard_plugin.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require 'yard'

# Template helper to modify processing of links in HTML generated from our
Expand Down
2 changes: 2 additions & 0 deletions features/step_definitions/reek_steps.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

When /^I run reek (.*)$/ do |args|
reek(args)
end
Expand Down
2 changes: 2 additions & 0 deletions features/step_definitions/sample_file_steps.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative '../../samples/paths'

Given(/^the smelly file '(.+)'$/) do |filename|
Expand Down
2 changes: 2 additions & 0 deletions features/support/env.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative '../../lib/reek'
require_relative '../../lib/reek/cli/application'
require 'aruba/cucumber'
Expand Down
16 changes: 11 additions & 5 deletions lib/reek/source/source_code.rb
Original file line number Diff line number Diff line change
Expand Up @@ -75,11 +75,17 @@ def origin

def code
@code ||=
case source
when File, Pathname then source.read
when IO then source.readlines.join
when String then source
end.force_encoding(Encoding::UTF_8)
begin
str =
case source
when File, Pathname then source.read
when IO then source.readlines.join
when String then source
end

str = str.dup if str.frozen?
str.force_encoding(Encoding::UTF_8)
end
end

attr_reader :parser, :source
Expand Down
2 changes: 2 additions & 0 deletions reek.gemspec
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative 'lib/reek/version'

Gem::Specification.new do |spec|
Expand Down
2 changes: 2 additions & 0 deletions spec/performance/reek/smell_detectors/runtime_speed_spec.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative '../../../spec_helper'
require_lib 'reek/examiner'

Expand Down
2 changes: 2 additions & 0 deletions spec/quality/documentation_spec.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative '../spec_helper'
require 'kramdown'

Expand Down
2 changes: 2 additions & 0 deletions spec/quality/reek_source_spec.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative '../spec_helper'

RSpec.describe 'Reek source code' do
Expand Down
2 changes: 2 additions & 0 deletions spec/reek/ast/node_spec.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative '../../spec_helper'
require_lib 'reek/ast/node'

Expand Down
2 changes: 2 additions & 0 deletions spec/reek/ast/object_refs_spec.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative '../../spec_helper'
require_lib 'reek/ast/object_refs'

Expand Down
2 changes: 2 additions & 0 deletions spec/reek/ast/reference_collector_spec.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative '../../spec_helper'
require_lib 'reek/ast/reference_collector'

Expand Down
2 changes: 2 additions & 0 deletions spec/reek/ast/sexp_extensions_spec.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative '../../spec_helper'
require_lib 'reek/ast/sexp_extensions'

Expand Down
2 changes: 2 additions & 0 deletions spec/reek/cli/application_spec.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative '../../spec_helper'
require_lib 'reek/cli/application'

Expand Down
2 changes: 2 additions & 0 deletions spec/reek/cli/command/report_command_spec.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative '../../../spec_helper'
require_lib 'reek/cli/command/report_command'
require_lib 'reek/cli/options'
Expand Down
2 changes: 2 additions & 0 deletions spec/reek/cli/command/todo_list_command_spec.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative '../../../spec_helper'
require_lib 'reek/cli/command/todo_list_command'
require_lib 'reek/cli/options'
Expand Down
2 changes: 2 additions & 0 deletions spec/reek/cli/options_spec.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative '../../spec_helper'
require_lib 'reek/cli/options'

Expand Down
2 changes: 2 additions & 0 deletions spec/reek/cli/silencer_spec.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative '../../spec_helper'
require_lib 'reek/cli/silencer'

Expand Down
2 changes: 2 additions & 0 deletions spec/reek/code_climate/code_climate_configuration_spec.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative '../../spec_helper'
require_lib 'reek/code_climate/code_climate_configuration'

Expand Down
2 changes: 2 additions & 0 deletions spec/reek/code_climate/code_climate_fingerprint_spec.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative '../../spec_helper'
require_lib 'reek/code_climate/code_climate_fingerprint'

Expand Down
2 changes: 2 additions & 0 deletions spec/reek/code_climate/code_climate_formatter_spec.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative '../../spec_helper'
require_lib 'reek/code_climate/code_climate_formatter'

Expand Down
2 changes: 2 additions & 0 deletions spec/reek/code_climate/code_climate_report_spec.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative '../../spec_helper'
require_lib 'reek/examiner'
require_lib 'reek/code_climate'
Expand Down
2 changes: 2 additions & 0 deletions spec/reek/code_comment_spec.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative '../spec_helper'
require_lib 'reek/code_comment'

Expand Down
2 changes: 2 additions & 0 deletions spec/reek/configuration/app_configuration_spec.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require 'pathname'
require_relative '../../spec_helper'
require_lib 'reek/configuration/app_configuration'
Expand Down
2 changes: 2 additions & 0 deletions spec/reek/configuration/configuration_file_finder_spec.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require 'fileutils'
require 'pathname'
require 'tmpdir'
Expand Down
2 changes: 2 additions & 0 deletions spec/reek/configuration/default_directive_spec.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative '../../spec_helper'
require_lib 'reek/configuration/default_directive'

Expand Down
2 changes: 2 additions & 0 deletions spec/reek/configuration/directory_directives_spec.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative '../../spec_helper'
require_lib 'reek/errors/config_file_error'
require_lib 'reek/configuration/directory_directives'
Expand Down
2 changes: 2 additions & 0 deletions spec/reek/configuration/excluded_paths_spec.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative '../../spec_helper'
require_lib 'reek/errors/config_file_error'
require_lib 'reek/configuration/excluded_paths'
Expand Down
2 changes: 2 additions & 0 deletions spec/reek/configuration/rake_task_converter_spec.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative '../../spec_helper'
require_lib 'reek/configuration/rake_task_converter'

Expand Down
2 changes: 2 additions & 0 deletions spec/reek/configuration/schema_spec.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative '../../spec_helper'
require_lib 'reek/configuration/schema'

Expand Down
2 changes: 2 additions & 0 deletions spec/reek/configuration/schema_validator_spec.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative '../../spec_helper'
require_lib 'reek/configuration/schema_validator'
require_lib 'reek/errors/config_file_error'
Expand Down
2 changes: 2 additions & 0 deletions spec/reek/context/code_context_spec.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative '../../spec_helper'
require_lib 'reek/context/method_context'
require_lib 'reek/context/module_context'
Expand Down
2 changes: 2 additions & 0 deletions spec/reek/context/ghost_context_spec.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative '../../spec_helper'
require_lib 'reek/context/code_context'
require_lib 'reek/context/ghost_context'
Expand Down
2 changes: 2 additions & 0 deletions spec/reek/context/method_context_spec.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative '../../spec_helper'
require_lib 'reek/context/method_context'

Expand Down
2 changes: 2 additions & 0 deletions spec/reek/context/module_context_spec.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative '../../spec_helper'
require_lib 'reek/context/module_context'
require_lib 'reek/context/root_context'
Expand Down
2 changes: 2 additions & 0 deletions spec/reek/context/root_context_spec.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative '../../spec_helper'
require_lib 'reek/context/root_context'

Expand Down
2 changes: 2 additions & 0 deletions spec/reek/context/statement_counter_spec.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative '../../spec_helper'
require_lib 'reek/context/statement_counter'

Expand Down
2 changes: 2 additions & 0 deletions spec/reek/context_builder_spec.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative '../spec_helper'
require_lib 'reek/context_builder'

Expand Down
2 changes: 2 additions & 0 deletions spec/reek/detector_repository_spec.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative '../spec_helper'
require_lib 'reek/smell_detectors/base_detector'
require_lib 'reek/detector_repository'
Expand Down
2 changes: 2 additions & 0 deletions spec/reek/documentation_link_spec.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative '../spec_helper'

RSpec.describe Reek::DocumentationLink do
Expand Down
2 changes: 2 additions & 0 deletions spec/reek/errors/base_error_spec.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative '../../spec_helper'

require_lib 'reek/errors/base_error'
Expand Down
2 changes: 2 additions & 0 deletions spec/reek/examiner_spec.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative '../spec_helper'
require_lib 'reek/examiner'
require_lib 'reek/logging_error_handler'
Expand Down
2 changes: 2 additions & 0 deletions spec/reek/logging_error_handler_spec.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative '../spec_helper'
require_lib 'reek/logging_error_handler'

Expand Down
2 changes: 2 additions & 0 deletions spec/reek/rake/task_spec.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative '../../spec_helper'
require_lib 'reek/rake/task'

Expand Down
2 changes: 2 additions & 0 deletions spec/reek/report/github_report_spec.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative '../../spec_helper'
require_lib 'reek/examiner'
require_lib 'reek/report/json_report'
Expand Down
2 changes: 2 additions & 0 deletions spec/reek/report/html_report_spec.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative '../../spec_helper'
require_lib 'reek/examiner'
require_lib 'reek/report/html_report'
Expand Down
2 changes: 2 additions & 0 deletions spec/reek/report/json_report_spec.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative '../../spec_helper'
require_lib 'reek/examiner'
require_lib 'reek/report/json_report'
Expand Down
2 changes: 2 additions & 0 deletions spec/reek/report/location_formatter_spec.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative '../../spec_helper'
require_lib 'reek/report/location_formatter'

Expand Down
2 changes: 2 additions & 0 deletions spec/reek/report/progress_formatter_spec.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative '../../spec_helper'
require_lib 'reek/report/progress_formatter'

Expand Down
2 changes: 2 additions & 0 deletions spec/reek/report/text_report_spec.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative '../../spec_helper'
require_lib 'reek/examiner'
require_lib 'reek/report/text_report'
Expand Down
2 changes: 2 additions & 0 deletions spec/reek/report/xml_report_spec.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative '../../spec_helper'
require_lib 'reek/examiner'
require_lib 'reek/report/xml_report'
Expand Down
2 changes: 2 additions & 0 deletions spec/reek/report/yaml_report_spec.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative '../../spec_helper'
require_lib 'reek/examiner'
require_lib 'reek/report/yaml_report'
Expand Down
2 changes: 2 additions & 0 deletions spec/reek/report_spec.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative '../spec_helper'
require_lib 'reek/report'

Expand Down
2 changes: 2 additions & 0 deletions spec/reek/smell_configuration_spec.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative '../spec_helper'
require_lib 'reek/smell_configuration'

Expand Down
2 changes: 2 additions & 0 deletions spec/reek/smell_detectors/attribute_spec.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative '../../spec_helper'
require_lib 'reek/smell_detectors/attribute'

Expand Down
2 changes: 2 additions & 0 deletions spec/reek/smell_detectors/base_detector_spec.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative '../../spec_helper'
require_lib 'reek/smell_detectors/base_detector'
require_lib 'reek/smell_detectors/duplicate_method_call'
Expand Down
2 changes: 2 additions & 0 deletions spec/reek/smell_detectors/boolean_parameter_spec.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative '../../spec_helper'
require_lib 'reek/smell_detectors/boolean_parameter'

Expand Down
Loading

0 comments on commit 42ede1e

Please sign in to comment.