Trevoke/SGFParser

View on GitHub

Showing 171 of 171 total issues

SGF::CommentToken#still_inside? doesn't depend on instance state (maybe move it to another class?)
Open

  def still_inside?(char, token_so_far, _sgf_stream)
Severity: Minor
Found in lib/sgf/parsing_tokens.rb by reek

A Utility Function is any instance method that has no dependency on the state of the instance.

SGF::Node#properties is a writable attribute
Open

  attr_accessor :children, :properties
Severity: Minor
Found in lib/sgf/node.rb by reek

A class that publishes a setter for an instance variable invites client classes to become too intimate with its inner workings, and in particular with its representation of state.

The same holds to a lesser extent for getters, but Reek doesn't flag those.

Example

Given:

class Klass
  attr_accessor :dummy
end

Reek would emit the following warning:

reek test.rb

test.rb -- 1 warning:
  [2]:Klass declares the writable attribute dummy (Attribute)

SGF::Collection#errors is a writable attribute
Open

    attr_accessor :current_node, :errors, :gametrees
Severity: Minor
Found in lib/sgf/collection.rb by reek

A class that publishes a setter for an instance variable invites client classes to become too intimate with its inner workings, and in particular with its representation of state.

The same holds to a lesser extent for getters, but Reek doesn't flag those.

Example

Given:

class Klass
  attr_accessor :dummy
end

Reek would emit the following warning:

reek test.rb

test.rb -- 1 warning:
  [2]:Klass declares the writable attribute dummy (Attribute)

SGF::Node#leading_whitespace doesn't depend on instance state (maybe move it to another class?)
Open

  def leading_whitespace(indent)
Severity: Minor
Found in lib/sgf/node.rb by reek

A Utility Function is any instance method that has no dependency on the state of the instance.

SGF::IdentityToken#still_inside? doesn't depend on instance state (maybe move it to another class?)
Open

  def still_inside?(char, _token_so_far, _sgf_stream)
Severity: Minor
Found in lib/sgf/parsing_tokens.rb by reek

A Utility Function is any instance method that has no dependency on the state of the instance.

SGF::GtpWriter#to_play has the variable name 'x'
Open

      x = (pos[0] > 104 ? pos[0] + 1 : pos[0]).chr.upcase
Severity: Minor
Found in lib/sgf/gtp_writer.rb by reek

An Uncommunicative Variable Name is a variable name that doesn't communicate its intent well enough.

Poor names make it hard for the reader to build a mental picture of what's going on in the code. They can also be mis-interpreted; and they hurt the flow of reading, because the reader must slow down to interpret the names.

SGF::GtpWriter#to_play has the variable name 'y'
Open

      y = if @upside_down && @boardsize
Severity: Minor
Found in lib/sgf/gtp_writer.rb by reek

An Uncommunicative Variable Name is a variable name that doesn't communicate its intent well enough.

Poor names make it hard for the reader to build a mental picture of what's going on in the code. They can also be mis-interpreted; and they hurt the flow of reading, because the reader must slow down to interpret the names.

SGF::Writer#save has the variable name 'f'
Open

    File.open(filename, 'w') { |f| f << @sgf }
Severity: Minor
Found in lib/sgf/writer.rb by reek

An Uncommunicative Variable Name is a variable name that doesn't communicate its intent well enough.

Poor names make it hard for the reader to build a mental picture of what's going on in the code. They can also be mis-interpreted; and they hurt the flow of reading, because the reader must slow down to interpret the names.

Line is too long. [136/80]
Open

        @assembler.add_error "Multiple #{identity} identities are present in a single node. A property should only exist once per node."
Severity: Minor
Found in lib/sgf/parser.rb by rubocop

