Из разницы в коде PHP можете ли вы сказать, какие классы и функции изменились?

Фон:

PHPDoc ( http://www.phpdoc.org/ ) — отличный инструмент для извлечения html-документации ваших классы или методы из комментариев в ваших файлах. Добавление комментариев PHPDoc также имеет другие преимущества: если вы используете IDE, такую ​​как Zend или Netbeans, она будет использовать PHPDocs, чтобы показать вам советы по автозаполнению.

В большинстве систем отслеживания проблем есть функция, с помощью которой вы можете зафиксировать в своей системе управления версиями специальный комментарий, и она автоматически свяжет эту фиксацию с этой проблемой.

Итак, вот что я хочу от системы: я фиксирую некоторый код со специальным комментарием, и мой трекер проблем связывает его с проблемой. Затем он просматривает коммит и выясняет, какие методы и классы я изменил. Затем он говорит: «Если вы ищете документацию по этой проблеме, попробуйте эти фрагменты PHPDoc: ClassX.FunctionY, ClassZ.VariableP». Он автоматически указывает пользователям на документацию, которая может быть актуальной. Я думаю, что это была бы отличная функция.

Вопрос:

Таким образом, часть, которой не хватает, - это то, что нужно сравнить с PHP-кодом и выяснить, какие классы и методы изменились. У кого-нибудь есть какие-либо указатели на какой-то код, который может это сделать?

Заранее спасибо, Джеймс


person James    schedule 30.04.2009    source источник
comment
Вы ищете что-то готовое, что делает это, или советы о том, как собрать это самостоятельно?   -  person Josh    schedule 07.05.2009
comment
Джош — любой, но желательно готовый   -  person James    schedule 13.05.2009


Ответы (4)


Если вы используете subversion, вы можете увидеть различия всех файлов, которые были изменены в проекте. И посмотрите, чем они отличаются.

Есть программное обеспечение со встроенной поддержкой подрывной деятельности, например Trac.

Вот изображение TracDiff

person Ólafur Waage    schedule 12.05.2009
comment
К сожалению, знать, какие файлы изменились, НЕ ТОЖЕ, что знать, какие классы и функции изменились. В каждом файле может быть несколько классов и функций. Вам нужно разобрать PHP, и это не тривиально, поэтому мой вопрос. Извините, но спасибо за ваше время. - person James; 13.05.2009

Вам нужен инструмент, который глубоко понимает структуру PHP, то есть может анализировать исходный текст PHP так же, как это делает движок PHP.

Наш «Smart Diff» делает это, позволяя сравнивать пары файлов PHP, которые, как вы знаете, являются исходной и измененной версией. Он сравнивает AST и находит минимальные изменения для сопоставления одного с другим. Если старый и новый методы вообще похожи, он обнаружит это и сообщит вам, как один из них был отредактирован, чтобы получить другой. См. http://www.semdesigns.com/Products/SmartDifferencer/index.html

person Ira Baxter    schedule 17.06.2009
comment
Звучит блестяще, но мне это нужно для идентификации структур классов и методов, и неясно, делает ли это это. Я думаю, это то, что они могли бы легко обеспечить. Но общая идея кажется блестящей: меня как программиста раздражали некоторые вещи, о которых они говорят. Иногда я даже думаю о том, чтобы отформатировать исходный код исключительно для того, чтобы получить как можно более аккуратный diff. Спасибо. - person James; 25.06.2009

http://uk3.php.net/reflection

В PHP5 есть методы для разбора класса и проверки всех методов, включая предоставление мне номеров строк, которые мне нужны для сопоставления с diff. Используя это, я могу начать вручную сворачивать свое собственное решение.

person James    schedule 25.06.2009

вы можете написать сценарий после фиксации, который получает измененные файлы и просматривает их, чтобы делать то, что вы хотите

person Gabriel Solomon    schedule 25.06.2009
comment
См. мой комментарий к Олафуру Вааге - person James; 25.06.2009