Seite 1 von 1

Tool für Codeoptimierung

Verfasst: Freitag 27. Juli 2007, 09:15
von oberstift
Hallo zusammen,
ich bin auf der Suche nach einem Tool, mit dem ich mein Pythoncode optimieren kann.

Ich arbeite zur Zeit an einem riesigen Projekt mit x-Modulen. In einigen Modulen sind Methoden die nicht mehr verwendet werden. Die alle von Hand zu suchen ist sehr zeitaufwendig udn mühsam.

Jemand einen Hinweis?

Gruß
STEPHAN

Verfasst: Freitag 27. Juli 2007, 10:23
von lutz.horn
Ein Möglichkeit, den zur Laufzeit verwendeten Code zu finden, ist http://nedbatchelder.com/code/modules/coverage.html.

Verfasst: Freitag 27. Juli 2007, 10:35
von helduel
Moin,

folgendes Bash-Skript findet unbenutzte Methoden.

Code: Alles auswählen

#!/bin/bash
funcs=`egrep -hr '^\s*def ' . | sed -re 's/\s*def ([^ ]*)\(.*/\1/g' | sort | uniq | egrep -v '^\s*__.*__\s*$'`
files=`find -name "*py"`
for func in $funcs; do
    cnt=0
    for file in $files; do
        wcnt=`grep $func $file | grep -v "def " | wc -l`
        if [ $wcnt -gt 0 ]; then
            cnt=1
            break
        fi
    done
    if [ $cnt -eq 0 ]; then
        echo $func in `grep -rl "def $func" $files`
    fi
done
Allerdings ist es nicht sonderlich intelligent, deswegen sollte man der Ausgabe nicht blind vertrauen, sondern vor dem Löschen etwas nachdenken: Bibliotheken stellen normalerweise eine Reihe von Funktionen bereits, die sie selbst nicht benutzen.

Aber für den ersten Schuss sollte es genügen ;-)

Gruß,
Manuel

Verfasst: Freitag 27. Juli 2007, 12:03
von veers
pychecker
pylint

...wobei pylint bei mir immer stirbt wenn ich ein with statement im Code habe...

Verfasst: Freitag 27. Juli 2007, 13:17
von birkenfeld
veers hat geschrieben:...wobei pylint bei mir immer stirbt wenn ich ein with statement im code habe...
Ja, das geht mir auch so. Anscheinend ist Logilab nicht sonderlich auf der Höhe, was neue Versionen angeht. Und deren Bug-Tracking-System ist auch nicht gerade durchsichtig -- ich hab jedenfalls nicht herausgefunden, wie man sich da anmeldet und einen Report schreibt.

Verfasst: Donnerstag 9. August 2007, 10:09
von BlackJack
Es gibt jetzt ein Ticket dazu:

http://www.logilab.org/bug/eid/4057

Verfasst: Donnerstag 9. August 2007, 10:12
von birkenfeld
"Marc Rintsh" :)

Verfasst: Donnerstag 9. August 2007, 10:38
von BlackJack
Grmpf. Die können also nichtmal einen Namen per Copy'n'Paste aus einer E-Mail transferieren. :-)

Verfasst: Donnerstag 9. August 2007, 15:27
von Y0Gi
Und birkenfeld nicht aus IRC/Forum *an Pygments-Commit-Message denk* ;)

Verfasst: Donnerstag 9. August 2007, 20:21
von Leonidas
Y0Gi hat geschrieben:*an Pygments-Commit-Message denk* ;)
Meinst du die?

So, jetzt musste ich auch mal Sherlock Holmes spielen und in diesem Thread etwas beitragen. *SCNR*