ManageIQ/manageiq-smartstate

View on GitHub
lib/metadata/linux/InitProcHash.rb

Summary

Maintainability
C
1 day
Test Coverage
A
100%

File InitProcHash.rb has 632 lines of code (exceeds 250 allowed). Consider refactoring.
Open

module MiqLinux
  InitProcHash = {
    "2xthinclientserver"     => "Supports thin clients",
    "3dwm-server"            => "Binary server daemon",
    "acct"                   => "GNU Accounting utilities for process and login accounting",
Severity: Major
Found in lib/metadata/linux/InitProcHash.rb - About 1 day to fix

Avoid hard coding large quantities of data in code. Prefer reading the data from an external source.
Open

  InitProcHash = {
    "2xthinclientserver"     => "Supports thin clients",
    "3dwm-server"            => "Binary server daemon",
    "acct"                   => "GNU Accounting utilities for process and login accounting",
    "acpid"                  => "Utilities for using ACPI power management",
Severity: Minor
Found in lib/metadata/linux/InitProcHash.rb by rubocop

Checks for literals with extremely many entries. This is indicative of configuration or data that may be better extracted somewhere else, like a database, fetched from an API, or read from a non-code file (CSV, JSON, YAML, etc.).

Example:

# bad
# Huge Array literal
[1, 2, '...', 999_999_999]

# bad
# Huge Hash literal
{ 1 => 1, 2 => 2, '...' => '...', 999_999_999 => 999_999_999}

# bad
# Huge Set "literal"
Set[1, 2, '...', 999_999_999]

# good
# Reasonably sized Array literal
[1, 2, '...', 10]

# good
# Reading huge Array from external data source
# File.readlines('numbers.txt', chomp: true).map!(&:to_i)

# good
# Reasonably sized Hash literal
{ 1 => 1, 2 => 2, '...' => '...', 10 => 10}

# good
# Reading huge Hash from external data source
CSV.foreach('numbers.csv', headers: true).each_with_object({}) do |row, hash|
  hash[row["key"].to_i] = row["value"].to_i
end

# good
# Reasonably sized Set "literal"
Set[1, 2, '...', 10]

# good
# Reading huge Set from external data source
SomeFramework.config_for(:something)[:numbers].to_set

There are no issues that match your filters.

Category
Status