mirror of
https://gitea.invidious.io/iv-org/shard-ameba.git
synced 2024-08-15 00:53:29 +00:00
Merge pull request #305 from crystal-ameba/Sija/followup-to-pr-300
Few more readability refactors
This commit is contained in:
commit
f9b6b17657
10 changed files with 72 additions and 54 deletions
|
@ -6,10 +6,10 @@ module Ameba::Formatter
|
|||
|
||||
sources.each do |source|
|
||||
source.issues.select(&.disabled?).each do |e|
|
||||
if loc = e.location
|
||||
output << "#{source.path}:#{loc.line_number}".colorize(:cyan)
|
||||
output << " #{e.rule.name}\n"
|
||||
end
|
||||
next unless loc = e.location
|
||||
|
||||
output << "#{source.path}:#{loc.line_number}".colorize(:cyan)
|
||||
output << " #{e.rule.name}\n"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -72,6 +72,7 @@ module Ameba::Formatter
|
|||
|
||||
private def finished_in_message(started, finished)
|
||||
return unless started && finished
|
||||
|
||||
"Finished in #{to_human(finished - started)}".colorize(:default)
|
||||
end
|
||||
|
||||
|
@ -92,6 +93,7 @@ module Ameba::Formatter
|
|||
|
||||
minutes = span.minutes
|
||||
seconds = span.seconds
|
||||
|
||||
"#{minutes}:#{seconds < 10 ? "0" : ""}#{seconds} minutes"
|
||||
end
|
||||
|
||||
|
|
|
@ -12,19 +12,22 @@ module Ameba::Formatter
|
|||
getter output : IO::FileDescriptor | IO::Memory
|
||||
getter location : Crystal::Location
|
||||
|
||||
# Creates a new instance of ExplainFormatter.
|
||||
# Accepts *output* which indicates the io where the explanation will be wrtitten to.
|
||||
# Creates a new instance of `ExplainFormatter`.
|
||||
#
|
||||
# Accepts *output* which indicates the io where the explanation will be written to.
|
||||
# Second argument is *location* which indicates the location to explain.
|
||||
#
|
||||
# ```
|
||||
# ExplainFormatter.new output,
|
||||
# {file: path, line: line_number, column: column_number}
|
||||
# file: path,
|
||||
# line: line_number,
|
||||
# column: column_number
|
||||
# ```
|
||||
def initialize(@output, location)
|
||||
@location = Crystal::Location.new(location[:file], location[:line], location[:column])
|
||||
end
|
||||
|
||||
# Reports the explainations at the *@location*.
|
||||
# Reports the explanations at the *@location*.
|
||||
def finished(sources)
|
||||
source = sources.find(&.path.==(@location.filename))
|
||||
return unless source
|
||||
|
|
|
@ -6,12 +6,13 @@ module Ameba::Formatter
|
|||
source.issues.each do |e|
|
||||
next if e.disabled?
|
||||
next if e.correctable? && config[:autocorrect]?
|
||||
if loc = e.location
|
||||
@mutex.synchronize do
|
||||
output.printf "%s:%d:%d: %s: [%s] %s\n",
|
||||
source.path, loc.line_number, loc.column_number, e.rule.severity.symbol,
|
||||
e.rule.name, e.message.gsub('\n', " ")
|
||||
end
|
||||
|
||||
next unless loc = e.location
|
||||
|
||||
@mutex.synchronize do
|
||||
output.printf "%s:%d:%d: %s: [%s] %s\n",
|
||||
source.path, loc.line_number, loc.column_number, e.rule.severity.symbol,
|
||||
e.rule.name, e.message.gsub('\n', " ")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -62,7 +62,6 @@ module Ameba::Formatter
|
|||
# },
|
||||
# }
|
||||
# ```
|
||||
#
|
||||
class JSONFormatter < BaseFormatter
|
||||
def initialize(@output = STDOUT)
|
||||
@result = AsJSON::Result.new
|
||||
|
@ -75,10 +74,17 @@ module Ameba::Formatter
|
|||
def source_finished(source : Source)
|
||||
json_source = AsJSON::Source.new source.path
|
||||
|
||||
source.issues.each do |e|
|
||||
next if e.disabled?
|
||||
next if e.correctable? && config[:autocorrect]?
|
||||
json_source.issues << AsJSON::Issue.new(e.rule.name, e.rule.severity.to_s, e.location, e.end_location, e.message)
|
||||
source.issues.each do |issue|
|
||||
next if issue.disabled?
|
||||
next if issue.correctable? && config[:autocorrect]?
|
||||
|
||||
json_source.issues << AsJSON::Issue.new(
|
||||
issue.rule.name,
|
||||
issue.rule.severity.to_s,
|
||||
issue.location,
|
||||
issue.end_location,
|
||||
issue.message
|
||||
)
|
||||
@result.summary.issues_count += 1
|
||||
end
|
||||
|
||||
|
@ -96,7 +102,11 @@ module Ameba::Formatter
|
|||
metadata = Metadata.new,
|
||||
summary = Summary.new do
|
||||
def to_json(json)
|
||||
{sources: sources, metadata: metadata, summary: summary}.to_json(json)
|
||||
{
|
||||
sources: sources,
|
||||
metadata: metadata,
|
||||
summary: summary,
|
||||
}.to_json(json)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -104,7 +114,10 @@ module Ameba::Formatter
|
|||
path : String,
|
||||
issues = [] of Issue do
|
||||
def to_json(json)
|
||||
{path: path, issues: issues}.to_json(json)
|
||||
{
|
||||
path: path,
|
||||
issues: issues,
|
||||
}.to_json(json)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -115,15 +128,19 @@ module Ameba::Formatter
|
|||
end_location : Crystal::Location?,
|
||||
message : String do
|
||||
def to_json(json)
|
||||
json.object do
|
||||
json.field :rule_name, rule_name
|
||||
json.field :severity, severity
|
||||
json.field :message, message
|
||||
json.field :location,
|
||||
{line: location.try &.line_number, column: location.try &.column_number}
|
||||
json.field :end_location,
|
||||
{line: end_location.try &.line_number, column: end_location.try &.column_number}
|
||||
end
|
||||
{
|
||||
rule_name: rule_name,
|
||||
severity: severity,
|
||||
message: message,
|
||||
location: {
|
||||
line: location.try &.line_number,
|
||||
column: location.try &.column_number,
|
||||
},
|
||||
end_location: {
|
||||
line: end_location.try &.line_number,
|
||||
column: end_location.try &.column_number,
|
||||
},
|
||||
}.to_json(json)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -131,10 +148,10 @@ module Ameba::Formatter
|
|||
ameba_version : String = Ameba::VERSION,
|
||||
crystal_version : String = Crystal::VERSION do
|
||||
def to_json(json)
|
||||
json.object do
|
||||
json.field :ameba_version, ameba_version
|
||||
json.field :crystal_version, crystal_version
|
||||
end
|
||||
{
|
||||
ameba_version: ameba_version,
|
||||
crystal_version: crystal_version,
|
||||
}.to_json(json)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -143,10 +160,10 @@ module Ameba::Formatter
|
|||
property issues_count = 0
|
||||
|
||||
def to_json(json)
|
||||
json.object do
|
||||
json.field :target_sources_count, target_sources_count
|
||||
json.field :issues_count, issues_count
|
||||
end
|
||||
{
|
||||
target_sources_count: target_sources_count,
|
||||
issues_count: issues_count,
|
||||
}.to_json(json)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -20,9 +20,9 @@ module Ameba::Formatter
|
|||
return
|
||||
end
|
||||
|
||||
file = generate_todo_config issues
|
||||
@output.puts "Created #{file.path}"
|
||||
file
|
||||
generate_todo_config(issues).tap do |file|
|
||||
@output.puts "Created #{file.path}"
|
||||
end
|
||||
end
|
||||
|
||||
private def generate_todo_config(issues)
|
||||
|
@ -43,6 +43,7 @@ module Ameba::Formatter
|
|||
issues.each do |issue|
|
||||
next if issue.disabled? || issue.rule.is_a?(Rule::Lint::Syntax)
|
||||
next if issue.correctable? && config[:autocorrect]?
|
||||
|
||||
(h[issue.rule] ||= Array(Issue).new) << issue
|
||||
end
|
||||
end
|
||||
|
|
|
@ -160,7 +160,7 @@ module Ameba::Rule::Style
|
|||
end
|
||||
|
||||
private def guard_clause(node)
|
||||
node = node.right if node.is_a?(Crystal::And) || node.is_a?(Crystal::Or)
|
||||
node = node.right if node.is_a?(Crystal::BinaryOp)
|
||||
|
||||
return unless location = node.location
|
||||
return unless end_location = node.end_location
|
||||
|
@ -175,11 +175,9 @@ module Ameba::Rule::Style
|
|||
end
|
||||
|
||||
def guard_clause_source(source, guard_clause, parent)
|
||||
if parent.is_a?(Crystal::And) || parent.is_a?(Crystal::Or)
|
||||
node_source(parent, source.lines)
|
||||
else
|
||||
node_source(guard_clause, source.lines)
|
||||
end
|
||||
node = parent.is_a?(Crystal::BinaryOp) ? parent : guard_clause
|
||||
|
||||
node_source(node, source.lines)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -80,8 +80,8 @@ module Ameba::Rule::Style
|
|||
|
||||
begin_loc, end_loc = begin_range
|
||||
begin_loc, end_loc = def_loc.seek(begin_loc), def_loc.seek(end_loc)
|
||||
begin_end_loc = begin_loc.adjust(column_number: {{"begin".size - 1}})
|
||||
end_end_loc = end_loc.adjust(column_number: {{"end".size - 1}})
|
||||
begin_end_loc = begin_loc.adjust(column_number: {{ "begin".size - 1 }})
|
||||
end_end_loc = end_loc.adjust(column_number: {{ "end".size - 1 }})
|
||||
|
||||
issue_for begin_loc, begin_end_loc, MSG do |corrector|
|
||||
corrector.remove(begin_loc, begin_end_loc)
|
||||
|
|
|
@ -62,10 +62,7 @@ module Ameba::Rule::Style
|
|||
end
|
||||
|
||||
protected def operator?(name)
|
||||
name.each_char do |char|
|
||||
return false unless char.in?(OPERATOR_CHARS)
|
||||
end
|
||||
!name.empty?
|
||||
!name.empty? && name[0].in?(OPERATOR_CHARS)
|
||||
end
|
||||
|
||||
protected def setter?(name)
|
||||
|
|
|
@ -9,7 +9,6 @@ module Ameba
|
|||
# runner = Ameba::Runner.new config
|
||||
# runner.run.success? # => true or false
|
||||
# ```
|
||||
#
|
||||
class Runner
|
||||
# An error indicating that the inspection loop got stuck correcting
|
||||
# issues back and forth.
|
||||
|
|
Loading…
Reference in a new issue