Καθαρίστε τη βάση κωδικών σας με αυτό το εύχρηστο εργαλείο γραμμής εντολών.

Ένα εργαλείο λινάτσας είναι ένας πολύτιμος πόρος που μπορεί να σας βοηθήσει να εντοπίσετε σφάλματα και ασυνέπειες στον κώδικά σας.

Το Flake8 είναι ένα από τα πιο δημοφιλή εργαλεία για την Python. Προσδιορίζει σφάλματα σύνταξης και μορφοποίησης στον κώδικά σας, μαζί με άλλα ζητήματα όπως αχρησιμοποίητες εισαγωγές. Είναι πολύ ευέλικτο γιατί, παρόλο που έχει προεπιλεγμένους κανόνες, μπορείτε να τους αλλάξετε ή να τους προσθέσετε για να ταιριάζουν στις απαιτήσεις σας.

Μπορείτε επίσης να διαμορφώσετε το Flake8 ώστε να εκτελείται όταν αποθηκεύετε ενημερώσεις στον κώδικά σας χρησιμοποιώντας VS Code. Όλα αυτά τα χαρακτηριστικά το καθιστούν ένα πολύτιμο εργαλείο για τη σύνταξη προγραμμάτων Python.

Εγκατάσταση του Flake8

Ακολουθήστε τα παρακάτω βήματα για να εγκαταστήσετε το Flake8 στο περιβάλλον ανάπτυξής σας. Μπορεί να χρειαστεί εγκαταστήστε το Pip στο μηχάνημά σας πρώτα.

  1. Εκτελέστε την παρακάτω εντολή στο τερματικό σας για να εγκαταστήσετε το Flake8:
    pip install flake8
  2. Βεβαιωθείτε ότι το Flake8 είναι εγκατεστημένο εκτελώντας την ακόλουθη εντολή:
    flake8 -- έκδοση
  3. Εάν το Flake8 έχει εγκατασταθεί σωστά, θα πρέπει να δείτε την έξοδο παρόμοια με την ακόλουθη:
    4.0.1 (Mccabe: 0.6.1, pycodestyle: 2.8.0, pyflakes: 2.4.0) CPython 3.9.13επί
    Linux

Μόλις εγκαταστήσετε με επιτυχία το Flake8, μπορείτε να αρχίσετε να το χρησιμοποιείτε.

Χρησιμοποιώντας το Flake8 για την ανάλυση κώδικα Python

Για να κατανοήσετε πώς να χρησιμοποιήσετε το Flake8, ξεκινήστε με τον ακόλουθο κώδικα. Έχει μερικά σκόπιμα λάθη. Αντιγράψτε το σε ένα αρχείο που ονομάζεται χαιρετισμός.py.

defχαιρετισμός(όνομα):
Τυπώνω("Γειά σου, " + όνομα)

χαιρετισμός("Αλίκη")
 χαιρετισμός("Βαρίδι")

Εκτέλεση του Flake8 σε ένα μόνο αρχείο

Η σύνταξη για την εκτέλεση του Flake8 σε ένα μόνο αρχείο είναι η εξής.

flake8 path/to/file.py

Σε αυτό το παράδειγμα, μεταβείτε στον κατάλογο που περιέχει το αρχείο greting.py και εκτελέστε την ακόλουθη εντολή.

flake8 χαιρετισμός.py

Το Flake8 θα πρέπει να επιστρέψει το ακόλουθο μήνυμα που δείχνει ότι υπήρχε σφάλμα εσοχής.

χαιρετισμός.py:5:1: Ε999IndentationError: απροσδόκητοςδαντελώνω

Αυτή η έξοδος υποδεικνύει ότι η γραμμή 5 είναι άσκοπα εσοχή. Προς την διορθώστε αυτό το σφάλμα εσοχής, πρέπει να αφαιρέσετε το διάστημα από την αρχή αυτής της γραμμής.

defχαιρετισμός(όνομα):
Τυπώνω("Γειά σου, " + όνομα)

χαιρετισμός("Αλίκη")
χαιρετισμός("Βαρίδι")

Τώρα όταν εκτελείτε το Flake8, θα λαμβάνετε τις ακόλουθες προειδοποιήσεις.

