19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
# File 'lib/coverband/mcp/tools/get_dead_methods.rb', line 19
def self.call(server_context:, file_pattern: nil, **)
unless defined?(RubyVM::AbstractSyntaxTree)
return ::MCP::Tool::Response.new([{
type: "text",
text: "Dead method detection requires Ruby 2.6+ with RubyVM::AbstractSyntaxTree support."
}])
end
dead_methods = Coverband::Utils::DeadMethods.scan_all
if file_pattern
dead_methods = dead_methods.select do |method|
File.fnmatch(file_pattern, method.file_path, File::FNM_PATHNAME)
end
end
grouped = dead_methods.group_by(&:file_path)
result = grouped.map do |file_path, methods|
{
file: file_path,
dead_methods: methods.map do |m|
{
class_name: m.class_name,
method_name: m.name,
line_number: m.first_line_number
}
end
}
end
::MCP::Tool::Response.new([{
type: "text",
text: JSON.pretty_generate({
total_dead_methods: dead_methods.length,
files_with_dead_methods: grouped.keys.length,
file_pattern: file_pattern,
results: result
})
}])
rescue => e
::MCP::Tool::Response.new([{
type: "text",
text: "Error analyzing dead methods: #{e.message}"
}])
end
|