PHP dosyaları için [Lifinden gibi] bir statik kod analizi var mı?

13 Cevap php

PHP dosyaları için bir statik kod analizi var mı? İkili kendisi yazım hatalarını kontrol edebilirsiniz, ama kullanılmayan ilk başlatıldı olmadan içine atanır değişken atamaları, diziler, ve muhtemelen kod tarzı uyarılardan gibi, daha fazla bir şey için arıyorum. Açık kaynak programları tercih olurdu, ama biz bunu tavsiye eğer bir şey için ödemek için şirketi ikna olabilir.

13 Cevap

Yürütme olmadan sözdizimi doğrulamak için komut satırından tiftik-modunda php çalıştırın:

  • php -l FILENAME

Üst düzey statik analiz cihazları şunlardır:

Alt düzey analiz cihazları şunlardır:

PHPs dinamik yapısı nedeniyle bazı şeyler için daha yararlıdır Çalışma analizörleri, şunlardır:

Dokümantasyon kütüphaneleri phpdoc ve doxygen kod analizi bir tür yapar. Doxygen, örneğin, graphviz güzel miras grafikler oluşturmak için yapılandırılabilir.

Başka bir seçenek üretim sunucuları için uygun hale xdebug benzer, fakat daha hafif olan, xhprof olduğunu. Aracı PHP tabanlı arayüzü içerir.

Online PHP lint

PHPLint

Unitialized variables check. Link 1 ve 2 zaten olsa da, sadece iyi bunu görünmektedir.

Ama, ben yoğun Bunlardan herhangi kullanılan diyemeyiz :)

Bütünlüğü için - Ayrıca kontrol phpCallGraph.

PHP Mess Dedektör harika ve hızlı.

http://phpmd.org/

Bkz Semantic Designs' CloneDR, kopyala / yapıştır / düzenlenebilir kodu bulur "klon tespiti" aracı. Bu boşluk, yorum ve hatta değişken renamings rağmen, kesin ve bayan kod parçaları yakın bulacaksınız. PHP için örnek bir algılama raporu wesite bulunabilir. (Ben yazar değilim).

Ben $ php-l ve birkaç diğer araçları kullanarak denedim. Ancak benim deneyim iyi bir (YMMV, elbette) scheck of pfff toolset. Ben Quora üzerine pfff (http://www.quora.com/Is-there-a-good-PHP-lint-static-analysis-tool) duydum

Bunu derleyip yükleyebilirsiniz. (Benim nane Debian, ben libpcre3-dev, ocaml, libcairo-dev, libgtk-3-dev ve libgimp2.0-dev bağımlılıkları ilk kurmak zorunda kaldım) ama bir intsall değer olmalıdır hayır güzel paketleri vardır.

Sonuçlar gibi raporlanır

rjha@mint ~ $ ~/sw/pfff/scheck ~/code/github/sc/
login-now.php:7:4: CHECK: Unused Local variable $title
go-automatic.php:14:77: CHECK: Use of undeclared variable $goUrl.

Orada adında yeni bir araç nWire for PHP. Bu Eclipse PDT ve Zend Studio 7.x için bir kod keşif eklentisi PHP için gerçek zamanlı kod analizi sağlar ve aşağıdaki araçları sunar:

  • Kod görselleştirme - bileşenleri ve derneklerin etkileşimli grafik gösterimi.
  • Kod gezinme - benzersiz navigasyon görünümü tüm dernekleri gösterir ve kod yazmak ya da okumak da sizinle birlikte çalışır.
  • Hızlı arama - vb yöntemleri, alanlar, dosya, için Yazarken arama

NetBeans IDE sözdizimi hataları, unusued değişkenler ve bu denetler. Bu otomatik, ancak küçük veya orta ölçekli projeler için çalışıyor değil.

PHPUnit eski bir parçası olarak PHP PMD (proje karışıklık dedektör) ve PHP CPD (kopyala yapıştır dedektör)

Denilen statik kod analizi için kesinlikle yeni bir araç var PHP Analyzer.

Statik analiz birçok türleri arasında ayrıca bakınız, temel oto-sabitleme işlevselliği sağlayan documentation.

Ayrıca, PHP Compiler Bir deneyin belki değer. Ana işlevi PHP çalıştırılabilirlerini üretmek olduğunu ancak bazı analiz yetenekleri var.

Sen Facebook'un hiphop ile derleme denemek isteyebilirsiniz.

Bu tüm proje üzerinde statik analiz yapar ve aradığınız şey olabilir.

https://github.com/facebook/hiphop-php

Orada RIPS - A static source code analyser for vulnerabilities in PHP scripts. Mevcut Rips Kaynakları SourceForge.

RIPS siteden:

RIPS is a tool written in PHP to find vulnerabilities in PHP applications using static code analysis. By tokenizing and parsing all source code files RIPS is able to transform PHP source code into a program model and to detect sensitive sinks (potentially vulnerable functions) that can be tainted by userinput (influenced by a malicious user) during the program flow. Besides the structured output of found vulnerabilities RIPS also offers an integrated code audit framework for further manual analysis.