χαιρετισμός.py:4:1: Ε305αναμενόμενος 2 κενόγραμμέςμετάτάξηήλειτουργίαορισμός, βρέθηκαν 1
χαιρετισμός.py:5:16: W292όχινέα γραμμήστοτέλοςτουαρχείο

Αυτή η έξοδος υποδεικνύει τα ακόλουθα ζητήματα:

  • Στη γραμμή 4, θα πρέπει να υπάρχουν δύο κενές γραμμές μετά τον ορισμό της συνάρτησης χαιρετισμού, αλλά υπάρχει μόνο μία.
  • Στη γραμμή 5, θα πρέπει να υπάρχει μια νέα γραμμή στο τέλος του αρχείου.

Μόλις διορθώσετε αυτά τα ζητήματα, το flake8 δεν θα πρέπει να επιστρέψει κανένα μήνυμα.

Μέχρι στιγμής, έχουμε αναλύσει μόνο ένα αρχείο, αλλά στις περισσότερες περιπτώσεις, θα θέλετε να αναλύσετε πολλά αρχεία.

Εκτέλεση του Flake8 σε πολλά αρχεία

Πες ότι σου τηλεφώνησε άλλος test_greeting.py που περιέχει τον ακόλουθο κώδικα:

από χαιρετισμός εισαγωγή χαιρετισμός
deftest_greet():
διεκδικώ χαιρετισμός("Αλίκη") == "Γεια σου, Αλίκη!"

Για να αναλύσετε αυτά τα δύο αρχεία, εκτελέστε την ακόλουθη εντολή.

flake8 greeting.py test_greeting.py

Αυτή η μέθοδος λειτουργεί, αλλά εάν έχετε περισσότερα από δύο αρχεία, η πληκτρολόγηση των ονομάτων των αρχείων μπορεί να είναι κουραστική και επιρρεπής σε σφάλματα.

Είναι πιο αποτελεσματικό να χρησιμοποιήσετε την ακόλουθη εντολή για να αναλύσετε όλα τα αρχεία στον τρέχοντα κατάλογο:

νιφάδα8.

Κατανόηση των σφαλμάτων και των προειδοποιήσεων Flake8

Το Flake8 αναφέρει δύο τύπους ζητημάτων:

  • Σφάλματα: Ένα σφάλμα υποδεικνύει ένα συντακτικό ή δομικό πρόβλημα που εμποδίζει την εκτέλεση του κώδικά σας όπως το σφάλμα εσοχής από το παράδειγμα greeting.py.
  • Προειδοποιήσεις: Μια προειδοποίηση υποδεικνύει ένα πιθανό πρόβλημα ή παραβίαση των οδηγιών στυλ PEP 8, όπως η προειδοποίηση "χωρίς νέα γραμμή στο τέλος του αρχείου" από το παράδειγμα greeting.py.

Μερικά από τα κοινά λάθη και προειδοποιήσεις είναι:

  • E101: η εσοχή περιέχει μικτά κενά και καρτέλες.
  • E302: αναμενόμενες 2 κενές γραμμές, βρέθηκαν 0.
  • E999 IndentationError: μη αναμενόμενη εσοχή.
  • W291: υστερούντα λευκά.
  • E501: πολύ μεγάλη γραμμή (μέγιστο 79 χαρακτήρες).
  • F401: μονάδα εισαγωγής αλλά αχρησιμοποίητη.

Όταν εκτελείτε το Flake8 θα βγάλει ένα μήνυμα όπως αυτό που φαίνεται παραπάνω και τον αριθμό γραμμής και την τοποθεσία κωδικοποίησης στις αναφορές του μηνύματος. Αυτό σας βοηθά να γνωρίζετε πού ακριβώς έχει προβλήματα ο κώδικάς σας που εξοικονομούν χρόνο εντοπισμού σφαλμάτων.

Ρύθμιση παραμέτρων Flake8

Για ορισμένα έργα, οι κανόνες του Flake8 μπορεί να είναι πολύ άκαμπτοι. Σε αυτές τις περιπτώσεις, το Flake8 σάς επιτρέπει να το διαμορφώσετε και να προσαρμόσετε τη συμπεριφορά του ώστε να ταιριάζει στις απαιτήσεις σας.

