![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите найти программные инструменты для анализа кода!
kull © (2002-03-11 17:42:00)Народ! Помогите кто может!
Я слышал, что существуют программные продукты для анализа кода на разных языках.
Например поиск потенциально опасных мест на предмет утечки памяти и т.п. Оценка структуры частей кода, структура вызовов функций и методов и т.д.
Я пошарил по поисковикам но почти все для языков типа С++ Java.
Хотелось бы еще что-нибудь для Object-Pascal...
kull (2002-03-12 12:07:00) [1]Да программа для контроля правильной работы с памятью есть:
Memory Sleuth 2 - отличная штука ловит и память и ресурсы неосвобожденные.
Залез на http://www.peganza.com/- да действительно pascal analazer неплохая штука, но глючная.
mio (2002-03-12 11:50:00) [2]Утечки памяти можно ловить и без помощи MemCheck, который, конечно, написан умными людьми, но - уж очень хитро. Можно просто переопределить менеджер памяти и - считать кол-во обращений к Get/FreeMem, объемы, ну, и т.д. и т.п.
Alx2 (2002-03-12 10:29:00) [3]Про "узкие" места в программе - Intel VTune
Андрианов Владимир (2002-03-11 21:38:00) [4]Про утечку памяти - я пользуюсь memchek - модуль, который надо включить в проект,
указывает строчку в коде, где выделяется память, кот. потом не освобождается.
Фэ (2002-03-11 19:33:00) [5]Поищи CodeRush от Eagle Software.
Это не совсем то, что ты хочешь, но великолепный фоновый и организующий инструмент к Delphi&Builder (набор экспертов и пр.).
В том числе - оценка стиля программирования.
Не перестарайся на этом пути, однако.
vuk (2002-03-11 19:29:00) [6]>Все мысли пишутся в виде кода, который обрабатывает компилятор
Компилятор выполняет единственную работу - перемалывает исходник на входе и выдает машинный код на выходе, по-возможности - оптимизированный. Каким-либо серьезным анализом алгоритмов он обычно не занимается.
>А если мыслю не выразить в виде алгоритма о и нечего
>анализировать.
Для достижения одной цели может быть выбрано несколько разных путей, и соответственно, использовано несколько разных алгоритмов.
kull (2002-03-11 19:18:00) [7]И еще.
> а мысли он, как я уже говорил, читать не умеет
Все мысли пишутся в виде кода, который обрабатывает компилятор (он кстати тоже является анализатором). Ведь для того и существует язык программирования. А если мыслю не выразить в виде алгоритма о и нечего анализировать. И не стоит переоценивать людей которые пишут анализируемый код, и недооценивать людей, пишущих инструменты для анализа.
kull (2002-03-11 19:10:00) [8]
> vuk
Спасибо!
Посмотрю что это.
vuk (2002-03-11 19:04:00) [9]>процессе их деятельности появляются учаски кода выполняющие в
>принципе одно и тоже
Все это знакомо, только вот один и тот же по смыслу (или близкий по смыслу) код может выглядеть настолько по-разному у двух разных людей, что ни один анализатор исходников не поможет, а мысли он, как я уже говорил, читать не умеет.
Хотя, возможно, есть кое-что, что может решить часть проблем - http://www.peganza.com/
kull (2002-03-11 18:56:00) [10]
> vuk
Это все верно.
Но стандарт программирования не поможет если код уже написан - это лишь профилактика.
И к тому же при следовании стандартам и определенному стилю, все равно можно написать жуткий код.
Вот еше пример: Повторяющийся код.
Есть несколько разработчиков.
И в процессе их деятельности появляются учаски кода выполняющие в принципе одно и тоже. Неплохо было бы свести это все в одну функцию. Это вариация на тему констант (если надо будет поменять алгоритм...).
vuk (2002-03-11 18:43:00) [11]Это не к качеству кода относится, а к стилю программирования и грамотной организации кода. Это лечится не программами, а выправлением этого самого стиля у программиста, введением стандартов на оформление кода и т.д.
kull (2002-03-11 18:32:00) [12]
> vuk
Вот самый простой вариант.
Например есть код:
1.
------------------------------------
begin
.....
form1.caption := "title1";
.....
form2.caption := "title1";
.....
end;
2.
------------------------------------
const
title = "title1";
begin
.....
form1.caption := title;
.....
form2.caption := title;
.....
end;
-----------------------------------------------
Если потребовалось поменять "title1" на "title2"?
в первом случае:
Надо менять в двух местах. А если таких мест много да еще в разных файлах большого проекта.
во втором случае:
изменяется только строка с константой.
Поиск таких мест (первый вариант) более чем реален и не надо угадывать мысли програмиста.
И это не единственный пример как повысить качество и гибкость кода...
Вот для анализа таких (и других) штук я и хотел бы найти софт.
vuk (2002-03-11 18:16:00) [13]>хотелось бы и для анализа и оценки качества
Что есть критерий качества и как Вы хотите оценить качество кода без его выполнения? Те же утечки памяти только при выполнении всплывают... Программа Ваши мысли читать не будет...
kull (2002-03-11 18:08:00) [14]
> vuk
Спасибо! Я посмотрел.
Но почти все для тестирования и отладки, а хотелось бы и для анализа и оценки качества...
vuk (2002-03-11 17:51:00) [15]Посмотрите http://www.automatedqa.com/