Avoid using {...} for multi-line blocks.
Open

    sig {
Severity: Minor
Found in lib/sgf/collection.rb by rubocop

Check for uses of braces or do/end around single line or multi-line blocks.

Example: EnforcedStyle: linecountbased (default)

# bad - single line block
items.each do |item| item / 5 end

# good - single line block
items.each { |item| item / 5 }

# bad - multi-line block
things.map { |thing|
  something = thing.some_method
  process(something)
}

# good - multi-line block
things.map do |thing|
  something = thing.some_method
  process(something)
end

Example: EnforcedStyle: semantic

# Prefer `do...end` over `{...}` for procedural blocks.

# return value is used/assigned
# bad
foo = map do |x|
  x
end
puts (map do |x|
  x
end)

# return value is not used out of scope
# good
map do |x|
  x
end

# Prefer `{...}` over `do...end` for functional blocks.

# return value is not used out of scope
# bad
each { |x|
  x
}

# return value is used/assigned
# good
foo = map { |x|
  x
}
map { |x|
  x
}.inspect

Example: EnforcedStyle: bracesforchaining

# bad
words.each do |word|
  word.flip.flop
end.join("-")

# good
words.each { |word|
  word.flip.flop
}.join("-")

unexpected token error (Using Ruby 2.1 parser; configure using TargetRubyVersion parameter, under AllCops)
Open

      pps['AW']&.each { |pos| out << to_play('W', pos) }
Severity: Minor
Found in lib/sgf/gtp_writer.rb by rubocop

Line is too long. [307/80]
Open

  raise ArgumentError, "There are more than one line in version.rb which assign a value to VERSION. This is almost certainly a mistake. At the very least, I have no idea what I'm supposed to do. You must either increment the version manually in the file, or change the file so it only assigns VERSION once."
Severity: Minor
Found in Rakefile by rubocop

Rename is_line_with_version_assignment? to line_with_version_assignment?.
Open

def is_line_with_version_assignment?(line)
Severity: Minor
Found in Rakefile by rubocop

This cop makes sure that predicates are named properly.

Example:

# bad
def is_even?(value)
end

# good
def even?(value)
end

# bad
def has_value?
end

# good
def value?
end

Avoid using {...} for multi-line blocks.
Open

  sig {
Severity: Minor
Found in lib/sgf/parsing_tokens.rb by rubocop

Check for uses of braces or do/end around single line or multi-line blocks.

Example: EnforcedStyle: linecountbased (default)

# bad - single line block
items.each do |item| item / 5 end

# good - single line block
items.each { |item| item / 5 }

# bad - multi-line block
things.map { |thing|
  something = thing.some_method
  process(something)
}

# good - multi-line block
things.map do |thing|
  something = thing.some_method
  process(something)
end

Example: EnforcedStyle: semantic

# Prefer `do...end` over `{...}` for procedural blocks.

# return value is used/assigned
# bad
foo = map do |x|
  x
end
puts (map do |x|
  x
end)

# return value is not used out of scope
# good
map do |x|
  x
end

# Prefer `{...}` over `do...end` for functional blocks.

# return value is not used out of scope
# bad
each { |x|
  x
}

# return value is used/assigned
# good
foo = map { |x|
  x
}
map { |x|
  x
}.inspect

Example: EnforcedStyle: bracesforchaining

# bad
words.each do |word|
  word.flip.flop
end.join("-")

# good
words.each { |word|
  word.flip.flop
}.join("-")

Missing top-level class documentation comment.
Open

  class Gametree
Severity: Minor
Found in lib/sgf/gametree.rb by rubocop

This cop checks for missing top-level documentation of classes and modules. Classes with no body are exempt from the check and so are namespace modules - modules that have nothing in their bodies except classes, other modules, or constant definitions.

The documentation requirement is annulled if the class or module has a "#:nodoc:" comment next to it. Likewise, "#:nodoc: all" does the same for all its children.

Example:

# bad
class Person
  # ...
end

# good
# Description/Explanation of Person class
class Person
  # ...
end

Avoid using {...} for multi-line blocks.
Open

  sig {
Severity: Minor
Found in lib/sgf/parser.rb by rubocop

Check for uses of braces or do/end around single line or multi-line blocks.

Example: EnforcedStyle: linecountbased (default)

# bad - single line block
items.each do |item| item / 5 end

# good - single line block
items.each { |item| item / 5 }

# bad - multi-line block
things.map { |thing|
  something = thing.some_method
  process(something)
}

# good - multi-line block
things.map do |thing|
  something = thing.some_method
  process(something)
end

Example: EnforcedStyle: semantic

# Prefer `do...end` over `{...}` for procedural blocks.

# return value is used/assigned
# bad
foo = map do |x|
  x
end
puts (map do |x|
  x
end)

# return value is not used out of scope
# good
map do |x|
  x
end

# Prefer `{...}` over `do...end` for functional blocks.

# return value is not used out of scope
# bad
each { |x|
  x
}

# return value is used/assigned
# good
foo = map { |x|
  x
}
map { |x|
  x
}.inspect

Example: EnforcedStyle: bracesforchaining

# bad
words.each do |word|
  word.flip.flop
end.join("-")

# good
words.each { |word|
  word.flip.flop
}.join("-")

Use a guard clause instead of wrapping the code inside a conditional expression.
Open

    if string[/\A\s*\(\s*;/]
Severity: Minor
Found in lib/sgf/error_checkers.rb by rubocop

Use a guard clause instead of wrapping the code inside a conditional expression

Example:

# bad
def test
  if something
    work
  end
end

# good
def test
  return unless something
  work
end

# also good
def test
  work if something
end

# bad
if something
  raise 'exception'
else
  ok
end

# good
raise 'exception' if something
ok

Line is too long. [84/80]
Open

  collection.save file # Because may as well indent the files while I'm here, right?

Avoid using {...} for multi-line blocks.
Open

  sig {
Severity: Minor
Found in lib/sgf/parser.rb by rubocop

Check for uses of braces or do/end around single line or multi-line blocks.

Example: EnforcedStyle: linecountbased (default)

# bad - single line block
items.each do |item| item / 5 end

# good - single line block
items.each { |item| item / 5 }

# bad - multi-line block
things.map { |thing|
  something = thing.some_method
  process(something)
}

# good - multi-line block
things.map do |thing|
  something = thing.some_method
  process(something)
end

Example: EnforcedStyle: semantic

# Prefer `do...end` over `{...}` for procedural blocks.

# return value is used/assigned
# bad
foo = map do |x|
  x
end
puts (map do |x|
  x
end)

# return value is not used out of scope
# good
map do |x|
  x
end

# Prefer `{...}` over `do...end` for functional blocks.

# return value is not used out of scope
# bad
each { |x|
  x
}

# return value is used/assigned
# good
foo = map { |x|
  x
}
map { |x|
  x
}.inspect

Example: EnforcedStyle: bracesforchaining

# bad
words.each do |word|
  word.flip.flop
end.join("-")

# good
words.each { |word|
  word.flip.flop
}.join("-")

Line is too long. [81/80]
Open

      if @root.children.empty? || !@root.children[0].properties.key?(method_name)
Severity: Minor
Found in lib/sgf/collection.rb by rubocop
Severity
Category
Status
Source
Language