Μπορείτε να παρέχετε επιλογές διαμόρφωσης όπως:

  • Αγνοώντας συγκεκριμένα σφάλματα ή προειδοποιήσεις.
  • Ρύθμιση του μέγιστου μήκους γραμμής.
  • Καθορισμός πρόσθετων κανόνων.

Για επίδειξη, δημιουργήστε ένα αρχείο διαμόρφωσης με το όνομα setup.cfg. Μπορείτε επίσης να προσθέσετε τις επιλογές διαμόρφωσης σε ένα αρχείο με το όνομα tox.ini ή .flake8.

Σε αυτό το αρχείο, ξεκινήστε δημιουργώντας μια ενότητα flake8 ως εξής:

[νιφάδα8]

Στη συνέχεια, προσθέστε τις επιλογές που θέλετε να διαμορφώσετε:

[νιφάδα8]
μέγιστο μήκος γραμμής = 100
ignore = F401

Σε αυτό το παράδειγμα, το max-line-length = 100 λέει στο Flake8 να εκδίδει προειδοποιήσεις για οποιαδήποτε γραμμή στα αρχεία πηγαίου κώδικα που υπερβαίνει τους 100 χαρακτήρες σε μήκος. ignore = Το F401 λέει στο Flake8 να αγνοήσει σφάλματα που σχετίζονται με αχρησιμοποίητες εισαγωγές.

Δεν χρειάζεται να προσθέσετε αυτές τις επιλογές σε ένα αρχείο ρυθμίσεων, καθώς μπορείτε να τις καλέσετε, καθορίστε τις στη γραμμή εντολών ως εξής:

flake8 --αγνοήστε το E203 --max-line-length 100

Η χρήση ενός αρχείου διαμόρφωσης είναι η καλύτερη προσέγγιση, καθώς δεν χρειάζεται να ορίζετε τις ίδιες επιλογές κάθε φορά που χρησιμοποιείτε το flake8.

Χρήση Flake8 σε VS Code

Εάν χρησιμοποιείτε VS Code για να γράψετε την εφαρμογή Python, μπορείτε να χρησιμοποιήσετε την επέκταση flake8 για να βάλετε τα αρχεία Python σας καθώς πληκτρολογείτε.

Πρώτα, πρέπει να εγκαταστήσετε την επέκταση flake8 από την αγορά VS Code. Στη συνέχεια, για να το διαμορφώσετε, ανοίξτε τις ρυθμίσεις του VS Code και, στη συνέχεια, αναζητήστε το "python.linting.flake8Enabled" και ενεργοποιήστε το linting με το flake8.

Θα πρέπει τώρα να βλέπετε λάθη και προειδοποιήσεις που επισημαίνονται στον κώδικά σας με μια στριμμένη γραμμή καθώς τον γράφετε. Αν τοποθετήσετε το δείκτη του ποντικιού πάνω από το επισημασμένο κείμενο, θα εμφανιστεί ένα μήνυμα που εξηγεί το πρόβλημα και προτείνει πιθανές επιδιορθώσεις.

Αλλα Python IDE όπως το Pycharm, έχουν επίσης επεκτάσεις Flake8 που μπορείτε να διαμορφώσετε για να απλοποιήσετε τη διαδικασία του linting.

Γιατί πρέπει να χρησιμοποιήσετε ένα Linter;

Καθώς γράφετε κώδικα, ενδέχεται να εισάγετε σφάλματα και ασυνέπειες που προκαλούν την αποτυχία της εφαρμογής σας ή προβλήματα απόδοσης. Μια ράβδος όπως το Flake8 σάς επιτρέπει να αντιμετωπίσετε ορισμένα από αυτά τα ζητήματα εκ των προτέρων, βοηθώντας σας να γράψετε καθαρότερο κώδικα. Η ενσωμάτωσή του στη ροή εργασιών ανάπτυξης είναι πολύ σημαντική.

Μπορείτε να το κάνετε αυτό χρησιμοποιώντας το στο πρόγραμμα επεξεργασίας κειμένου ή το IDE και ενσωματώνοντάς το στο συνεχές σας διοχέτευση ενσωμάτωσης για να ελέγχει αυτόματα τον κώδικά σας για σφάλματα και προειδοποιήσεις πριν τον συγχωνεύσετε στο δικό σας κύριο κατάστημα.