[PYTHON] Trouver des classes / méthodes / fonctions / variables inutilisées dans Vulture

Des informations de mise à jour ont été publiées sur le TL de pypi_update, j'ai donc essayé de l'utiliser.

vulture

vulture signale les classes / méthodes / fonctions / variables inutilisées. https://pypi.python.org/pypi/vulture

Installation

Vous pouvez l'installer avec pip.

$ pip install vulture

Courir

Une fois l'installation terminée, vous pouvez utiliser la commande vulture. Utilisez cette commande pour l'exécuter.

Tous les objets sont en cours d'utilisation

J'ai créé un exemple de code qui utilise tous les objets définis.

py


# -*- coding: utf-8 -*-
USE = 'use'


class Use(object):
    use_attr = 'use'

    def use(self, value):
        self.use_attr = value
        return self.use_attr


def use():
    Use.use(USE)

if __name__ == '__main__':
    use()

Exécutez vulture sur cet exemple de code.

$ vulture use.py
$ echo $?
0

Il s'est terminé sans aucune indication.

Tous les objets sont inutilisés

Cette fois, au contraire, j'ai créé un exemple de code dans lequel tous les objets ne sont pas utilisés.

py


# -*- coding: utf-8 -*-
UNUSE = 'unuse'


class UnUse(object):
    unuse_attr = 'unuse'

    def unuse(self, value):
        data = None


def unuse_func():
    func_data = None

Exécutez vulture sur cet exemple de code.

$ vulture unuse.py
unuse.py:2: Unused variable 'UNUSE'
unuse.py:5: Unused class 'UnUse'
unuse.py:6: Unused variable 'unuse_attr'
unuse.py:8: Unused function 'unuse'
unuse.py:9: Unused variable 'data'
unuse.py:12: Unused function 'unuse_func'
unuse.py:13: Unused variable 'func_data'
$ echo $?
1


Sept cas ont été signalés et cela s'est terminé anormalement. Pointé pour les variables globales (UNUSE), les classes (UnUse), les variables de classe (unuse_attr), les méthodes d'instance (UnUse.unuse), les fonctions (unuse_func) et les variables locales (data et func_data). Il n'est pas précisé si l'argument de la fonction ou de la méthode est inutilisé.

Les variables membres de configuration uniquement sont signalées

Dans l'exemple ci-dessous, la valeur est définie sur «self.data», qui n'est pas complètement inutilisée. Je n'ai tout simplement pas eu cette valeur.

py


# -*- coding: utf-8 -*-


class Use(object):
    def __init__(self):
        self.data = 1

    def set_(self, value):
        self.data = value

Use()
Use.set_(2)

Que se passe-t-il si vous exécutez Vulture sur cet exemple de code?

$ vulture unuse2.py
unuse2.py:6: Unused attribute 'data'
$ echo $?
1

On m'a indiqué où self.data = 1 dans le constructeur. Cela sera signalé si vous définissez simplement la valeur.

Recommended Posts

Trouver des classes / méthodes / fonctions / variables inutilisées dans Vulture
Utilisation de variables globales dans les fonctions python
Définir dynamiquement des fonctions (méthodes) en Python
[Python3] Définir dynamiquement des variables globales dans une fonction