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
66
67
68
69
|
# File 'lib/coverband/mcp/tools/get_uncovered_files.rb', line 23
def self.call(server_context:, threshold: 50, include_never_loaded: true, **)
store = Coverband.configuration.store
report = Coverband::Reporters::JSONReport.new(store, line_coverage: false)
data = JSON.parse(report.report)
files = data["files"] || {}
uncovered = files.select do |_path, file_data|
percent = file_data["covered_percent"] || 0
never_loaded = file_data["never_loaded"]
if include_never_loaded
percent < threshold || never_loaded
else
percent < threshold && !never_loaded
end
end
sorted = uncovered.sort_by { |_path, data| data["covered_percent"] || 0 }
result = sorted.map do |path, file_data|
{
file: path,
covered_percent: file_data["covered_percent"],
lines_of_code: file_data["lines_of_code"],
lines_covered: file_data["lines_covered"],
lines_missed: file_data["lines_missed"],
never_loaded: file_data["never_loaded"]
}
end
::MCP::Tool::Response.new([{
type: "text",
text: JSON.pretty_generate({
threshold: threshold,
include_never_loaded: include_never_loaded,
total_uncovered_files: result.length,
files: result
})
}])
rescue => e
::MCP::Tool::Response.new([{
type: "text",
text: "Error getting uncovered files: #{e.message}"
}])
end
|