Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Issue - 413 Support for wildcard in paths options #476

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
5 changes: 5 additions & 0 deletions .reek.yml
Expand Up @@ -92,9 +92,11 @@ detectors:
DuplicateMethodCall:
exclude:
- RubyCritic::Analyser::Churn#run
- RubyCritic::Configuration#set
- Parser::AST::Node#module_name
TooManyStatements:
exclude:
- RubyCritic::Configuration#find_directories
- RubyCritic::RakeTask#initialize
- RubyCritic::Analyser::Complexity#run
- RubyCritic::Analyser::Coverage#synchronize_resultset
Expand All @@ -118,15 +120,18 @@ detectors:
- RubyCritic::ViewHelpers#smell_location_path
- RubyCritic::Generator::HtmlReport#create_directories_and_files
- RubyCritic::SourceLocator#deduplicate_symlinks
- RubyCritic::Configuration#setup_paths_for_targets
NestedIterators:
exclude:
- Parser::AST::Node#recursive_children
- RubyCritic::Analyser::FlaySmells#run
- RubyCritic::Cli::Options::Argv#parse
- RubyCritic::Generator::HtmlReport#create_directories_and_files
- RubyCritic::AnalysedModulesCollection#initialize
- RubyCritic::Configuration#find_directories
UtilityFunction:
exclude:
- RubyCritic::Configuration#find_directories
- RubyCritic::Analyser::Coverage#resultset_path
- RubyCritic::Analyser::Coverage#resultset_writelock
- RubyCritic::Analyser::FlaySmells#cost
Expand Down
8 changes: 8 additions & 0 deletions .rubocop.yml
Expand Up @@ -85,3 +85,11 @@ Lint/StructNewOverride:
Metrics/AbcSize:
Exclude:
- 'lib/rubycritic/configuration.rb'

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

Style/RedundantAssignment:
Exclude:
- 'lib/rubycritic/configuration.rb'
2 changes: 2 additions & 0 deletions CHANGELOG.md
@@ -1,5 +1,7 @@
# main [(unreleased)](https://github.com/whitesmith/rubycritic/compare/v4.9.0...main)

* [CHANGE] Add support for wildcard entries to the paths option in rubycritic.yml (by [@rishiain][])

# v4.9.0 / 2023-10-18 [(commits)](https://github.com/whitesmith/rubycritic/compare/v4.8.1...v4.9.0)

* [CHANGE] Bump aruba, cucumber, fakefs, flog, mdl, minitest, and rubocop dependencies (by [@faisal][])
Expand Down
19 changes: 19 additions & 0 deletions lib/rubycritic/configuration.rb
Expand Up @@ -20,11 +20,16 @@ def set(options)
self.open_with = options[:open_with]
self.no_browser = options[:no_browser]
self.threshold_score = options[:threshold_score].to_i
setup_paths_for_targets(options) if options[:paths]
setup_analysis_targets(options)
setup_version_control(options)
setup_formats(options)
end

def setup_paths_for_targets(options)
options[:paths] = find_directories(options[:paths])
end

def setup_analysis_targets(options)
self.paths = options[:paths] || ['.']
self.ruby_extensions = options[:ruby_extensions] || %w[.rb .rake .thor]
Expand All @@ -50,6 +55,20 @@ def source_control_present?
source_control_system &&
!source_control_system.is_a?(SourceControlSystem::Double)
end

private

def find_directories(paths)
expanded_paths = paths.flat_map do |path|
if path.include?('**')
search_pattern = File.join(path)
Dir.glob(search_pattern).select { |tmp_path| File.directory?(tmp_path) && !tmp_path.start_with?('tmp') }
else
path
end
end
expanded_paths
end
end

module Config
Expand Down