nertwork/frr-cookbook

View on GitHub

Showing 25 of 25 total issues

Similar blocks of code found in 2 locations. Consider refactoring.
Open

action :remove do
  zebra_path = "#{node['frr']['dir']}/#{new_resource.name}"
  if ::File.exist?(zebra_path)
    Chef::Log.info "Removing #{new_resource.file_type}: interface from #{zebra_path}"
    file zebra_path do
Severity: Minor
Found in providers/zebra.rb and 1 other location - About 45 mins to fix
providers/bgp.rb on lines 52..59

Duplicated Code

Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

Tuning

This issue has a mass of 39.

We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

Refactorings

Further Reading

Similar blocks of code found in 2 locations. Consider refactoring.
Open

action :remove do
  bgpd_path = "#{node['frr']['dir']}/#{new_resource.name}"
  if ::File.exist?(bgpd_path)
    Chef::Log.info "Removing #{new_resource.file_type}: bgp from #{bgpd_path}"
    file bgpd_path do
Severity: Minor
Found in providers/bgp.rb and 1 other location - About 45 mins to fix
providers/zebra.rb on lines 49..56

Duplicated Code

Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

Tuning

This issue has a mass of 39.

We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

Refactorings

Further Reading

Similar blocks of code found in 2 locations. Consider refactoring.
Open

action :remove do
  ospfd_path = "#{node['frr']['dir']}/ospfd.conf"
  if ::File.exist?(ospfd_path)
    Chef::Log.info "Removing #{new_resource.file_type}: ospf from #{ospfd_path}"
    file ospfd_path do
Severity: Minor
Found in providers/ospf.rb and 1 other location - About 35 mins to fix
providers/ospf6.rb on lines 50..57

Duplicated Code

Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

Tuning

This issue has a mass of 36.

We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

Refactorings

Further Reading

Similar blocks of code found in 2 locations. Consider refactoring.
Open

action :remove do
  ospf6d_path = "#{node['frr']['dir']}/ospf6d.conf"
  if ::File.exist?(ospf6d_path)
    Chef::Log.info "Removing #{new_resource.file_type}: ospf6 from #{ospf6d_path}"
    file ospf6d_path do
Severity: Minor
Found in providers/ospf6.rb and 1 other location - About 35 mins to fix
providers/ospf.rb on lines 52..59

Duplicated Code

Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

Tuning

This issue has a mass of 36.

We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

Refactorings

Further Reading

Do not use spaces inside percent literal delimiters.
Open

  %w( zebra.conf ospfd.conf ospf6d.conf bgpd.conf ).each do |file|
Severity: Minor
Found in recipes/install.rb by rubocop

Checks for unnecessary additional spaces inside the delimiters of %i/%w/%x literals.

Example:

# good
%i(foo bar baz)

# bad
%w( foo bar baz )

# bad
%x(  ls -l )

%w-literals should be delimited by [ and ].
Open

  ci? ? %w(integration:docker) : %w(integration:vagrant)
Severity: Minor
Found in Rakefile by rubocop

This cop enforces the consistent usage of %-literal delimiters.

Specify the 'default' key to set all preferred delimiters at once. You can continue to specify individual preferred delimiters to override the default.

Example:

# Style/PercentLiteralDelimiters:
#   PreferredDelimiters:
#     default: '[]'
#     '%i':    '()'

# good
%w[alpha beta] + %i(gamma delta)

