Jakie są najlepsze narzędzia do analizy statycznej w Pythonie?


Najlepsza odpowiedź

Istnieje wiele narzędzi do wykonywania analizy statycznej w programowaniu w Pythonie.

  1. Pylint → Narzędzie open source
  2. Kiuwan → Narzędzie komercyjne
  3. Pyflakes i tak dalej.

Użyłem Pylint i Kiuwan.

Pylint może znaleźć następujące rzeczy:

  • sprawdzenie długości kodu linii,
  • sprawdzenie, czy nazwy zmiennych są poprawnie sformułowane zgodnie ze standardem kodowania
  • sprawdzenie, czy używane są zaimportowane moduły
  • sprawdzenie, czy zadeklarowane interfejsy są rzeczywiście zaimplementowane
  • sprawdzenie, czy moduły zostały zaimportowane

Kiuwan może obsługiwać poniższe zestawy reguł:

  • Unikaj zakodowania adresów IP na stałe
  • Powielony kod
  • Unikaj używania domyślnych zmiennych parametrów
  • Unikaj używania exec () funkcja
  • Unikaj przypisań do Prawda lub Fałsz
  • Unikaj łańcuchowych porównań zawierających operator równości
  • Unikaj zbyt złożonych funkcji
  • Otwieraj pliki usin g instrukcja with
  • Unikaj używania przestarzałych modułów
  • metoda \_init\_ nie może być generatorem

Lepszą opcją jest sprawdzenie, czy istnieje wiele narzędzi i zdecyduj, które narzędzie idealnie pasuje do wymagań.

Odpowiedź

Używam pyflakes do sprawdzania kodu wewnątrz Vima i uważam to za bardzo przydatne. Mimo to pylint jest lepszy do sprawdzania kodu przed zatwierdzeniem. Powinieneś mieć dwa poziomy sprawdzania kodu: błędy, których nie można zatwierdzić i ostrzeżenia, które pachną kodem, ale można je zatwierdzić. Możesz to skonfigurować i wiele innych rzeczy za pomocą pylinta.

Czasami możesz pomyśleć, że pylint jest zbyt wybredny: może narzekać na coś, co uważasz za całkowicie w porządku. Pomyśl o tym dwa razy. Bardzo często stwierdzałem, że ostrzeżenie, które kilka miesięcy temu uważałem za zbyt konserwatywne, było w rzeczywistości bardzo dobrą radą.

Więc moja odpowiedź brzmi, że pylint jest niezawodny i solidny, a ja nie znam o wiele lepszego kodu analizator.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *