Wydanie PHPStan 1.0, statycznego narzędzia analizy kodu dla języka PHP.

Po sześciu latach prac odbyła się pierwsza stabilna wersja statycznego analizatora PHPStan 1.0, który umożliwia wykrywanie błędów w kodzie PHP bez wykonywania go i używania testów jednostkowych. Kod projektu napisany jest w języku PHP i jest dostępny na licencji MIT.

Analizator oferuje 10 poziomów sprawdzania, przy czym każdy kolejny poziom rozszerza możliwości poprzedniego i wprowadza surowsze kontrole:

  • Podstawowe kontrole, wykrywanie nieznanych klas, funkcji i metod ($this), niezdefiniowanych zmiennych oraz przekazywania błędnej liczby argumentów.
  • Wykrywanie prawdopodobnie niezdefiniowanych zmiennych, nieznanych magicznych metod oraz właściwości klas z __call i __get.
  • Wykrywanie nieznanych metod we wszystkich wyrażeniach, nie ograniczając się do wywołań przez $this. Sprawdzanie PHPDocs.
  • Sprawdzanie typów zwracanych oraz przypisywania typów właściwościom.
  • Podstawowe wykrywanie «martwego» (nigdy nie wykonywanego) kodu. Wykrywanie wywołań instanceof, które zawsze zwracają wartość false, nigdy nieaktywowanych bloków «else» oraz kodu znajdującego się po return.
  • Sprawdzanie typów argumentów przekazywanych do metod i funkcji.
  • Ostrzeżenie o braku adnotacji z informacjami o typach.
  • Ostrzeżenie o niepoprawnych typach union, definiujących kolekcje z dwóch i więcej typów.
  • Ostrzeżenie o wywoływaniu metod i dostępie do właściwości z typami «nullable».
  • Sprawdzanie użycia typu «mixed».

    Przykłady wykrywanych podstawowych problemów:

    • Istnienie klas używanych w instanceof, catch, typehints i innych konstrukcjach językowych.
    • Istnienie i dostępność wywoływanych metod i funkcji oraz liczba przekazywanych argumentów.
    • Sprawdzanie, czy metoda zwraca dane tego samego typu, co określono w wyrażeniu return.
    • Istnienie i widoczność właściwości, do których następuje odwołanie, a także sprawdzanie zadeklarowanych i rzeczywistych typów danych używanych w właściwościach.
    • Poprawność liczby parametrów przekazanych w wywołaniach sprintf/printf w bloku formatowania ciągów.
    • Istnienie zmiennych z uwzględnieniem bloków tworzonych przez operatory rozgałęzienia i pętle.
    • Bezużyteczne rzutowania typów (np. «(string) ‘foo’») oraz ścisłe kontrole («===» i «!==») danych o różnych typach i operatorach, które zawsze zwracają wartość false.

    Kluczowe nowości PHPStan 1.0:

    • Zrealizowano poziom weryfikacji „9”, który przeprowadza kontrole użycia typu „mixed”, zaprojektowanego do organizacji przyjmowania funkcji parametrów z różnymi typami. Dziewiąty poziom wykrywa niebezpieczne zastosowania „mixed”, takie jak przekazywanie wartości typu „mixed” innemu typowi, wywoływanie metod z typem „mixed” oraz dostęp do jego właściwości, które mogą nie istnieć.
    • Zarządzanie weryfikacją tożsamości zwracanych wartości dla tych samych wywołań funkcji z wykorzystaniem adnotacji @phpstan-pure i @phpstan-impure.
    • Analiza typów w konstrukcjach try-catch-finally z wykorzystaniem adnotacji @throws.
    • Wykrywanie określonych, ale nieużywanych wewnętrznych (private) właściwości, metod i stałych.
    • Przekazywanie niekompatybilnych wywołań callback w funkcjach operujących na tablicach, takich jak array_map i usort.
    • Inspekcja typów dla brakujących adnotacji typehint.
    • Zapewniono zgodność opisów typów z PHPDocs, co pozwala na używanie w PHPDocs typów z komunikatów o błędach.

    Źródło: opennet.ru

  • Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster