Здравствуйте, Евгений Рыжков, Вы писали:
ЕР>Ах, если бы были те десять строк кода, с помощью которых можно оценить продукт с более чем 80 диагностиками только общего назначения, не считая 64-битных и параллельных ошибок.
Ну так это и не все, что CppCheck может, так что сравнение пока не в вашу пользу. А что ваш продукт предлагает для параллельных вычислений? Диагностирует взаимные блокировки?
Ytz>> Научились проверять отдельные файлы, без создания проекта?
ЕР>В реальном процессе разработки проверять отдельные файлы вне проекта особого смысла нет. Просто не возникает такой задачи. Но да, у нас есть конечно же функционал для проверки отдельных файлов как в рамках проекта, так и без файла проекта, просто из командной строки.
Молодцы, развиваетесь. Как только сделаете версию для Linux и догоните CppCheck можно будет присмотреться повнимательней.
Искренне желаю удачи!
Здравствуйте, Ytz, Вы писали:
Ytz>Здравствуйте, Евгений Рыжков, Вы писали:
ЕР>>Говорить, что PVS-Studio отстой только потому, что не работает на Linux — это некорректно.
Ytz>Корректно, если разработка идет на Linux.
ЕР>>Что касается "на тестовом коде..." Можно сделать тестовый код на котором PVS-Studio ничего не найдет, можно — на котором CppCheck.
Ytz>Если не затруднит, что скажет ваша продукт на этот код:
V557 Array overrun is possible. The '10' index is pointing beyond array bound.
V519 The '__p' variable is assigned values twice successively. Perhaps this is a mistake.
Ах, если бы были те десять строк кода, с помощью которых можно оценить продукт с более чем 80 диагностиками только общего назначения, не считая 64-битных и параллельных ошибок.
Ytz> Научились проверять отдельные файлы, без создания проекта?
В реальном процессе разработки проверять отдельные файлы вне проекта особого смысла нет. Просто не возникает такой задачи. Но да, у нас есть конечно же функционал для проверки отдельных файлов как в рамках проекта, так и без файла проекта, просто из командной строки.
Здравствуйте, Евгений Рыжков, Вы писали:
ЕР>Говорить, что PVS-Studio отстой только потому, что не работает на Linux — это некорректно. Что касается "на тестовом коде..." Можно сделать тестовый код на котором PVS-Studio ничего не найдет, можно — на котором CppCheck.
ЕР>Кстати PVS-Studio очень активно развивается и постоянно появляются новые диагностики. Так что то, что было раньше сейчас уже по-другому.
К сожалению PVS-Studio стоит очень дорого.
У нас руководство не готово тратить 3500 евро в год на качество кода.
Здравствуйте, rumit7, Вы писали:
R> лицензии у меня нет, просто нашел рабочую версию Coverity на одном форуме. Конечно не последняя версия, да и дату приходится постоянно отматывать назад, но все-же лучше чем НИЧЕГО!
Здравствуйте, Евгений Рыжков, Вы писали:
ЕР>Здравствуйте, rumit7, Вы писали:
R>> лицензии у меня нет, просто нашел рабочую версию Coverity на одном форуме. Конечно не последняя версия, да и дату приходится постоянно отматывать назад, но все-же лучше чем НИЧЕГО!
ЕР>стыдно, товарищ!
Вам стыдно за то, что восхволяемый Вами PVS-Studio ошибки не может найти?!
EP>Еще можно попробовать сравнить с ценами на Coverity. Тогда у нас будет и вовсе недорого.
Вы сначала попробуйте догнать их по качеству, а потом тыкайте людей своими ценами..
P.S. Хорош тут рекламную площадку своему продукту устраивать. Для этого специальные места есть..
Подскажите, пожалуйста, готовые решения для верификации C-кода. Например, проверки, что все идентификаторы такого-то типа начитаются с маленькой английской буквы.
Здравствуйте, Hard_Club, Вы писали:
H_C>Подскажите, пожалуйста, готовые решения для верификации C-кода. Например, проверки, что все идентификаторы такого-то типа начитаются с маленькой английской буквы.
Опять курсовые пошли???)) Да вроде лето сейчас)
Здравствуйте, ZegSoft, Вы писали:
ZS>Здравствуйте, Hard_Club, Вы писали:
H_C>>Подскажите, пожалуйста, готовые решения для верификации C-кода. Например, проверки, что все идентификаторы такого-то типа начитаются с маленькой английской буквы. ZS>Опять курсовые пошли???)) Да вроде лето сейчас)
какие еще курсовые??? это таск от кастомеров. до этого код верифицировался с помощью скрипта на Python. Но стала задача проверки того, что malloc выделяет необходимый объем памяти (соот. размеру типа передаваемого указателя)
Здравствуйте, Hard_Club, Вы писали:
H_C>это таск от кастомеров. до этого код верифицировался с помощью скрипта на Python. Но стала задача проверки того, что malloc выделяет необходимый объем памяти (соот. размеру типа передаваемого указателя)
определитесь какие проверки нужно сделать.
либо стиль, либо корректность программы
статические анализаторы кода для последнего: PVS-Studio, Lint
для проверки стиля погуглите, первая ссылка http://stackoverflow.com/questions/411249/coding-style-checker-for-c
Здравствуйте, Hard_Club, Вы писали:
H_C>Здравствуйте, ZegSoft, Вы писали:
ZS>>Здравствуйте, Hard_Club, Вы писали:
H_C>>>Подскажите, пожалуйста, готовые решения для верификации C-кода. Например, проверки, что все идентификаторы такого-то типа начитаются с маленькой английской буквы. ZS>>Опять курсовые пошли???)) Да вроде лето сейчас)
H_C>какие еще курсовые??? это таск от кастомеров. до этого код верифицировался с помощью скрипта на Python. Но стала задача проверки того, что malloc выделяет необходимый объем памяти (соот. размеру типа передаваемого указателя)
PVS-Studio. Ко всему прочему еще мега-крутой и быстрый русскоязычный саппорт.
Здравствуйте, Hard_Club, Вы писали:
H_C>какие еще курсовые??? это таск от кастомеров. до этого код верифицировался с помощью скрипта на Python. Но стала задача проверки того, что malloc выделяет необходимый объем памяти (соот. размеру типа передаваемого указателя)
Если для Win32/Win64 -- то попробуйте PVS-Studio, про неё уже писали.
Если под Unix — то cppcheck, splint. Плюс, есть какая-то софтина от Parasoft, но она подразумевает использование Eclipse.
Здравствуйте, Ytz, Вы писали:
Ytz>Здравствуйте, Евгений Рыжков, Вы писали:
ЕР>>PVS-Studio. Ко всему прочему еще мега-крутой и быстрый русскоязычный саппорт.
Ytz>Которая сильно сливает бесплатной CppCheck
Здравствуйте, Евгений Рыжков, Вы писали:
ЕР>Здравствуйте, Ytz, Вы писали:
Ytz>>Здравствуйте, Евгений Рыжков, Вы писали:
ЕР>>>PVS-Studio. Ко всему прочему еще мега-крутой и быстрый русскоязычный саппорт.
Ytz>>Которая сильно сливает бесплатной CppCheck
ЕР>проводили сравнение?
Здравствуйте, Ytz, Вы писали:
Ytz>Здравствуйте, Евгений Рыжков, Вы писали:
ЕР>>PVS-Studio. Ко всему прочему еще мега-крутой и быстрый русскоязычный саппорт.
Ytz>Которая сильно сливает бесплатной CppCheck
Да, проводил. На тестовом коде CppCheck выявил ошибки выхода за границы массивов, ошибки в удалении памяти, утечки памяти. PVS-Studio ничего из этого не обнаружил, кроме того не работает под Linux. Ах да! Просто взять файл с кодом и скормить его PVS-Studio тоже нельзя, только проект.
Здравствуйте, blackhearted, Вы писали:
B>Здравствуйте, Евгений Рыжков, Вы писали:
ЕР>>Здравствуйте, Ytz, Вы писали:
Ytz>>>Здравствуйте, Евгений Рыжков, Вы писали:
ЕР>>>>PVS-Studio. Ко всему прочему еще мега-крутой и быстрый русскоязычный саппорт.
Ytz>>>Которая сильно сливает бесплатной CppCheck
ЕР>>проводили сравнение?
B>а вы?
Конечно. Плюс удобство использования и интерфейс, плюс поддержка C++0x, плюс саппорт...
Здравствуйте, Ytz, Вы писали:
Ytz>Здравствуйте, Ytz, Вы писали:
Ytz>>Здравствуйте, Евгений Рыжков, Вы писали:
ЕР>>>PVS-Studio. Ко всему прочему еще мега-крутой и быстрый русскоязычный саппорт.
Ytz>>Которая сильно сливает бесплатной CppCheck
Ytz>Да, проводил. На тестовом коде CppCheck выявил ошибки выхода за границы массивов, ошибки в удалении памяти, утечки памяти. PVS-Studio ничего из этого не обнаружил, кроме того не работает под Linux. Ах да! Просто взять файл с кодом и скормить его PVS-Studio тоже нельзя, только проект.
Говорить, что PVS-Studio отстой только потому, что не работает на Linux — это некорректно. Что касается "на тестовом коде..." Можно сделать тестовый код на котором PVS-Studio ничего не найдет, можно — на котором CppCheck.
Кстати PVS-Studio очень активно развивается и постоянно появляются новые диагностики. Так что то, что было раньше сейчас уже по-другому.
Здравствуйте, Евгений Рыжков, Вы писали:
ЕР>Говорить, что PVS-Studio отстой только потому, что не работает на Linux — это некорректно.
Корректно, если разработка идет на Linux.
ЕР>Что касается "на тестовом коде..." Можно сделать тестовый код на котором PVS-Studio ничего не найдет, можно — на котором CppCheck.
Если не затруднит, что скажет ваша продукт на этот код:
class A {
public:
A() {
char* __p = new char[10];
__p = new char[10];
char* a = (char *)0;
*a = 0;
char c[10];
c[10] = 0;
}
~A() {
delete __p;
char* a = new char[100];
return;
delete[] a;
}
private:
char* __p;
};
int main() {
A a;
return 0;
}
Здравствуйте, Евгений Рыжков, Вы писали:
ЕР>Здравствуйте, Ytz, Вы писали:
Ytz>>А что ваш продукт предлагает для параллельных вычислений? Диагностирует взаимные блокировки?
ЕР>http://www.viva64.com/ru/vivamp-tool/
Здравствуйте, Евгений Рыжков, Вы писали:
Ytz>>Которая сильно сливает бесплатной CppCheck ЕР>проводили сравнение?
Я сравнил. Обычно пользуюсь связкой cppcheck и valgrind, пишу в TextMate. Однако поставил студию специально чтобы посмотреть на рекламируемого зверя.
Хм.
The message V003 means that a critical error has occurred in the analyzer. It is most likely that in this case you will not see any warning messages concerning the file being checked at all.
Код — чистейший С!
Пока счёт 1:0 в пользу cppcheck.
Здравствуйте, Alexéy Sudáchen, Вы писали:
AS>Я сравнил. Обычно пользуюсь связкой cppcheck и valgrind, пишу в TextMate. Однако поставил студию специально чтобы посмотреть на рекламируемого зверя.
AS>Хм.
AS>The message V003 means that a critical error has occurred in the analyzer. It is most likely that in this case you will not see any warning messages concerning the file being checked at all.
А проект компилируется в Visual Studio? Пришлите i-файл.
...
ЕР>PVS-Studio. Ко всему прочему еще мега-крутой и быстрый русскоязычный саппорт.
Вы так активно рекламируете свой анализатор, причем в тему и без.. Я как-то сравнивал его возможности с coverity. Специально для этого раздобыл один говнопроект. Так вот, к моему удивлению и разочерованию, ничегошеньки Ваш PVS-Studio не нашел! Правда вывел целую кучу варнингов на strcpy подобные функции (что кстати VS и сама умеет делать). А вот coverity я после этого зауважал еще больше! Он кстати сумел найти в том коде порядка 10 различных типов ошибок (проект слава богу был не таким большим).
Здравствуйте, rumit7, Вы писали:
R>Здравствуйте, Евгений Рыжков, Вы писали:
R>...
ЕР>>PVS-Studio. Ко всему прочему еще мега-крутой и быстрый русскоязычный саппорт.
R>Вы так активно рекламируете свой анализатор, причем в тему и без.. Я как-то сравнивал его возможности с coverity. Специально для этого раздобыл один говнопроект. Так вот, к моему удивлению и разочерованию, ничегошеньки Ваш PVS-Studio не нашел! Правда вывел целую кучу варнингов на strcpy подобные функции (что кстати VS и сама умеет делать). А вот coverity я после этого зауважал еще больше! Он кстати сумел найти в том коде порядка 10 различных типов ошибок (проект слава богу был не таким большим).
А у вас есть лицензия на Coverity? Давайте сравним с текущей версией PVS-Studio?
Здравствуйте, Ytz, Вы писали:
Ytz>Здравствуйте, Евгений Рыжков, Вы писали:
ЕР>>Здравствуйте, Ytz, Вы писали:
Ytz>>>А что ваш продукт предлагает для параллельных вычислений? Диагностирует взаимные блокировки?
ЕР>>http://www.viva64.com/ru/vivamp-tool/
Ytz>Не впечатляет
Здравствуйте, fdn721, Вы писали:
F>Здравствуйте, Евгений Рыжков, Вы писали:
ЕР>>Говорить, что PVS-Studio отстой только потому, что не работает на Linux — это некорректно. Что касается "на тестовом коде..." Можно сделать тестовый код на котором PVS-Studio ничего не найдет, можно — на котором CppCheck.
ЕР>>Кстати PVS-Studio очень активно развивается и постоянно появляются новые диагностики. Так что то, что было раньше сейчас уже по-другому.
F>К сожалению PVS-Studio стоит очень дорого.
Напишите мне, дадим скидку.
F>У нас руководство не готово тратить 3500 евро в год на качество кода.
Надо сравнивать с зарплатами программистов. Тогда не так страшно выглядит.
Еще можно попробовать сравнить с ценами на Coverity. Тогда у нас будет и вовсе недорого.
Здравствуйте, Евгений Рыжков, Вы писали:
ЕР>Здравствуйте, rumit7, Вы писали:
R>>Здравствуйте, Евгений Рыжков, Вы писали:
R>>...
ЕР>>>PVS-Studio. Ко всему прочему еще мега-крутой и быстрый русскоязычный саппорт.
R>>Вы так активно рекламируете свой анализатор, причем в тему и без.. Я как-то сравнивал его возможности с coverity. Специально для этого раздобыл один говнопроект. Так вот, к моему удивлению и разочерованию, ничегошеньки Ваш PVS-Studio не нашел! Правда вывел целую кучу варнингов на strcpy подобные функции (что кстати VS и сама умеет делать). А вот coverity я после этого зауважал еще больше! Он кстати сумел найти в том коде порядка 10 различных типов ошибок (проект слава богу был не таким большим).
ЕР>А у вас есть лицензия на Coverity? Давайте сравним с текущей версией PVS-Studio?
лицензии у меня нет, просто нашел рабочую версию Coverity на одном форуме. Конечно не последняя версия, да и дату приходится постоянно отматывать назад, но все-же лучше чем НИЧЕГО!
Здравствуйте, Евгений Рыжков, Вы писали:
Ytz>>>>А что ваш продукт предлагает для параллельных вычислений? Диагностирует взаимные блокировки?
ЕР>>>http://www.viva64.com/ru/vivamp-tool/
Ytz>>Не впечатляет
ЕР>Главное чтобы они были довольны.
При таком количестве крупных клиентов не понимаю ваше усердие в продвижении продукта на хабре и рсдн
Здравствуйте, Евгений Рыжков, Вы писали:
ЕР>Здравствуйте, Alexéy Sudáchen, Вы писали:
AS>>Я сравнил. Обычно пользуюсь связкой cppcheck и valgrind, пишу в TextMate. Однако поставил студию специально чтобы посмотреть на рекламируемого зверя.
AS>>Хм.
AS>>The message V003 means that a critical error has occurred in the analyzer. It is most likely that in this case you will not see any warning messages concerning the file being checked at all.
ЕР>А проект компилируется в Visual Studio? Пришлите i-файл.
Здравствуйте, Евгений Рыжков, Вы писали:
ЕР>Здравствуйте, blackhearted, Вы писали:
ЕР>>>А проект компилируется в Visual Studio? Пришлите i-файл.
B>>т.е.е если не винда — то глына?
ЕР>Что такое "глына" я не знаю, но ясное дело, что анализатор должен работать с компилирующимся кодом.
перефразирую.
если код не собирается под Win, его можно проанализировать или нет?
Здравствуйте, Евгений Рыжков, Вы писали:
AS>>The message V003 means that a critical error has occurred in the analyzer. It is most likely that in this case you will not see any warning messages concerning the file being checked at all.
ЕР>А проект компилируется в Visual Studio? Пришлите i-файл.
Ну если бы он не компилировался, о чём тогда разговор? =)
Ловите мыло.
Здравствуйте, Alexéy Sudáchen, Вы писали:
AS>Здравствуйте, Евгений Рыжков, Вы писали:
AS>>>The message V003 means that a critical error has occurred in the analyzer. It is most likely that in this case you will not see any warning messages concerning the file being checked at all.
ЕР>>А проект компилируется в Visual Studio? Пришлите i-файл.
AS>Ну если бы он не компилировался, о чём тогда разговор? =) AS>Ловите мыло.
Здравствуйте, Hard_Club, Вы писали:
ЕР>>Ошибка исправлена, спасибо.
H_C>Так все-таки вопрос остается открытым:
H_C>мне нужно добавить собственную проверку, что все идентификаторы должны начинаться с буквы p, можете рассказать как это сделать с помощью вашего tool?
У нас довольно удобно добавляются собственные правила. Нашему пользователю достаточно написать e-mail в произвольной форме нам и мы добавим правило.
Р>У нас довольно удобно добавляются собственные правила. Нашему пользователю достаточно написать e-mail в произвольной форме нам и мы добавим правило.
А самому никак нельзя? дело в том, что у нас уже есть code checker, который написан на Питоне. Но он умеет разбирать только тела и заголовки функций, а дальше — уже все ищется с помощью регулярных выражений. Мы бы хотели оперировать не регулярными выражениями, а конструкциями языка, для этого ищем соответствующие инструментальные средства.
Здравствуйте, Hard_Club, Вы писали:
H_C>А самому никак нельзя?
Нет, нельзя. Поскольку это очень трудная задача — составить грамотное диагностическое правило и без опыта в этой сфере сделать это практически невозможно стороннему пользователю. А нам — очень даже легко.
H_C>Мы бы хотели оперировать не регулярными выражениями, а конструкциями языка, для этого ищем соответствующие инструментальные средства.
Здравствуйте, Hard_Club, Вы писали:
H_C>А самому никак нельзя? дело в том, что у нас уже есть code checker, который написан на Питоне. Но он умеет разбирать только тела и заголовки функций, а дальше — уже все ищется с помощью регулярных выражений. Мы бы хотели оперировать не регулярными выражениями, а конструкциями языка, для этого ищем соответствующие инструментальные средства.
Посмотри PLY — у них есть несколько парсеров С/С++
Ну или попробовать под antlr грамматику найти/написать — он умеет генерить парсеры в python.
Здравствуйте, Tonal-, Вы писали:
T>Здравствуйте, Hard_Club, Вы писали:
H_C>>А самому никак нельзя? дело в том, что у нас уже есть code checker, который написан на Питоне. Но он умеет разбирать только тела и заголовки функций, а дальше — уже все ищется с помощью регулярных выражений. Мы бы хотели оперировать не регулярными выражениями, а конструкциями языка, для этого ищем соответствующие инструментальные средства. T>Посмотри PLY — у них есть несколько парсеров С/С++ T>Ну или попробовать под antlr грамматику найти/написать — он умеет генерить парсеры в python.
Этого недостаточно. Парсер построит дерево, но к нему еще нужно раскрытие типов, вычисление их и т.п.
Здравствуйте, Евгений Рыжков, Вы писали:
H_C>>>А самому никак нельзя? дело в том, что у нас уже есть code checker, который написан на Питоне. Но он умеет разбирать только тела и заголовки функций, а дальше — уже все ищется с помощью регулярных выражений. Мы бы хотели оперировать не регулярными выражениями, а конструкциями языка, для этого ищем соответствующие инструментальные средства. T>>Посмотри PLY — у них есть несколько парсеров С/С++ T>>Ну или попробовать под antlr грамматику найти/написать — он умеет генерить парсеры в python. ЕР>Этого недостаточно. Парсер построит дерево, но к нему еще нужно раскрытие типов, вычисление их и т.п.
С этим никто не спорит.
Но вроде у топикстартера уже есть свои наработки — так что вполне возможно его устроят предложенные либки или их аналоги.
Кроме того, как мне кажется, ему нужно не только проверять правильность кода но и соответствие какому-то своему стандарту кодирования. И если первое вполне разумно включать в вашь продукт, то второе, кроме как пользовательскими скриптами/плагинами делать не разумно — стандарты кодирования могут отличатся кардинально.
Здравствуйте, Tonal-, Вы писали:
ЕР>>Этого недостаточно. Парсер построит дерево, но к нему еще нужно раскрытие типов, вычисление их и т.п. T>С этим никто не спорит. T>Но вроде у топикстартера уже есть свои наработки — так что вполне возможно его устроят предложенные либки или их аналоги.
Не устроят. Постоянно вводят людей в заблуждения говоря, что вот есть парсер (возможно даже автогенерируемый), который все распарсит и будет счастье. А счастья не будет (в узком смысле), это надо понимать.
Евгений Рыжков
ООО "СиПроВер"
Re[17]: верификация C-кода
От:
Аноним
Дата:
08.08.11 10:58
Оценка:
ЕР>Не устроят. Постоянно вводят людей в заблуждения говоря, что вот есть парсер (возможно даже автогенерируемый), который все распарсит и будет счастье. А счастья не будет (в узком смысле), это надо понимать.
Как не будет счастья? А clang? Ну, то есть компиляторы, предоставляющие api к своим "потрохам". Таким образом, синтаксические анализаторы, интеграцию с ide, рефакторы и прочее становиться гораздо проще делать..
Здравствуйте, Аноним, Вы писали:
ЕР>>Не устроят. Постоянно вводят людей в заблуждения говоря, что вот есть парсер (возможно даже автогенерируемый), который все распарсит и будет счастье. А счастья не будет (в узком смысле), это надо понимать. А>Как не будет счастья? А clang? Ну, то есть компиляторы, предоставляющие api к своим "потрохам". Таким образом, синтаксические анализаторы, интеграцию с ide, рефакторы и прочее становиться гораздо проще делать..
А как с помощью clang, например, проверить, что все идентификаторы в коде начинаются с буквы "p"?
Здравствуйте, TimurSPB, Вы писали:
TSP>1. http://www.parasoft.com/jsp/products/cpptest.jsp — хорошая вещь, но сильно платная. Можно свои правила делать прям из куска кода. TSP>2. LINT — классика