fyntech/fyntech

View on GitHub
_plugins/time.rb

Summary

Maintainability
A
0 mins
Test Coverage

Jekyll::TimeFilter declares the class variable '@@timezone'
Open

      tz = ActiveSupport::TimeZone.new(@@timezone)
      if input.is_a?(Time) 
          time = tz.at(input)
      elsif input.is_a?(String) 
          time = tz.parse(input)
Severity: Minor
Found in _plugins/time.rb by reek

Class variables form part of the global runtime state, and as such make it easy for one part of the system to accidentally or inadvertently depend on another part of the system. So the system becomes more prone to problems where changing something over here breaks something over there. In particular, class variables can make it hard to set up tests (because the context of the test includes all global state).

For a detailed explanation, check out this article

Example

Given

class Dummy
  @@class_variable = :whatever
end

Reek would emit the following warning:

reek test.rb

test.rb -- 1 warning:
  [2]:Dummy declares the class variable @@class_variable (ClassVariable)

Getting rid of the smell

You can use class-instance variable to mitigate the problem (as also suggested in the linked article above):

class Dummy
  @class_variable = :whatever
end

Jekyll::TimeFilter has no descriptive comment
Open

  module TimeFilter
Severity: Minor
Found in _plugins/time.rb by reek

Classes and modules are the units of reuse and release. It is therefore considered good practice to annotate every class and module with a brief comment outlining its responsibilities.

Example

Given

class Dummy
  # Do things...
end

Reek would emit the following warning:

test.rb -- 1 warning:
  [1]:Dummy has no descriptive comment (IrresponsibleModule)

Fixing this is simple - just an explaining comment:

# The Dummy class is responsible for ...
class Dummy
  # Do things...
end

Jekyll::TimeFilter#date_to_utc doesn't depend on instance state (maybe move it to another class?)
Open

    def date_to_utc(input)
Severity: Minor
Found in _plugins/time.rb by reek

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

Inconsistent indentation detected.
Open

      @@timezone = Jekyll.configuration({})['timezone']
Severity: Minor
Found in _plugins/time.rb by rubocop

This cops checks for inconsistent indentation.

Example:

class A
  def test
    puts 'hello'
     puts 'world'
  end
end

Trailing whitespace detected.
Open

      elsif input.is_a?(String) 
Severity: Minor
Found in _plugins/time.rb by rubocop

Missing magic comment # frozen_string_literal: true.
Open

require 'active_support/all'
Severity: Minor
Found in _plugins/time.rb by rubocop

This cop is designed to help upgrade to Ruby 3.0. It will add the comment # frozen_string_literal: true to the top of files to enable frozen string literals. Frozen string literals may be default in Ruby 3.0. The comment will be added below a shebang and encoding comment. The frozen string literal comment is only valid in Ruby 2.3+.

Example: EnforcedStyle: when_needed (default)

# The `when_needed` style will add the frozen string literal comment
# to files only when the `TargetRubyVersion` is set to 2.3+.
# bad
module Foo
  # ...
end

# good
# frozen_string_literal: true

module Foo
  # ...
end

Example: EnforcedStyle: always

# The `always` style will always add the frozen string literal comment
# to a file, regardless of the Ruby version or if `freeze` or `<<` are
# called on a string literal.
# bad
module Bar
  # ...
end

# good
# frozen_string_literal: true

module Bar
  # ...
end

Example: EnforcedStyle: never

# The `never` will enforce that the frozen string literal comment does
# not exist in a file.
# bad
# frozen_string_literal: true

module Baz
  # ...
end

# good
module Baz
  # ...
end

Final newline missing.
Open

Liquid::Template.register_filter(Jekyll::TimeFilter)
Severity: Minor
Found in _plugins/time.rb by rubocop

Replace class var @@timezone with a class instance var.
Open

      @@timezone = Jekyll.configuration({})['timezone']
Severity: Minor
Found in _plugins/time.rb by rubocop

This cop checks for uses of class variables. Offenses are signaled only on assignment to class variables to reduce the number of offenses that would be reported.

Tab detected.
Open

          time = tz.at(input)
Severity: Minor
Found in _plugins/time.rb by rubocop

Use 2 (not 1) spaces for indentation.
Open

          time = tz.at(input)
Severity: Minor
Found in _plugins/time.rb by rubocop

This cops checks for indentation that doesn't use the specified number of spaces.

See also the IndentationConsistency cop which is the companion to this one.

Example:

# bad
class A
 def test
  puts 'hello'
 end
end

# good
class A
  def test
    puts 'hello'
  end
end

Example: IgnoredPatterns: ['^\s*module']

# bad
module A
class B
  def test
  puts 'hello'
  end
end
end

# good
module A
class B
  def test
    puts 'hello'
  end
end
end

Tab detected.
Open

          time = tz.parse(input)
Severity: Minor
Found in _plugins/time.rb by rubocop

Use 2 (not 1) spaces for indentation.
Open

          time = tz.parse(input)
Severity: Minor
Found in _plugins/time.rb by rubocop

This cops checks for indentation that doesn't use the specified number of spaces.

See also the IndentationConsistency cop which is the companion to this one.

Example:

# bad
class A
 def test
  puts 'hello'
 end
end

# good
class A
  def test
    puts 'hello'
  end
end

Example: IgnoredPatterns: ['^\s*module']

# bad
module A
class B
  def test
  puts 'hello'
  end
end
end

# good
module A
class B
  def test
    puts 'hello'
  end
end
end

Tab detected.
Open

      @@timezone = Jekyll.configuration({})['timezone']
Severity: Minor
Found in _plugins/time.rb by rubocop

Trailing whitespace detected.
Open

      if input.is_a?(Time) 
Severity: Minor
Found in _plugins/time.rb by rubocop

Missing top-level module documentation comment.
Open

  module TimeFilter
Severity: Minor
Found in _plugins/time.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

Redundant return detected.
Open

      return time.in_time_zone('UTC')
Severity: Minor
Found in _plugins/time.rb by rubocop

This cop checks for redundant return expressions.

Example:

def test
  return something
end

def test
  one
  two
  three
  return something
end

It should be extended to handle methods whose body is if/else or a case expression with a default branch.

There are no issues that match your filters.

Category
Status