7. ANALIZA STATYCZNA
● Metoda analizy statycznych
obiektów mająca na celu
wnioskowanie nt. ich własności
● Możemy analizować kod
źródłowy, binaria, wszystko co
się nie rusza.
8. Po co?
● Żeby wykryć błędy w naszym kodzie (XSS,
buffer overflow, ...)
● Żeby wykryć niedoróbki w naszym kodzie
(dead code, redundancja, …)
● Żeby poprawić jakość projektu (patrz
wyżej)
● Żeby uzyskać metryki (np. złożoność kodu)
13. Jak używać?
● Integracja ze środowiskiem developerskim
● Wspomagając proces przeglądu kodu
● Na koniec projektu (czy jesteśmy skazani wtedy na
porażkę?)
● Jakich wyników powinniśmy się spodziewać?
15. Statyczna analiza jest
skomplikowana
● Bardzo trudna w przypadku języków
statycznych (C, C++, JAVA...)
● EKSTREMALNIE trudna w przypadku
języków dynamicznych (PHP,
Python)
● Skąd bierze się trudność analizy?
● Jak wnioskować nt. kodu?
● Jak być pewnym wniosków?
● Czy false positives to duży kompromis?
18. WTF? - false positives!
● Możemy dostrajać naszą analizę
(np. klocwork, splint, …)
● czułość, zakres, …
● Możemy o niej myśleć programując
● ograniczanie się do podzbiorów języka
● dekorowanie kodu
● Możemy przestać z niej korzystać... albo...
● Możemy nauczyć się z nią żyć ...
22. PHP
● Czy jest na sali ktoś, kto nie słyszał o PHP?
● Bardzo popularny, dynamiczny język o
dziwnych właściwościach!
● Korzystają z niego giganci (NK, facebook, ...)