# bad
%W(alpha #{beta})

# bad
%I(alpha beta)

Use 2 (not 7) spaces for indenting an expression spanning multiple lines.
Open

         node['quagga']['interfaces'].empty? &&
Severity: Minor
Found in recipes/zebra.rb by rubocop

This cop checks the indentation of the right hand side operand in binary operations that span more than one line.

Example:

# bad
if a +
b
  something
end

# good
if a +
   b
  something
end

%w-literals should be delimited by [ and ].
Open

if %w( debian ubuntu cumulus ).include? node['platform']
Severity: Minor
Found in recipes/install.rb by rubocop

This cop enforces the consistent usage of %-literal delimiters.

Specify the 'default' key to set all preferred delimiters at once. You can continue to specify individual preferred delimiters to override the default.

Example:

# Style/PercentLiteralDelimiters:
#   PreferredDelimiters:
#     default: '[]'
#     '%i':    '()'

# good
%w[alpha beta] + %i(gamma delta)

# bad
%W(alpha #{beta})

# bad
%I(alpha beta)

Use each_key instead of keys.each.
Open

  node['quagga']['bgp'].keys.each do |asn|
Severity: Minor
Found in providers/bgp.rb by rubocop

This cop checks for uses of each_key and each_value Hash methods.

Note: If you have an array of two-element arrays, you can put parentheses around the block arguments to indicate that you're not working with a hash, and suppress RuboCop offenses.

Example:

# bad
hash.keys.each { |k| p k }
hash.values.each { |v| p v }
hash.each { |k, _v| p k }
hash.each { |_k, v| p v }

# good
hash.each_key { |k| p k }
hash.each_value { |v| p v }

Use %i or %I for an array of symbols.
Open

task :integration, [:regexp, :action] =>
Severity: Minor
Found in Rakefile by rubocop

This cop can check for array literals made up of symbols that are not using the %i() syntax.

Alternatively, it checks for symbol arrays using the %i() syntax on projects which do not want to use that syntax.

Configuration option: MinSize If set, arrays with fewer elements than this value will not trigger the cop. For example, a MinSize of3` will not enforce a style on an array of 2 or fewer elements.

Example: EnforcedStyle: percent (default)

# good
%i[foo bar baz]

# bad
[:foo, :bar, :baz]

Example: EnforcedStyle: brackets

# good
[:foo, :bar, :baz]

# bad
%i[foo bar baz]

Do not use spaces inside percent literal delimiters.
Open

if %w( debian ubuntu cumulus ).include? node['platform']
Severity: Minor
Found in recipes/install.rb by rubocop

Checks for unnecessary additional spaces inside the delimiters of %i/%w/%x literals.

Example:

# good
%i(foo bar baz)

# bad
%w( foo bar baz )

# bad
%x(  ls -l )

Do not use spaces inside percent literal delimiters.
Open

if %w( debian ubuntu cumulus ).include? node['platform']
Severity: Minor
Found in recipes/install.rb by rubocop

Checks for unnecessary additional spaces inside the delimiters of %i/%w/%x literals.

Example:

# good
%i(foo bar baz)

# bad
%w( foo bar baz )

# bad
%x(  ls -l )

%w-literals should be delimited by [ and ].
Open

  ci? ? %w(integration:docker) : %w(integration:vagrant)
Severity: Minor
Found in Rakefile by rubocop

This cop enforces the consistent usage of %-literal delimiters.

Specify the 'default' key to set all preferred delimiters at once. You can continue to specify individual preferred delimiters to override the default.

Example:

# Style/PercentLiteralDelimiters:
#   PreferredDelimiters:
#     default: '[]'
#     '%i':    '()'

# good
%w[alpha beta] + %i(gamma delta)

# bad
%W(alpha #{beta})

# bad
%I(alpha beta)

Gems should be sorted in an alphabetical order within their section of the Gemfile. Gem docker should appear before serverspec.
Open

  gem 'docker'
Severity: Minor
Found in Gemfile by rubocop

Gems should be alphabetically sorted within groups.

Example:

# bad
gem 'rubocop'
gem 'rspec'

# good
gem 'rspec'
gem 'rubocop'

# good
gem 'rubocop'

gem 'rspec'

# good only if TreatCommentsAsGroupSeparators is true
# For code quality
gem 'rubocop'
# For tests
gem 'rspec'

Block body expression is on the same line as the block start.
Open

  not_if { node['quagga']['prefix_lists'].empty? &&
         node['quagga']['interfaces'].empty? &&
         node['quagga']['static_routes'].empty? }
Severity: Minor
Found in recipes/zebra.rb by rubocop

This cop checks whether the multiline do end blocks have a newline after the start of the block. Additionally, it checks whether the block arguments, if any, are on the same line as the start of the block.

Example:

# bad
blah do |i| foo(i)
  bar(i)
end

# bad
blah do
  |i| foo(i)
  bar(i)
end

# good
blah do |i|
  foo(i)
  bar(i)
end

# bad
blah { |i| foo(i)
  bar(i)
}

# good
blah { |i|
  foo(i)
  bar(i)
}

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

  not_if { node['quagga']['prefix_lists'].empty? &&
Severity: Minor
Found in recipes/zebra.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 2 (not 7) spaces for indenting an expression spanning multiple lines.
Open

         node['quagga']['static_routes'].empty? }
Severity: Minor
Found in recipes/zebra.rb by rubocop

This cop checks the indentation of the right hand side operand in binary operations that span more than one line.

Example:

# bad
if a +
b
  something
end

# good
if a +
   b
  something
end

Gems should be sorted in an alphabetical order within their section of the Gemfile. Gem kitchen-vagrant should appear before test-kitchen.
Open

  gem 'kitchen-vagrant'
Severity: Minor
Found in Gemfile by rubocop

Gems should be alphabetically sorted within groups.

Example:

# bad
gem 'rubocop'
gem 'rspec'

# good
gem 'rspec'
gem 'rubocop'

# good
gem 'rubocop'

gem 'rspec'

# good only if TreatCommentsAsGroupSeparators is true
# For code quality
gem 'rubocop'
# For tests
gem 'rspec'

Expression at 11, 49 should be on its own line.
Open

         node['quagga']['static_routes'].empty? }
Severity: Minor
Found in recipes/zebra.rb by rubocop

This cop checks whether the end statement of a do..end block is on its own line.

Example:

# bad
blah do |i|
  foo(i) end

# good
blah do |i|
  foo(i)
end

# bad
blah { |i|
  foo(i) }

# good
blah { |i|
  foo(i)
}

Do not use spaces inside percent literal delimiters.
Open

  %w( zebra.conf ospfd.conf ospf6d.conf bgpd.conf ).each do |file|
Severity: Minor
Found in recipes/install.rb by rubocop

Checks for unnecessary additional spaces inside the delimiters of %i/%w/%x literals.

Example:

# good
%i(foo bar baz)

# bad
%w( foo bar baz )

# bad
%x(  ls -l )
Severity
Category
Status
Source
Language