From cc0c251a683ec86b3aac1c813ff293684526b404 Mon Sep 17 00:00:00 2001 From: Joe Anderson <4272090+12joan@users.noreply.github.com> Date: Sun, 7 Jun 2026 17:56:48 +0100 Subject: [PATCH] Find files using a specific method on a given class --- usage_data.rb | 2 +- used_by.rb | 28 ++++++++++++++++++++++------ 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/usage_data.rb b/usage_data.rb index e916b233..10f8256f 100644 --- a/usage_data.rb +++ b/usage_data.rb @@ -3,7 +3,7 @@ module UsageData DO_NOT_SEARCH_DIRS = %w[vendor Plugins] GUID_REFERENCING_EXTENSIONS = %w[.unity .prefab .mat .asset .controller] - IDENTIFIER_REFERENCING_EXTENSIONS = %w[.cs] + IDENTIFIER_REFERENCING_EXTENSIONS = %w[.cs .unity .prefab] IGNORE_UNUSED_EXTENSIONS = %w[.unity .preset .otf .ttf .asset .txt .asmdef] IGNORE_UNUSED_DIRS = %w[Assets/test/] diff --git a/used_by.rb b/used_by.rb index 49d8ca8a..a9c474e9 100644 --- a/used_by.rb +++ b/used_by.rb @@ -1,17 +1,33 @@ require_relative 'usage_data' -input_path = ARGV[0] || raise('Usage: ruby used_by.rb ') -raise "error: #{input_path} does not exist" unless File.exist?(input_path) -basename = File.basename(input_path) +path = ARGV[0] || raise('Usage: ruby used_by.rb [method]') +method_name = ARGV[1] +raise "error: #{path} does not exist" unless File.exist?(path) +basename = File.basename(path) UsageData.register_source_files file = UsageData::SourceFile.all.find { |f| f.basename == basename } -raise "error: #{input_path} is not a registered source file" unless file +raise "error: #{path} is not a registered source file" unless file used_by = file.used_by -puts "Found #{used_by.count} files using #{basename}:" -used_by.each do |file| +filtered_used_by = + if method_name + used_by.filter { |f| f.referenced_identifiers.include? method_name } + else + used_by + end + +qualifier = + if method_name + "the #{method_name} method of " + else + '' + end + +puts "Found #{filtered_used_by.count} file(s) using #{qualifier + basename}:" + +filtered_used_by.each do |file| puts " #{file.basename}" end