Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Для профи > статический анализ кода


Автор: dipsy 30.10.2006, 08:47
Используете ли вы какие-то программы статического анализа кода? Если да - посоветуйте, пожалуйста.

Автор: Opik 30.10.2006, 12:45
dipsy, 
нет smile

Автор: -=Ustas=- 30.10.2006, 12:56
Цитата(dipsy @  30.10.2006,  08:47 Найти цитируемый пост)
Используете ли вы какие-то программы статического анализа кода? Если да - посоветуйте, пожалуйста. 

Что есть "статически анализировать код"?!

Автор: dipsy 30.10.2006, 13:15
Цитата(-=Ustas=- @  30.10.2006,  12:56 Найти цитируемый пост)
Что есть "статически анализировать код"?! 

Хм.. на RSDN сказали, что называется это именно так "статический анализ кода".

В-общем, на сайте IBM видел статью, в которой рассказывалось, что есть такие утилиты, которые позволяют выявлять ошибки, слабые места кода в разных языках программирования, а в частности, - Java, С++. на rsdn я интересовался, есть ли что-то для тестирования кодов PHP. мне ответили, что есть, но ничего конкретного посоветовать не могут.

Автор: -=Ustas=- 30.10.2006, 14:04
Цитата(dipsy @  30.10.2006,  13:15 Найти цитируемый пост)
которые позволяют выявлять ошибки, слабые места кода в разных языках программирования,

А, это....

Добавлено @ 14:14 
Из ответа на rsdn
Цитата

#  PHP executes a built-in basic Lint check when invoked with the -l switch. Example usage: for i in `find . -name \*.php`; do php -l $i | grep -v "No syntax errors"; done
# PMD's Copy/Paste Detector
# Zend Studio IDE includes static code analysis for PHP, called the "Code Analyzer".
# ocProducts code quality checker
# Armorize CodeSecure — The first security appliance for PHP source code scanning with traceback support and Web 2.0 interface.

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

Автор: dipsy 30.10.2006, 21:08
Цитата(-=Ustas=- @  30.10.2006,  14:04 Найти цитируемый пост)
Из ответа на rsdn
-=Ustas=-, всё так, но только нужен не "софт предназначеный кажется для этого", а нормальный рабочий инструмент, которым кто-то уже пользуется и может дать дельный совет.

прошу прощения, что пишу off topic, но это не есть мой путь - быть первооткрывателем. Потому и спрашиваю тут снова, а не довольствуюсь ответом на форуме rsdn.

Автор: -=Ustas=- 31.10.2006, 09:23
Цитата(dipsy @  30.10.2006,  21:08 Найти цитируемый пост)
а нормальный рабочий инструмент

Ты зенд студио смотрел?! Там вполне рабочий инструмент.

Автор: dipsy 31.10.2006, 10:34
У меня нет Zend Studio. (он платный, на сколько я в курсе)

Автор: skalex 31.10.2006, 12:31
dipsy, ну так купи его!  smile

И действительно, необходимость "статистического анализа кода", в частности для PHP, не совсем понятна.

Автор: -=Ustas=- 31.10.2006, 13:27
Цитата(dipsy @  31.10.2006,  10:34 Найти цитируемый пост)
У меня нет Zend Studio. (он платный, на сколько я в курсе) 

На нашем форуме запрещено обсуждать возможности бесплатного использования платных продуктов, поэтому спроси у гугла, как использовать бесплатно платный зенд smile он тебе много чего скажет, даже поможет.

Автор: IZ@TOP 31.10.2006, 15:17
dipsy, акромя ZendStudio, я не видел ни одной программы для анализа PHP кода. Так что качай демо версию и гляди на возможности. Если понравится можешь купить или...
офф:
-=Ustas=-, эк завернул, не придерешься  smile .

Автор: dipsy 31.10.2006, 18:38
Цитата(skalex @  31.10.2006,  12:31 Найти цитируемый пост)
dipsy, ну так купи его! 

Цитата(-=Ustas=- @  31.10.2006,  13:27 Найти цитируемый пост)
запрещено обсуждать возможности бесплатного использования платных продуктов

