Skip to content

Commit ea47b4a

Browse files
lovro-bikicbbatsov
authored andcommitted
Optimize hidden files logic in TargetFinder
1 parent 7cb7438 commit ea47b4a

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

lib/rubocop/target_finder.rb

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -42,14 +42,12 @@ def target_files_in_dir(base_dir = Dir.pwd)
4242
# Support Windows: Backslashes from command-line -> forward slashes
4343
base_dir = base_dir.gsub(File::ALT_SEPARATOR, File::SEPARATOR) if File::ALT_SEPARATOR
4444
all_files = find_files(base_dir, File::FNM_DOTMATCH)
45-
# use file.include? for performance optimization
46-
hidden_files = all_files.select { |file| file.include?(HIDDEN_PATH_SUBSTRING) }.sort
4745
base_dir_config = @config_store.for(base_dir)
4846

49-
target_files = if base_dir.include?(HIDDEN_PATH_SUBSTRING)
47+
target_files = if hidden_path?(base_dir)
5048
all_files.select { |file| ruby_file?(file) }
5149
else
52-
all_files.select { |file| to_inspect?(file, hidden_files, base_dir_config) }
50+
all_files.select { |file| to_inspect?(file, base_dir_config) }
5351
end
5452

5553
target_files.sort_by!(&order)
@@ -74,15 +72,17 @@ def find_files(base_dir, flags)
7472

7573
private
7674

77-
def to_inspect?(file, hidden_files, base_dir_config)
75+
def to_inspect?(file, base_dir_config)
7876
return false if base_dir_config.file_to_exclude?(file)
79-
return true if !hidden_files.bsearch do |hidden_file|
80-
file <=> hidden_file
81-
end && ruby_file?(file)
77+
return true if !hidden_path?(file) && ruby_file?(file)
8278

8379
base_dir_config.file_to_include?(file)
8480
end
8581

82+
def hidden_path?(path)
83+
path.include?(HIDDEN_PATH_SUBSTRING)
84+
end
85+
8686
def wanted_dir_patterns(base_dir, exclude_pattern, flags)
8787
# Escape glob characters in base_dir to avoid unwanted behavior.
8888
base_dir = base_dir.gsub(/[\\{}\[\]*?]/) do |reserved_glob_character|

0 commit comments

Comments
 (0)