Add autocorrect checks to ExplainFormatter

This commit is contained in:
fn ⌃ ⌥ 2021-10-26 21:47:39 -07:00
parent 8d3b76003e
commit 1b6fe40a3b
3 changed files with 17 additions and 6 deletions

View file

@ -27,7 +27,7 @@ module Ameba::Cli
runner = Ameba.run(config)
if location = opts.location_to_explain
runner.explain(location)
runner.explain(location, autocorrect: opts.autocorrect?)
else
exit 1 unless runner.success?
end

View file

@ -11,6 +11,7 @@ module Ameba::Formatter
getter output : IO::FileDescriptor | IO::Memory
getter location : Crystal::Location
getter? autocorrect : Bool
# Creates a new instance of ExplainFormatter.
# Accepts *output* which indicates the io where the explanation will be wrtitten to.
@ -20,7 +21,7 @@ module Ameba::Formatter
# ExplainFormatter.new output,
# {file: path, line: line_number, column: column_number}
# ```
def initialize(@output, location)
def initialize(@output, location, @autocorrect = false)
@location = Crystal::Location.new(location[:file], location[:line], location[:column])
end
@ -40,12 +41,22 @@ module Ameba::Formatter
return unless (location = issue.location)
output_title "ISSUE INFO"
output_paragraph [
issue_info = [
issue.message.colorize(:red).to_s,
location.to_s.colorize(:cyan).to_s,
]
if issue.correctable?
if autocorrect?
issue_info << "Corrected".colorize(:green).to_s
else
issue_info << "Correctable".colorize(:yellow).to_s
end
end
output_title "ISSUE INFO"
output_paragraph issue_info
if affected_code = affected_code(issue, context_lines: 3)
output_title "AFFECTED CODE"
output_paragraph affected_code

View file

@ -161,8 +161,8 @@ module Ameba
# runner.run
# runner.explain({file: file, line: l, column: c})
# ```
def explain(location, output = STDOUT)
Formatter::ExplainFormatter.new(output, location).finished @sources
def explain(location, output = STDOUT, autocorrect = false)
Formatter::ExplainFormatter.new(output, location, autocorrect).finished @sources
end
# Indicates whether the last inspection successful or not.