All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.sonar.l10n.py.rules.python.S1186.html Maven / Gradle / Ivy

There is a newer version: 4.23.0.17664
Show newest version

Why is this an issue?

An empty method is generally considered bad practice and can lead to confusion, readability, and maintenance issues. Empty methods bring no functionality and are misleading to others as they might think the method implementation fulfills a specific and identified requirement.

There are several reasons for a method not to have a body:

  • It is an unintentional omission, and should be fixed to prevent an unexpected behavior in production.
  • It is not yet, or never will be, supported. In this case an exception should be thrown.
  • The method is an intentionally-blank override. In this case a nested comment should explain the reason for the blank override.

Exceptions

No issue will be raised when the empty method is abstract and meant to be overridden in a subclass, i.e. it is decorated with abc.abstractmethod, abc.abstractstaticmethod, abc.abstractclassmethod or abc.abstractproperty. Note however that these methods should normally have a docstring explaining how subclasses should implement these methods.

import abc

class MyAbstractClass(abc.ABC):
    @abc.abstractproperty
    def myproperty(self):
        pass

    @abc.abstractclassmethod
    def myclassmethod(cls):
        pass

    @abc.abstractmethod
    def mymethod(self):
        pass

    @abc.abstractstaticmethod
    def mystaticmethod():
        pass

How to fix it

Code examples

Noncompliant code example

def shouldNotBeEmpty():  # Noncompliant - method is empty
    pass

def notImplemented():  # Noncompliant - method is empty
    pass

def emptyOnPurpose():  # Noncompliant - method is empty
    pass

Compliant solution

def shouldNotBeEmpty():
    doSomething()

def notImplemented():
    raise NotImplementedError("notImplemented() cannot be performed because ...")

def emptyOnPurpose():
    pass  # comment explaining why the method is empty

def emptyOnPurposeBis():
    """
    Docstring explaining why this function is empty.
    """




© 2015 - 2024 Weber Informatics LLC | Privacy Policy