Tool für Codeoptimierung

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
oberstift
User
Beiträge: 1
Registriert: Freitag 27. Juli 2007, 09:10

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
Benutzeravatar
lutz.horn
User
Beiträge: 205
Registriert: Dienstag 8. November 2005, 12:57
Wohnort: Pforzheim

Ein Möglichkeit, den zur Laufzeit verwendeten Code zu finden, ist http://nedbatchelder.com/code/modules/coverage.html.
https://www.xing.com/go/invite/18513630.6a91d4
Benutzeravatar
helduel
User
Beiträge: 300
Registriert: Montag 23. Juli 2007, 14:05
Wohnort: Laupheim

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
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

pychecker
pylint

...wobei pylint bei mir immer stirbt wenn ich ein with statement im Code habe...
Zuletzt geändert von veers am Freitag 27. Juli 2007, 14:13, insgesamt 1-mal geändert.
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

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.
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

"Marc Rintsh" :)
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
BlackJack

Grmpf. Die können also nichtmal einen Namen per Copy'n'Paste aus einer E-Mail transferieren. :-)
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Und birkenfeld nicht aus IRC/Forum *an Pygments-Commit-Message denk* ;)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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*
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten