Κυκλοφορία του PHPStan 1.0, ενός στατικού αναλυτή για τον κώδικα PHP

Μετά από έξι χρόνια ανάπτυξης, πραγματοποιήθηκε η πρώτη σταθερή έκδοση του στατικού αναλυτή PHPStan 1.0, ο οποίος σας επιτρέπει να βρείτε σφάλματα στον κώδικα PHP χωρίς να τον εκτελέσετε και να χρησιμοποιήσετε δοκιμές μονάδας. Ο κώδικας του έργου είναι γραμμένος σε PHP και διανέμεται με την άδεια MIT.

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

  • Βασικοί έλεγχοι, ορισμός άγνωστων κλάσεων, συναρτήσεων και μεθόδων ($this), ακαθόριστες μεταβλητές και διαβίβαση λανθασμένου αριθμού ορισμάτων.
  • Προσδιορισμός πιθανών μη καθορισμένων μεταβλητών, άγνωστων μαγικών μεθόδων και ιδιοτήτων κλάσεων με __call και __get.
  • Ανίχνευση άγνωστων μεθόδων σε όλες τις εκφράσεις, χωρίς περιορισμό στις κλήσεις μέσω $this. Έλεγχος PHPDocs.
  • Έλεγχος τύπων επιστροφής και αντιστοίχιση τύπων σε ιδιότητες.
  • Βασική αναγνώριση του «νεκρού» (που δεν ονομάστηκε ποτέ) κωδικός. Προσδιορίστε περιπτώσεις κλήσεων που επιστρέφουν πάντα ψευδείς, μπλοκ "άλλο" που δεν ενεργοποιούνται ποτέ και κωδικοποιήστε μετά την επιστροφή.
  • Έλεγχος των τύπων ορισμάτων που μεταβιβάζονται σε μεθόδους και συναρτήσεις.
  • Προειδοποίηση σχετικά με την έλλειψη σχολιασμών πληροφοριών τύπου.
  • Προειδοποίηση για λανθασμένους τύπους ένωσης που ορίζουν συλλογές δύο ή περισσότερων τύπων.
  • Προειδοποίηση σχετικά με μεθόδους κλήσης και πρόσβαση σε ιδιότητες με τύπους "nullable".
  • Έλεγχος χρήσης του «μικτού» τύπου.

    Παραδείγματα υποκείμενων προβλημάτων που εντοπίστηκαν:

    • Η ύπαρξη κλάσεων που χρησιμοποιούνται σε instanceof, catch, typehints και άλλες γλωσσικές κατασκευές.
    • Η ύπαρξη και η διαθεσιμότητα μεθόδων και συναρτήσεων που καλούνται, καθώς και ο αριθμός των ορισμάτων που διαβιβάστηκαν.
    • Έλεγχος ότι η μέθοδος επιστρέφει δεδομένα με τον ίδιο τύπο που ορίζεται στην έκφραση επιστροφής.
    • Η ύπαρξη και η ορατότητα των ιδιοτήτων στις οποίες έχει πρόσβαση και ο έλεγχος των δηλωθέντων και πραγματικών τύπων δεδομένων που χρησιμοποιούνται στις ιδιότητες.
    • Ο αριθμός των παραμέτρων που μεταβιβάστηκαν στις κλήσεις sprintf/printf στο μπλοκ μορφοποίησης συμβολοσειράς είναι σωστός.
    • Η ύπαρξη μεταβλητών που λαμβάνουν υπόψη μπλοκ που σχηματίζονται από τελεστές διακλάδωσης και βρόχους.
    • Άχρηστες εκδόσεις τύπου (π.χ. "(string) 'foo'") και αυστηρές δοκιμές ("===" και "!==") σε δεδομένα με διαφορετικούς τύπους και τελεστές που πάντα επιστρέφουν ψευδείς.

    Βασικές καινοτομίες στο PHPStan 1.0:

    • Έχει εφαρμοστεί το επίπεδο ελέγχου «9», το οποίο ελέγχει τη χρήση του «μικτού» τύπου, που προορίζεται για την οργάνωση της λήψης παραμέτρων της συνάρτησης με διαφορετικούς τύπους. Το επίπεδο εννέα προσδιορίζει μη ασφαλείς χρήσεις του "μικτού", όπως η μετάδοση τιμών του τύπου "μικτός" σε έναν άλλο τύπο, η κλήση μεθόδων τύπου "μικτές" και η πρόσβαση στις ιδιότητές του επειδή μπορεί να μην υπάρχουν.
    • Ελέγξτε εάν οι επιστρεφόμενες τιμές είναι πανομοιότυπες για τις ίδιες κλήσεις συναρτήσεων χρησιμοποιώντας τους σχολιασμούς @phpstan-pure και @phpstan-impure.
    • Πληκτρολογήστε ανάλυση σε κατασκευές try-catch-finally χρησιμοποιώντας σχολιασμούς @throws.
    • Προσδιορισμός καθορισμένων αλλά αχρησιμοποίητων εσωτερικών (ιδιωτικών) ιδιοτήτων, μεθόδων και σταθερών.
    • Μεταβίβαση μη συμβατών ανακλήσεων σε συναρτήσεις πίνακα όπως array_map και usort.
    • Επιθεώρηση τύπου για σχολιασμούς πινακίδας που λείπουν.
    • Έγινε δηλώσεις τύπου συμβατές με PHPDoc, επιτρέποντας τη χρήση τύπων από μηνύματα σφάλματος σε PHPDoc.

    Πηγή: opennet.ru

  • Προσθέστε ένα σχόλιο