2011-12-19 25 views
5

Tôi đã đưa ra một chương trình PHP để làm việc. Tuy nhiên, chương trình này đã được làm việc trong nhiều năm bởi nhiều người khác nhau. Mọi thứ đã bị xóa và thêm theo thời gian. Nhưng hầu hết các tập tin vẫn còn đó.Phân tích một chương trình PHP

Tôi đã tự hỏi có một công cụ ngoài đó có thể phân tích một chương trình PHP. feed nó index.php ví dụ và công cụ này sẽ kiểm tra và xem các tập tin phù thủy được gọi và sử dụng để tôi có thể loại bỏ tất cả gỗ chết mà không còn sử dụng ong.

Tôi đã lên kế hoạch tự viết nó, nhưng một người khác có thể đã làm một việc như thế này.

Mọi đề xuất đều được chào đón, Thx! Mike

+1

PHP không phù hợp với phân tích đó, vì nó cho phép bạn viết 'bao gồm $ _GET ['tệp']'. Không phải là bạn nên làm một điều như vậy, nhưng nó có nghĩa là nó * không thể * để bao gồm tất cả các trường hợp trong đó một tập tin có thể được bao gồm ... – deceze

+2

Con đường này là chín với sai tích cực. Bạn có thể xem tổng quan với trình phân tích nguồn tìm kiếm các tham chiếu chéo tên tệp. Nắm bắt những người năng động với sự chắc chắn là rất khó khăn. Tuy nhiên, bạn có thể sử dụng http://pecl.php.net/package/inclued để xác định các tệp được bao gồm thực sự đáng tin cậy. Và [PHP Depend và những người khác] (http://stackoverflow.com/questions/4156157/tool-for-php-code-analysis) có thể cung cấp nhiều danh sách hữu ích hơn. – mario

Trả lời

1

Bạn có vài tùy chọn, một để sử dụng xdebug và gỡ lỗi cơ bản ứng dụng của bạn, trong khi bạn đang bước qua, bạn sẽ tìm thấy các tệp đang được sử dụng.

Khác là sức mạnh vũ phu :)) bắt đầu xóa từng tệp một và kiểm tra ứng dụng nếu nó bị hỏng hay không. nếu có rất nhiều để kiểm tra, điều này có thể mất một lúc.

Và nếu bạn đang tìm kiếm ứng dụng, hãy tìm kiếm trình kiểm tra phụ thuộc, có những quân đoàn sử dụng các ứng dụng này để kiểm tra sự phụ thuộc giữa các dịch vụ, như amazon.

+0

Tôi sẽ thử xdebug xem điều đó có tác dụng gì. Các lực lượng vũ phu không thực sự là một lựa chọn với kích thước của chương trình và số lượng các tùy chọn trong đó. Điều đó sẽ mất mãi mãi. –

+0

nó là một công cụ gỡ lỗi, bạn có thể bước vào và ra khỏi các tập tin và các lớp học, dễ dàng. – DarthVader

3

Khi lừa dối được đề cập, bạn không thể đảm bảo tìm tất cả các tệp được tham chiếu vì chúng có thể phụ thuộc vào đầu vào của người dùng. Tuy nhiên, cách đơn giản nhất là sử dụng công cụ grep (có một ứng dụng "grep cửa sổ" bạn có thể tải xuống, nếu đó là nền tảng của bạn) và tìm tất cả các lần xuất hiện "bao gồm" và "yêu cầu". Nếu bạn đi qua tình hình được đề cập bởi deceze (bao gồm hoặc yêu cầu theo sau là một tên biến) tập tin cần kiểm tra thủ công, nhưng nếu có một tên tập tin được chỉ định, bạn có thể thêm vào "danh sách được sử dụng".

Có lẽ không phải là giải pháp hiệu quả nhất, nhưng nhanh và trực quan.

+0

Hãy để tôi thử xem, có ổn không nếu nó không chính xác 100%, nếu tôi có thể nhận được 90% của tất cả mã đã chết, nó vẫn là một cải tiến lớn. –

+0

Một màn hình lớn ở đây sẽ được xem ra cho autoloaders. – pinkgothic

1

Bạn có thể nhận được một mảng của tất cả các tệp được bao gồm bằng cách gọi hàm get_included_files(). Bạn có thể nối thêm mỗi tập tin với đoạn mã sau, nó sẽ viết tất cả các tập tin đính kèm vào một mảng trong "include.php", cách dễ nhất để làm như vậy là sử dụng auto_append_file. Tiếp theo, nhấp qua toàn bộ ứng dụng. Khi bạn hoàn thành tất cả các tệp được bao gồm sẽ nằm trong tệp include.php, vì vậy bạn có thể phát hiện tệp nào không thực sự được sử dụng.

<?php 
function writeIncludes(array $includes) { 
    $filename = __DIR__ . '/included.php'; 

    $output = "<?php\nreturn "; 
    if(file_exists($filename)) { 
    $files = include($filename); 
    } 
    else { 
    $files = array(); 
    } 

    $files = array_merge($files, $includes); 
    $output .= var_export($files, true); 

    file_put_contents($filename, $output); 
} 

writeIncludes(get_included_files()); 

Tất nhiên, tập lệnh này không hữu ích để gỡ lỗi ngoài kích thước hiện tại của bạn, nhưng nó sẽ giúp bạn và chạy nhanh đủ. Nó có thể xấu xí, nhưng nó sẽ làm công việc của nó.

Các vấn đề liên quan