Use parentheses with 'super' with arguments

Metadata

ID: ruby-code-style/super-with-args

Language: Ruby

Severity: Notice

Category: Code Style

Description

The ‘super’ keyword in Ruby is used to call methods of the same name in the superclass. When using ‘super’ with arguments, it is important to use parentheses. This is because ‘super’ without parentheses will pass all arguments from the current method to the superclass method, which can lead to unexpected behavior if the superclass method doesn’t expect these extra arguments.

Ensuring that parentheses are used with ‘super’ when passing arguments improves code readability and reduces the chance of bugs due to unexpected argument passing. This is especially important in large codebases where the superclass method may be defined in a different file or module, and thus it may not be immediately clear what arguments it expects.

To avoid violating this rule, always use parentheses when passing arguments to ‘super’. For example, instead of writing super color, write super(color). This makes it explicit what arguments are being passed to the superclass method and helps prevent bugs.

Non-Compliant Code Examples

def describe(color)
  super color
end

def describe(color)
  super color, "triangle"
end

Compliant Code Examples

def name
  super
end

def name
  super()
end

def describe(color)
  super(color)
end

def describe(color)
  super(color, "triangle")
end
https://static.datadoghq.com/static/images/logos/github_avatar.svg https://static.datadoghq.com/static/images/logos/vscode_avatar.svg jetbrains

Seamless integrations. Try Datadog Code Analysis