"Внезапно падающее, можно локализовать с помощью дебагера." не всегда, не везде, не всегда доступен, а даже если и да - быстро ли локализуешь? (возможно, но куча нюансов) ни эксепшена ни дебажной инфы (даже в сборке с дебагинфо может не оказаться - упало в стороннем объектном коде который as is).
"Вход - вызов, выход - return, или конец ф-ии" да, именно это и найдет парсер) тут возможность автоматически проистронументировать код макросами (например для дебажного принта) который не инструментировали ранее. + можно еще исправлять ошибки вида type * prtVar; */* где инициализация? Предлагаем автоисправление "= NULL" */ * или: free(ptrVar); */* где ptrVar = NULL? */* там еще, int func(void* ptr) { */* где проверка ptr на NULL? */* int smth = *prt; ... } Представленные выше примеры на проверки безопасности кода, относятся к рефакторенгу потому имеют место, хотя возможно (читай скорее всего), уж сделаны в таких тулах как Lint и подобные. 2010/10/9 Артём Шапоренко <artem.shapore...@gmail.com> > "Ну там с помощью парсера можно найти все вхождения, выходы" > Вход - вызов, выход - return, или конец ф-ии, не вижу тут смысла в > иструментировании. > Внезапно падающее, можно локализовать с помощью дебагера. Мне кажется это не > задачи для СА. > > 2010/10/9 Fedor Korshunov <fedor.a.korshu...@gmail.com> > > Ну там с помощью парсера можно найти все вхождения, выходы из функции и >> поместить там отл печать - так можно локализовать внезапно падающее >> приложение). Что еще - то же с выделением памяти, проинстронументировали - >> прогнали узнали был ли mem leak, etc. >> >> >> 2010/10/8 Букирев Андрей <buki...@sarfti.ru> >> >>> Сорри, напутал. >>> >>> Хорошо, Федор, а какие мысли есть по этому поводу? Опиши пожалуйста. >>> >>> >>> >>> - Andrew >>> >>> >>> ------------------------------ >>> >>> *From:* sa_team@googlegroups.com [mailto:sa_t...@googlegroups.com] *On >>> Behalf Of *Fedor Korshunov >>> *Sent:* Friday, October 08, 2010 9:52 AM >>> >>> *To:* sa_team@googlegroups.com >>> *Subject:* Re: SA: AB vision >>> >>> >>> >>> Я имел ввиду инструментация пользовательского кода... хотя, да, это из >>> другой оперы. >>> >>> 2010/10/8 Букирев Андрей <buki...@sarfti.ru> >>> >>> Федор, да. Например, в поставке для заказчика (Intel) нужны только >>> определенные функциональные возможности и определенные данные, все остальное >>> (не нужное и замедляющее работу, увеличивающие объем данных и т.п.) должно >>> быть исключено. >>> >>> >>> >>> SA должен становиться функциональнее, но не уступать предыдущим версиям >>> по параметрам <<время работы - занимаемая память>>. >>> >>> >>> >>> Еще забыл добавить, что ниже написанное планируется делать с учетом >>> реализации и других парсеров: C++, Python, C#, Java. >>> >>> >>> >>> - Andrew >>> >>> >>> ------------------------------ >>> >>> *From:* sa_team@googlegroups.com [mailto:sa_t...@googlegroups.com] *On >>> Behalf Of *Fedor Korshunov >>> *Sent:* Friday, October 08, 2010 9:43 AM >>> *To:* sa_team@googlegroups.com >>> *Subject:* Re: SA: AB vision >>> >>> >>> >>> Для облегчения кода и времени его выполнения, нужно рассмотреть >>> возможность включения / выключении возможностей посредством директив >>> препроцессора. >>> >>> Автоиструментирование кода макросами? Я думал об этом.... точнее думаю, >>> все больше. >>> >>> 2010/10/8 Букирев Андрей <buki...@sarfti.ru> >>> >>> Всем привет, >>> >>> >>> >>> Начнем с того, что я решил отказаться от своей предыдущей темы >>> диссертации. Новая тема приблизительно звучит так: <<*Статический анализ >>> кода и его применение при проектировании, разработке и тестировании ПО*>>. >>> Как вы понимаете, все это я планирую проводить на базе проекта SA. >>> >>> >>> >>> Ниже представлены мои мысли по этому поводу. Они могут меняться, >>> дополняться и убавляться. ))) >>> >>> >>> >>> В настоящее время, разработка ПО все больше смещается в сторону >>> сопровождения и доработки - расширения существующих программных продуктов. >>> Все больше ставится акцент на налаживание процессов тестирования, уделяется >>> внимание чистоте и стройности кода и архитектуры ПО. Получила >>> распространение методология постепенной модификации и <<чистки>> кода - * >>> Рефакторинг*. В свою очередь это влечет к развитию методологической и >>> инструментальной базы - рефакторинг и паттерны проектирования, множество >>> плагинов для современных IDE для проведения рефакторинга. Но при этом >>> большом разнообразии средств, они представляют из себя лишь примитивные >>> инструменты в руках программистов, позволяющих проводить только >>> поверхностные модификации. Задача по выявлению <<кода с душком>> лежит на >>> плечах разработчика. >>> >>> >>> >>> На мой взгляд, SA должен стать утилитой (представлять такой функционал), >>> которая осуществляет анализ графа программы и на основе него: >>> >>> - Определяет количество вызовов данной функции >>> - Определяет кол-во строк кода в данной функции - рефакторинг >>> <<длинная функция>> >>> - Определение размера класса - рефакторинг <<большой класс>> >>> - Определение кол-ва параметров - рефакторинг <<длинный список >>> параметров>> >>> - Определение завистливых функций - функция, которая чрезмерно >>> обращается к данным другого объекта >>> - Определяет цикломатическую сложность >>> - Связанность - связь данного модуля с другими >>> - Связность - связи внутри модуля. >>> - Выдает рекомендации по рефакторингу структуры программы, ее >>> модулей >>> - Выставляет некоторую количественную оценку качества кода >>> - <можно дополнить> >>> >>> >>> >>> Уровни построения графа >>> >>> 1. Функции >>> 2. Условные переходы (условные конструкции, циклы) >>> 3. Операций - операндов (полный граф программы) >>> >>> >>> >>> Идти нужно от простого к сложному - сначала реализовать возможности на >>> уровне функций. >>> >>> >>> >>> Определение проблемных участков по уровням, выдача рекомендаций (указаны >>> страницы из книги <<Рефакторинг. Улучшение существующего кода>> Мартина >>> Фаулера): >>> >>> 1. На уровне функций >>> >>> >>> 1. Длинный метод (87) >>> 2. Большой класс (88) >>> 3. Длинный список параметров (89) >>> >>> >>> 1. На уровне условных переходов >>> >>> >>> 1. Сложный код >>> >>> >>> 1. на уровне операций-операндов >>> >>> >>> 1. дублирование кода (87) >>> 2. завистливые функции (91) >>> 3. группы данных (92) >>> >>> >>> >>> Возможные варианты: >>> >>> - Интеграция в среды разработки в виде плагинов >>> - Независимое использование >>> >>> >>> >>> Для облегчения кода и времени его выполнения, нужно рассмотреть >>> возможность включения / выключении возможностей посредством директив >>> препроцессора. >>> >>> >>> >>> C уважением, >>> >>> - Andrew >>> >>> -- >>> You received this message because you are subscribed to the Google Groups >>> "SourceAnalyzer Team" group. >>> To post to this group, send email to sa_t...@googlegroups.com. >>> To unsubscribe from this group, send email to >>> sa_team+unsubscr...@googlegroups.com<sa_team%2bunsubscr...@googlegroups.com> >>> . >>> For more options, visit this group at >>> http://groups.google.com/group/sa_team?hl=en. >>> >>> >>> >>> >>> -- >>> Best Regards, >>> Fedor Korshunov >>> >>> -- >>> You received this message because you are subscribed to the Google Groups >>> "SourceAnalyzer Team" group. >>> To post to this group, send email to sa_t...@googlegroups.com. >>> To unsubscribe from this group, send email to >>> sa_team+unsubscr...@googlegroups.com<sa_team%2bunsubscr...@googlegroups.com> >>> . >>> For more options, visit this group at >>> http://groups.google.com/group/sa_team?hl=en. >>> >>> -- >>> You received this message because you are subscribed to the Google Groups >>> "SourceAnalyzer Team" group. >>> To post to this group, send email to sa_t...@googlegroups.com. >>> To unsubscribe from this group, send email to >>> sa_team+unsubscr...@googlegroups.com<sa_team%2bunsubscr...@googlegroups.com> >>> . >>> For more options, visit this group at >>> http://groups.google.com/group/sa_team?hl=en. >>> >>> >>> >>> >>> -- >>> Best Regards, >>> Fedor Korshunov >>> >>> -- >>> You received this message because you are subscribed to the Google Groups >>> "SourceAnalyzer Team" group. >>> To post to this group, send email to sa_t...@googlegroups.com. >>> To unsubscribe from this group, send email to >>> sa_team+unsubscr...@googlegroups.com<sa_team%2bunsubscr...@googlegroups.com> >>> . >>> For more options, visit this group at >>> http://groups.google.com/group/sa_team?hl=en. >>> >>> -- >>> You received this message because you are subscribed to the Google Groups >>> "SourceAnalyzer Team" group. >>> To post to this group, send email to sa_t...@googlegroups.com. >>> To unsubscribe from this group, send email to >>> sa_team+unsubscr...@googlegroups.com<sa_team%2bunsubscr...@googlegroups.com> >>> . >>> For more options, visit this group at >>> http://groups.google.com/group/sa_team?hl=en. >>> >> >> >> >> -- >> Best Regards, >> Fedor Korshunov >> >> -- >> You received this message because you are subscribed to the Google Groups >> "SourceAnalyzer Team" group. >> To post to this group, send email to sa_t...@googlegroups.com. >> To unsubscribe from this group, send email to >> sa_team+unsubscr...@googlegroups.com<sa_team%2bunsubscr...@googlegroups.com> >> . >> For more options, visit this group at >> http://groups.google.com/group/sa_team?hl=en. >> > > > > -- > Regards, Artem > > tel. +79200444558 > icq 269910037 > skype artem.shaporenko > Source Analyzer Team > > -- > You received this message because you are subscribed to the Google Groups > "SourceAnalyzer Team" group. > To post to this group, send email to sa_t...@googlegroups.com. > To unsubscribe from this group, send email to > sa_team+unsubscr...@googlegroups.com<sa_team%2bunsubscr...@googlegroups.com> > . > For more options, visit this group at > http://groups.google.com/group/sa_team?hl=en. > -- Best Regards, Fedor Korshunov -- You received this message because you are subscribed to the Google Groups "SourceAnalyzer Team" group. To post to this group, send email to sa_t...@googlegroups.com. To unsubscribe from this group, send email to sa_team+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/sa_team?hl=en.