Current section
Files
Jump to
Current section
Files
lib/credo/cli/output/formatter/json.ex
defmodule Credo.CLI.Output.Formatter.JSON do
@moduledoc false
alias Credo.CLI.Output.UI
alias Credo.Issue
def print_issues(issues) do
%{
"issues" => Enum.map(issues, &to_json/1)
}
|> print_map()
end
def print_map(map) do
UI.puts(Jason.encode!(map, pretty: true))
end
def to_json(
%Issue{
check: check,
category: category,
message: message,
filename: filename,
priority: priority
} = issue
) do
check_name =
check
|> to_string()
|> String.replace(~r/^(Elixir\.)/, "")
column_end =
if issue.column && issue.trigger do
issue.column + String.length(to_string(issue.trigger))
end
%{
"check" => check_name,
"category" => to_string(category),
"filename" => to_string(filename),
"line_no" => issue.line_no,
"column" => issue.column,
"column_end" => column_end,
"trigger" => issue.trigger,
"message" => message,
"priority" => priority
}
end
end