[PYTHON] Finde unbenutzte Klassen / Methoden / Funktionen / Variablen in Geier

Update-Informationen wurden in der TL von pypi_update veröffentlicht, daher habe ich versucht, sie zu verwenden.

vulture

Geier weist auf nicht verwendete Klassen / Methoden / Funktionen / Variablen hin. https://pypi.python.org/pypi/vulture

Installation

Sie können es mit pip installieren.

$ pip install vulture

Lauf

Nach Abschluss der Installation können Sie den Befehl vulture verwenden. Führen Sie es mit diesem Befehl aus.

Alle Objekte werden verwendet

Ich habe einen Beispielcode erstellt, der alle definierten Objekte verwendet.

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()

Führen Sie Geier mit diesem Beispielcode aus.

$ vulture use.py
$ echo $?
0

Es endete ohne Anzeichen.

Alle Objekte werden nicht verwendet

Diesmal habe ich im Gegenteil einen Beispielcode erstellt, in dem nicht alle Objekte verwendet werden.

py


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


class UnUse(object):
    unuse_attr = 'unuse'

    def unuse(self, value):
        data = None


def unuse_func():
    func_data = None

Führen Sie Geier mit diesem Beispielcode aus.

$ 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


Sieben Fälle wurden aufgezeigt und es endete abnormal. Hervorgehoben für globale Variablen (UNUSE), Klassen (UnUse), Klassenvariablen (unuse_attr), Instanzmethoden (UnUse.unuse), Funktionen (unuse_func) und lokale Variablen (Daten und func_data). Es wird nicht darauf hingewiesen, ob das Argument der Funktion oder Methode nicht verwendet wird.

Auf Nur-Einstellungs-Mitgliedsvariablen wird hingewiesen

Im folgenden Beispiel wird der Wert auf "self.data" gesetzt, was nicht vollständig unbenutzt ist. Ich habe diesen Wert einfach nicht bekommen.

py


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


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

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

Use()
Use.set_(2)

Was passiert, wenn Sie Geier mit diesem Beispielcode ausführen?

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

Ich wurde darauf hingewiesen, wo "self.data = 1" im Konstruktor. Es wird darauf hingewiesen, wenn Sie nur den Wert einstellen.

Recommended Posts

Finde unbenutzte Klassen / Methoden / Funktionen / Variablen in Geier
Verwendung globaler Variablen in Python-Funktionen
Definieren Sie Funktionen (Methoden) in Python dynamisch
[Python3] Definieren Sie globale Variablen in einer Funktion dynamisch