Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> statyczna analiza kodu
jaTroll
post
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 21.04.2009

Ostrzeżenie: (0%)
-----


Witam wszystkich

Szukałem ostatnio jakiegoś narzędzia do statycznej analizy kodu, w szczególności zależy mi na detekcji kilku "konstrukcji" które w 99% wypadków są wynikiem błędu np:

* $$zmienna
* $obj->$pole
* $obj = new Object(), ale Object.php nie był zainkludowany
* ostrzerzenie o użyciu lokalnej zmiennej, która nie została zainicjowana

Znalazłem takie narzędzie: http://pear.php.net/manual/en/package.php....codesniffer.php. Problem w tym, że przynajmniej w podstawowej wersji, sprawdza zgodność ze standardami kodowania typu, czy każda funkcja poprzedzona jest dokiem. Dla mnie to trochę za mało. Prawdopodobnie część z rzeczy o które mi chodzi da się załatwić pisząc wtyczkę do tego narzędzia, ale może istnieje coś z czym będzie mniej problemów.

Czy ktoś słyszał albo miał styczność z takim narzędziem?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
jaTroll
post
Post #2





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 21.04.2009

Ostrzeżenie: (0%)
-----


Wiem, że 1,2 są poprawne tak samo jak konstrukcja

  1. function foo()
  2. {
  3. echo "hello";
  4. }


ale można sobie wyobrazic narzędzie które stwierdzi, że otwierająca klamerka nie powinna byc w nowej linii i wyrzuci warninga. Tak samo mogło by ostrzegac przed $$var. Kwestia przyjęcia standardów.

Jeżeli chodzi o detekcje klasy to przyjmując założenie, że wszystkie użyte include będą odwoływały się do statycznych ścieżek, jesteś w stanie stwierdzic, czy dana klasa będzie zadeklarowana, czy nie. Mając skrypt podążasz za includami i przy każdym wystąpieniu new [nazwa klasy]() sprawdzasz, czy taka klasa była wcześniej zadeklarowana.

Analogicznie można by wykrywac użycie niezainicjowanej zmiennej.

Problem z testowaniem przez wykonywanie jest taki, że często podczas wykonywania skryptu nie przechodzisz przez cały kod. W takim wypadku może się okazac, że coś nie działa w nieoczekiwanym momencie. Jedyną skuteczną metodą radzenia sobie z tym są testy jednostkowe, ale wiadomo, że nie zawsze się je pisze i nie zawsze pokrycie jest 100%.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 9.10.2025 - 08:02