Мне нужно найти все исходные файлы *.c
в пути, чтобы найти ссылку на заголовок *.h
, чтобы найти неиспользуемые заголовки C. Я написал сценарий с рубином, но он очень неуклюжий.
Я создаю массив со всеми файлами C и массив со всеми файлами H.
Я перебираю массив заголовочных файлов. Для каждого заголовка я открываю каждый файл C и ищу ссылку на заголовок.
Есть ли более простой или лучший способ?
require 'ftools'
require 'find'
# add a file search
class File
def self.find(dir, filename="*.*", subdirs=true)
Dir[ subdirs ? File.join(dir.split(/\\/), "**", filename) : File.join(dir.split(/\\/), filename) ]
end
end
files = File.find(".", "*.c", true)
headers = File.find(".", "*.h", true)
headers.each do |file|
#puts "Searching for #{file}(#{File.basename(file)})"
found = 0
files.each do |cfile|
#puts "searching in #{cfile}"
if File.read(cfile).downcase.include?(File.basename(file).downcase)
found += 1
end
end
puts "#{file} used #{found} times"
end