Имел в виду, что стараюсь подыскивать бесплатные программы. зачем издеваться-то?

Цитата(skalex @  31.10.2006,  12:31 Найти цитируемый пост)
необходимость "статистического анализа кода", в частности для PHP, не совсем понятна

Думаю, что надо сначала посмотреть, какие рекомендации дают эти программы. Люди используют подобный софт для других языков, и мне наоборот не понятно, - чем PHP так принципиально отличается, что для него такой необходимости нет. По мне - так она точно есть. Потому как писать модули, тестировать и настраивать стили приходится одному. Потому и хочется часть работы хоть как-то автоматизировать.

Автор: IZ@TOP 1.11.2006, 12:41
Цитата(dipsy @  31.10.2006,  19:38 Найти цитируемый пост)
Люди используют подобный софт для других языков, и мне наоборот не понятно, - чем PHP так принципиально отличается, что для него такой необходимости нет. По мне - так она точно есть.

Полнолстью поддерживаю. РНР отличается лишь тем что на нем иногда пишут люди ленивые или несведущие.
Советую почитать еще про разработку по методологии TDD http://phpclub.ru/faq/wakka.php?wakka=TDD.

Автор: dipsy 5.11.2006, 10:54
Цитата(IZ@TOP @  1.11.2006,  12:41 Найти цитируемый пост)
Советую почитать еще про разработку по методологии TDD 

читал кое-что по этой теме в книге:
http://www.williamspublishing.com/Books/5-8459-0925-2.html Джордж Шлосснейгл 
Такой способ работы должен увеличить срок написания проекта; раз качество улучшается, значит придётся увеличивать время.

Автор: CyClon 5.11.2006, 18:10
Анализатор кода? Выявить ошибки - это может и сам PHP, а вот найти слабые места... Думая лучше прочитать несколько серьезных книжек и не допускать понятия "слабые места" с своем код ;) Компьютер пока что не обладает IQ и полностью положиться на него нельзя, он делаешь лишь все по шаблону.

Автор: xolod 5.11.2006, 18:47
Zend Studio — ужасно тихий ужас (мнение мое, никого переубеждать не хочу). За свои же деньги, если забыть о «бесплатном».
Профайлера, отладчика и анализатора в одном лице будет вполне достаточно. Лучший (на мой взгляд) и бесплатный — xDebug (http://www.xdebug.org/).

Автор: dipsy 5.11.2006, 19:35
Цитата(CyClon @  5.11.2006,  18:10 Найти цитируемый пост)
Выявить ошибки - это может и сам PHP
...ну вот, а я-то думал, что код и с ошибками будет работать. smile  
Цитата(CyClon @  5.11.2006,  18:10 Найти цитируемый пост)
а вот найти слабые места...
почему не предположить, что анализатор найдёт, например, какое-то место в коде, где переменная, пришедшая от пользователя соберётся пойти в БД без предварительной обработки? а это ведь не ошибка, а слабое место. PHP легко это пропустит. (не утверждаю, а предполагаю, потому как пока не много анализаторов увидел - Zend и PMD, да особо и не просмотрел их). 

в рамках данного топика предлагаю считать: слабое место = ошибка (в логике)

наверняка, какие-то ещё подобные ошибки могут быть в коде... столь же очевидные, но мне пока ещё не известные.

Цитата(CyClon @  5.11.2006,  18:10 Найти цитируемый пост)
и не допускать понятия "слабые места" с своем код ;) 

1) CyClon, вы знаете все всевозможные слабые места которые могут возникнуть при работе с PHP?
2) почему именно в своём коде? а если я захочу взять чужой, из-за нехватки времени, то мне и при этом не пользоваться анализатором, а разбирать самому? - так легче с нуля всё написать.
Цитата(CyClon @  5.11.2006,  18:10 Найти цитируемый пост)
полностью положиться на него нельзя, он делаешь лишь все по шаблону
кто-то говорил о том, что собирается полностью полагаться на анализатор кода? кто-то уверял, что книги равноценны анализатору?

а кроме, CyClon, мысль такая: если комп показывает ошибку, значит стоит обратить внимание на это; думаю, что после того, как раза три поправишь ошибку, то больше не будет желания её допускать. и в результате качество создаваемого кода должно улучшится.

Цитата(CyClon @  5.11.2006,  18:10 Найти цитируемый пост)
лучше прочитать несколько серьезных книжек 
  smile посоветуйте, пожалуйста, серьёзные книги на тему поиска слабых мест в коде. 

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

Автор: CyClon 5.11.2006, 20:51
Цитата
1) CyClon, вы знаете все всевозможные слабые места которые могут возникнуть при работе с PHP?


Я врятли в небольшом куске кода забуду проэкранировать полученную от юзера инфу, например. То же самое сделает Zend. Но если я напишу логически неправильный код (Пусть даже какие-то операции попутаю местами), то имхо, детище Zend и подавну не найдет это "слабое место".

Цитата
а кроме, CyClon, мысль такая: если комп показывает ошибку, значит стоит обратить внимание на это; думаю, что после того, как раза три поправишь ошибку, то больше не будет желания её допускать. и в результате качество создаваемого кода должно улучшится.


Поэтому я всегда ставлю error_reporting(E_ALL), чтобы видеть все ошибки, исправлять их и более не допускать.

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


Ты все мои фразе прековеркиваешь, я пишу о книжках, которые, допустим, помогают избавится от дурной привычки оставлять слабые места в коде, а не по поиску последних. Для начала "Профессиональное программирование на PHP, 2 издание" все-таки имеет немало отличий от книги "PHP для чайников".

Автор: dipsy 5.11.2006, 21:46
Цитата(CyClon @  5.11.2006,  20:51 Найти цитируемый пост)
Я врятли в небольшом куске кода забуду...

охотно верю, касаясь конкретно этого; но важно другое:
Цитата(dipsy @  5.11.2006,  19:35 Найти цитируемый пост)
наверняка, какие-то ещё подобные ошибки могут быть в коде... столь же очевидные, но мне пока ещё не известные.
важна возможность проверить достаточно большой код на предмет простых ошибок этого уровня. которые могут возникнуть просто по невниманию.
Цитата(CyClon @  5.11.2006,  20:51 Найти цитируемый пост)
Zend и подавну не найдет это "слабое место".
не знаю, что он найдёт, а что нет. думаю, что вы тоже не знаете. о чём тогда речь? тем более, что кроме Zend есть другие анализаторы. я предпочитаю проверить, может быть, позже отпишу о результатах.
Цитата(CyClon @  5.11.2006,  20:51 Найти цитируемый пост)
 я пишу о книжках, которые, допустим, помогают избавится от дурной привычки оставлять слабые места в коде, а не по поиску последних.

честно, - не вижу принципиальных отличий.
Цитата(CyClon @  5.11.2006,  20:51 Найти цитируемый пост)
всегда ставлю error_reporting(E_ALL) 
это сильно отличается от error_reporting(E_ALL ^ E_NOTICE) ?
Цитата(CyClon @  5.11.2006,  20:51 Найти цитируемый пост)
Ты все мои фразе прековеркиваешь
прошу прощения... есть у меня такое свойство... мнительность называется.

Автор: CyClon 6.11.2006, 14:35
Цитата
error_reporting(E_ALL ^ E_NOTICE) ?


Может я и ошибаюсь, но помоему эта функцию устанавливает вывод всех ошибок кроме NOTICE. Так вот, необъявленная переменная - это NOTICE. Если ты проигнорируешь сообщение (а так и будет, ты его даже не увидишь), то можно прописать /?var=value и все (При вклеченных register_globals, а они включены почти везде, если не брать в счет localhost).

Автор: IZ@TOP 7.11.2006, 22:32
CyClon, ты не ошибаешься. А register_globals отключен на всяком сервере уважающего себя хостера, ну, и у опытных программистов, разумеется.

А зенда, к примеру, метит все что можно отнести к багам. К примеру такие труднообнаружаемые вещи как присвоение в условии:
Код


$alone = 1;
if($alone = 1) {
    echo "Я один...";
} else {
    echo "Я не один!";
}


Разумеется я буду всегда один, ибо не внимательный. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)