верификация C-кода
От: Hard_Club  
Дата: 27.07.11 15:20
Оценка:
Подскажите, пожалуйста, готовые решения для верификации C-кода. Например, проверки, что все идентификаторы такого-то типа начитаются с маленькой английской буквы.
Re: верификация C-кода
От: ZegSoft Россия  
Дата: 28.07.11 06:43
Оценка:
Здравствуйте, Hard_Club, Вы писали:

H_C>Подскажите, пожалуйста, готовые решения для верификации C-кода. Например, проверки, что все идентификаторы такого-то типа начитаются с маленькой английской буквы.

Опять курсовые пошли???)) Да вроде лето сейчас)
Re[2]: верификация C-кода
От: Hard_Club  
Дата: 28.07.11 07:08
Оценка:
Здравствуйте, ZegSoft, Вы писали:

ZS>Здравствуйте, Hard_Club, Вы писали:


H_C>>Подскажите, пожалуйста, готовые решения для верификации C-кода. Например, проверки, что все идентификаторы такого-то типа начитаются с маленькой английской буквы.

ZS>Опять курсовые пошли???)) Да вроде лето сейчас)

какие еще курсовые??? это таск от кастомеров. до этого код верифицировался с помощью скрипта на Python. Но стала задача проверки того, что malloc выделяет необходимый объем памяти (соот. размеру типа передаваемого указателя)
Re[3]: верификация C-кода
От: uzhas Ниоткуда  
Дата: 28.07.11 07:23
Оценка:
Здравствуйте, Hard_Club, Вы писали:

H_C>это таск от кастомеров. до этого код верифицировался с помощью скрипта на Python. Но стала задача проверки того, что malloc выделяет необходимый объем памяти (соот. размеру типа передаваемого указателя)

определитесь какие проверки нужно сделать.
либо стиль, либо корректность программы
статические анализаторы кода для последнего: PVS-Studio, Lint
для проверки стиля погуглите, первая ссылка http://stackoverflow.com/questions/411249/coding-style-checker-for-c
Re[3]: верификация C-кода
От: Евгений Рыжков Россия www.viva64.com
Дата: 28.07.11 09:52
Оценка:
Здравствуйте, Hard_Club, Вы писали:

H_C>Здравствуйте, ZegSoft, Вы писали:


ZS>>Здравствуйте, Hard_Club, Вы писали:


H_C>>>Подскажите, пожалуйста, готовые решения для верификации C-кода. Например, проверки, что все идентификаторы такого-то типа начитаются с маленькой английской буквы.

ZS>>Опять курсовые пошли???)) Да вроде лето сейчас)

H_C>какие еще курсовые??? это таск от кастомеров. до этого код верифицировался с помощью скрипта на Python. Но стала задача проверки того, что malloc выделяет необходимый объем памяти (соот. размеру типа передаваемого указателя)


PVS-Studio. Ко всему прочему еще мега-крутой и быстрый русскоязычный саппорт.
Евгений Рыжков
ООО "СиПроВер"
Re[4]: верификация C-кода
От: Ytz https://github.com/mtrempoltsev
Дата: 28.07.11 09:59
Оценка:
Здравствуйте, Евгений Рыжков, Вы писали:

ЕР>PVS-Studio. Ко всему прочему еще мега-крутой и быстрый русскоязычный саппорт.


Которая сильно сливает бесплатной CppCheck
Re[3]: верификация C-кода
От: artem_korneev США https://www.linkedin.com/in/artemkorneev/
Дата: 28.07.11 10:33
Оценка:
Здравствуйте, Hard_Club, Вы писали:

H_C>какие еще курсовые??? это таск от кастомеров. до этого код верифицировался с помощью скрипта на Python. Но стала задача проверки того, что malloc выделяет необходимый объем памяти (соот. размеру типа передаваемого указателя)


Если для Win32/Win64 -- то попробуйте PVS-Studio, про неё уже писали.
Если под Unix — то cppcheck, splint. Плюс, есть какая-то софтина от Parasoft, но она подразумевает использование Eclipse.
С уважением, Artem Korneev.
Re[5]: верификация C-кода
От: Евгений Рыжков Россия www.viva64.com
Дата: 28.07.11 10:38
Оценка:
Здравствуйте, Ytz, Вы писали:

Ytz>Здравствуйте, Евгений Рыжков, Вы писали:


ЕР>>PVS-Studio. Ко всему прочему еще мега-крутой и быстрый русскоязычный саппорт.


Ytz>Которая сильно сливает бесплатной CppCheck


проводили сравнение?
Евгений Рыжков
ООО "СиПроВер"
Re[6]: верификация C-кода
От: blackhearted Украина  
Дата: 28.07.11 10:40
Оценка:
Здравствуйте, Евгений Рыжков, Вы писали:

ЕР>Здравствуйте, Ytz, Вы писали:


Ytz>>Здравствуйте, Евгений Рыжков, Вы писали:


ЕР>>>PVS-Studio. Ко всему прочему еще мега-крутой и быстрый русскоязычный саппорт.


Ytz>>Которая сильно сливает бесплатной CppCheck


ЕР>проводили сравнение?


а вы?
Re[5]: верификация C-кода
От: Ytz https://github.com/mtrempoltsev
Дата: 28.07.11 10:51
Оценка:
Здравствуйте, Ytz, Вы писали:

Ytz>Здравствуйте, Евгений Рыжков, Вы писали:


ЕР>>PVS-Studio. Ко всему прочему еще мега-крутой и быстрый русскоязычный саппорт.


Ytz>Которая сильно сливает бесплатной CppCheck


Да, проводил. На тестовом коде CppCheck выявил ошибки выхода за границы массивов, ошибки в удалении памяти, утечки памяти. PVS-Studio ничего из этого не обнаружил, кроме того не работает под Linux. Ах да! Просто взять файл с кодом и скормить его PVS-Studio тоже нельзя, только проект.
Re[7]: верификация C-кода
От: Евгений Рыжков Россия www.viva64.com
Дата: 28.07.11 10:59
Оценка:
Здравствуйте, blackhearted, Вы писали:

B>Здравствуйте, Евгений Рыжков, Вы писали:


ЕР>>Здравствуйте, Ytz, Вы писали:


Ytz>>>Здравствуйте, Евгений Рыжков, Вы писали:


ЕР>>>>PVS-Studio. Ко всему прочему еще мега-крутой и быстрый русскоязычный саппорт.


Ytz>>>Которая сильно сливает бесплатной CppCheck


ЕР>>проводили сравнение?


B>а вы?


Конечно. Плюс удобство использования и интерфейс, плюс поддержка C++0x, плюс саппорт...
Евгений Рыжков
ООО "СиПроВер"
Re[6]: верификация C-кода
От: Евгений Рыжков Россия www.viva64.com
Дата: 28.07.11 11:01
Оценка:
Здравствуйте, Ytz, Вы писали:

Ytz>Здравствуйте, Ytz, Вы писали:


Ytz>>Здравствуйте, Евгений Рыжков, Вы писали:


ЕР>>>PVS-Studio. Ко всему прочему еще мега-крутой и быстрый русскоязычный саппорт.


Ytz>>Которая сильно сливает бесплатной CppCheck


Ytz>Да, проводил. На тестовом коде CppCheck выявил ошибки выхода за границы массивов, ошибки в удалении памяти, утечки памяти. PVS-Studio ничего из этого не обнаружил, кроме того не работает под Linux. Ах да! Просто взять файл с кодом и скормить его PVS-Studio тоже нельзя, только проект.


Говорить, что PVS-Studio отстой только потому, что не работает на Linux — это некорректно. Что касается "на тестовом коде..." Можно сделать тестовый код на котором PVS-Studio ничего не найдет, можно — на котором CppCheck.

Кстати PVS-Studio очень активно развивается и постоянно появляются новые диагностики. Так что то, что было раньше сейчас уже по-другому.
Евгений Рыжков
ООО "СиПроВер"
Re[7]: верификация C-кода
От: Ytz https://github.com/mtrempoltsev
Дата: 28.07.11 11:33
Оценка:
Здравствуйте, Евгений Рыжков, Вы писали:

ЕР>Говорить, что 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;
}


Код отсюда

Вот вывод CppCheck:

Checking check.cpp...
[check.cpp:11]: (error) Array 'c[10]' index 10 out of bounds
[check.cpp:5]: (error) Memory leak: __p
[check.cpp:17]: (error) Memory leak: a
[check.cpp:14]: (error) Mismatching allocation and deallocation: A::__p
[check.cpp:8]: (error) Null pointer dereference


ЕР>Кстати PVS-Studio очень активно развивается и постоянно появляются новые диагностики. Так что то, что было раньше сейчас уже по-другому.


Ну вот и посмотрим Кстати, в плане юзабилити как? Научились проверять отдельные файлы, без создания проекта?
Re[8]: верификация C-кода
От: Евгений Рыжков Россия www.viva64.com
Дата: 28.07.11 11:50
Оценка: -1
Здравствуйте, 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> Научились проверять отдельные файлы, без создания проекта?


В реальном процессе разработки проверять отдельные файлы вне проекта особого смысла нет. Просто не возникает такой задачи. Но да, у нас есть конечно же функционал для проверки отдельных файлов как в рамках проекта, так и без файла проекта, просто из командной строки.
Евгений Рыжков
ООО "СиПроВер"
Re[9]: верификация C-кода
От: Ytz https://github.com/mtrempoltsev
Дата: 28.07.11 11:56
Оценка: 2 (1) +1
Здравствуйте, Евгений Рыжков, Вы писали:

ЕР>Ах, если бы были те десять строк кода, с помощью которых можно оценить продукт с более чем 80 диагностиками только общего назначения, не считая 64-битных и параллельных ошибок.


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

Ytz>> Научились проверять отдельные файлы, без создания проекта?


ЕР>В реальном процессе разработки проверять отдельные файлы вне проекта особого смысла нет. Просто не возникает такой задачи. Но да, у нас есть конечно же функционал для проверки отдельных файлов как в рамках проекта, так и без файла проекта, просто из командной строки.


Молодцы, развиваетесь. Как только сделаете версию для Linux и догоните CppCheck можно будет присмотреться повнимательней.
Искренне желаю удачи!
Re[10]: верификация C-кода
От: Евгений Рыжков Россия www.viva64.com
Дата: 28.07.11 11:58
Оценка:
Здравствуйте, Ytz, Вы писали:

Ytz>А что ваш продукт предлагает для параллельных вычислений? Диагностирует взаимные блокировки?


http://www.viva64.com/ru/vivamp-tool/
Евгений Рыжков
ООО "СиПроВер"
Re[11]: верификация C-кода
От: Ytz https://github.com/mtrempoltsev
Дата: 28.07.11 12:08
Оценка:
Здравствуйте, Евгений Рыжков, Вы писали:

ЕР>Здравствуйте, Ytz, Вы писали:


Ytz>>А что ваш продукт предлагает для параллельных вычислений? Диагностирует взаимные блокировки?


ЕР>http://www.viva64.com/ru/vivamp-tool/


Не впечатляет
Re[7]: верификация C-кода
От: fdn721  
Дата: 28.07.11 14:01
Оценка: +1
Здравствуйте, Евгений Рыжков, Вы писали:

ЕР>Говорить, что PVS-Studio отстой только потому, что не работает на Linux — это некорректно. Что касается "на тестовом коде..." Можно сделать тестовый код на котором PVS-Studio ничего не найдет, можно — на котором CppCheck.


ЕР>Кстати PVS-Studio очень активно развивается и постоянно появляются новые диагностики. Так что то, что было раньше сейчас уже по-другому.


К сожалению PVS-Studio стоит очень дорого.

У нас руководство не готово тратить 3500 евро в год на качество кода.
Re[6]: верификация C-кода
От: Alexéy Sudáchen Чили  
Дата: 28.07.11 17:08
Оценка:
Здравствуйте, Евгений Рыжков, Вы писали:

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.
Re[7]: верификация C-кода
От: Евгений Рыжков Россия www.viva64.com
Дата: 29.07.11 05:44
Оценка:
Здравствуйте, 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-файл.
Евгений Рыжков
ООО "СиПроВер"
Re[4]: верификация C-кода
От: rumit7  
Дата: 29.07.11 06:45
Оценка:
Здравствуйте, Евгений Рыжков, Вы писали:

...

ЕР>PVS-Studio. Ко всему прочему еще мега-крутой и быстрый русскоязычный саппорт.


Вы так активно рекламируете свой анализатор, причем в тему и без.. Я как-то сравнивал его возможности с coverity. Специально для этого раздобыл один говнопроект. Так вот, к моему удивлению и разочерованию, ничегошеньки Ваш PVS-Studio не нашел! Правда вывел целую кучу варнингов на strcpy подобные функции (что кстати VS и сама умеет делать). А вот coverity я после этого зауважал еще больше! Он кстати сумел найти в том коде порядка 10 различных типов ошибок (проект слава богу был не таким большим).
Re[5]: верификация C-кода
От: Евгений Рыжков Россия www.viva64.com
Дата: 29.07.11 07:06
Оценка:
Здравствуйте, rumit7, Вы писали:

R>Здравствуйте, Евгений Рыжков, Вы писали:


R>...


ЕР>>PVS-Studio. Ко всему прочему еще мега-крутой и быстрый русскоязычный саппорт.


R>Вы так активно рекламируете свой анализатор, причем в тему и без.. Я как-то сравнивал его возможности с coverity. Специально для этого раздобыл один говнопроект. Так вот, к моему удивлению и разочерованию, ничегошеньки Ваш PVS-Studio не нашел! Правда вывел целую кучу варнингов на strcpy подобные функции (что кстати VS и сама умеет делать). А вот coverity я после этого зауважал еще больше! Он кстати сумел найти в том коде порядка 10 различных типов ошибок (проект слава богу был не таким большим).


А у вас есть лицензия на Coverity? Давайте сравним с текущей версией PVS-Studio?
Евгений Рыжков
ООО "СиПроВер"
Re[12]: верификация C-кода
От: Евгений Рыжков Россия www.viva64.com
Дата: 29.07.11 07:07
Оценка:
Здравствуйте, Ytz, Вы писали:

Ytz>Здравствуйте, Евгений Рыжков, Вы писали:


ЕР>>Здравствуйте, Ytz, Вы писали:


Ytz>>>А что ваш продукт предлагает для параллельных вычислений? Диагностирует взаимные блокировки?


ЕР>>http://www.viva64.com/ru/vivamp-tool/


Ytz>Не впечатляет


Главное чтобы они были довольны.
Евгений Рыжков
ООО "СиПроВер"
Re[8]: верификация C-кода
От: Евгений Рыжков Россия www.viva64.com
Дата: 29.07.11 07:09
Оценка:
Здравствуйте, fdn721, Вы писали:

F>Здравствуйте, Евгений Рыжков, Вы писали:


ЕР>>Говорить, что PVS-Studio отстой только потому, что не работает на Linux — это некорректно. Что касается "на тестовом коде..." Можно сделать тестовый код на котором PVS-Studio ничего не найдет, можно — на котором CppCheck.


ЕР>>Кстати PVS-Studio очень активно развивается и постоянно появляются новые диагностики. Так что то, что было раньше сейчас уже по-другому.


F>К сожалению PVS-Studio стоит очень дорого.


Напишите мне, дадим скидку.

F>У нас руководство не готово тратить 3500 евро в год на качество кода.


Надо сравнивать с зарплатами программистов. Тогда не так страшно выглядит.

Еще можно попробовать сравнить с ценами на Coverity. Тогда у нас будет и вовсе недорого.
Евгений Рыжков
ООО "СиПроВер"
Re[6]: верификация C-кода
От: rumit7  
Дата: 29.07.11 07:13
Оценка:
Здравствуйте, Евгений Рыжков, Вы писали:

ЕР>Здравствуйте, rumit7, Вы писали:


R>>Здравствуйте, Евгений Рыжков, Вы писали:


R>>...


ЕР>>>PVS-Studio. Ко всему прочему еще мега-крутой и быстрый русскоязычный саппорт.


R>>Вы так активно рекламируете свой анализатор, причем в тему и без.. Я как-то сравнивал его возможности с coverity. Специально для этого раздобыл один говнопроект. Так вот, к моему удивлению и разочерованию, ничегошеньки Ваш PVS-Studio не нашел! Правда вывел целую кучу варнингов на strcpy подобные функции (что кстати VS и сама умеет делать). А вот coverity я после этого зауважал еще больше! Он кстати сумел найти в том коде порядка 10 различных типов ошибок (проект слава богу был не таким большим).


ЕР>А у вас есть лицензия на Coverity? Давайте сравним с текущей версией PVS-Studio?


лицензии у меня нет, просто нашел рабочую версию Coverity на одном форуме. Конечно не последняя версия, да и дату приходится постоянно отматывать назад, но все-же лучше чем НИЧЕГО!
Re[13]: верификация C-кода
От: Ytz https://github.com/mtrempoltsev
Дата: 29.07.11 07:34
Оценка:
Здравствуйте, Евгений Рыжков, Вы писали:

Ytz>>>>А что ваш продукт предлагает для параллельных вычислений? Диагностирует взаимные блокировки?


ЕР>>>http://www.viva64.com/ru/vivamp-tool/


Ytz>>Не впечатляет


ЕР>Главное чтобы они были довольны.


При таком количестве крупных клиентов не понимаю ваше усердие в продвижении продукта на хабре и рсдн
Re[7]: верификация C-кода
От: Евгений Рыжков Россия www.viva64.com
Дата: 29.07.11 07:40
Оценка: :)
Здравствуйте, rumit7, Вы писали:

R> лицензии у меня нет, просто нашел рабочую версию Coverity на одном форуме. Конечно не последняя версия, да и дату приходится постоянно отматывать назад, но все-же лучше чем НИЧЕГО!


стыдно, товарищ!
Евгений Рыжков
ООО "СиПроВер"
Re[8]: верификация C-кода
От: blackhearted Украина  
Дата: 29.07.11 08:14
Оценка:
Здравствуйте, Евгений Рыжков, Вы писали:

ЕР>Здравствуйте, 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-файл.


т.е.е если не винда — то глына?
Re[9]: верификация C-кода
От: Евгений Рыжков Россия www.viva64.com
Дата: 29.07.11 09:44
Оценка:
Здравствуйте, blackhearted, Вы писали:

ЕР>>А проект компилируется в Visual Studio? Пришлите i-файл.


B>т.е.е если не винда — то глына?


Что такое "глына" я не знаю, но ясное дело, что анализатор должен работать с компилирующимся кодом.
Евгений Рыжков
ООО "СиПроВер"
Re[10]: верификация C-кода
От: blackhearted Украина  
Дата: 29.07.11 10:40
Оценка:
Здравствуйте, Евгений Рыжков, Вы писали:

ЕР>Здравствуйте, blackhearted, Вы писали:


ЕР>>>А проект компилируется в Visual Studio? Пришлите i-файл.


B>>т.е.е если не винда — то глына?


ЕР>Что такое "глына" я не знаю, но ясное дело, что анализатор должен работать с компилирующимся кодом.


перефразирую.
если код не собирается под Win, его можно проанализировать или нет?
Re[8]: верификация C-кода
От: rumit7  
Дата: 29.07.11 11:07
Оценка: -1
Здравствуйте, Евгений Рыжков, Вы писали:

ЕР>Здравствуйте, rumit7, Вы писали:


R>> лицензии у меня нет, просто нашел рабочую версию Coverity на одном форуме. Конечно не последняя версия, да и дату приходится постоянно отматывать назад, но все-же лучше чем НИЧЕГО!


ЕР>стыдно, товарищ!


Вам стыдно за то, что восхволяемый Вами PVS-Studio ошибки не может найти?!

EP>Еще можно попробовать сравнить с ценами на Coverity. Тогда у нас будет и вовсе недорого.


Вы сначала попробуйте догнать их по качеству, а потом тыкайте людей своими ценами..

P.S. Хорош тут рекламную площадку своему продукту устраивать. Для этого специальные места есть..
Re[11]: верификация C-кода
От: Евгений Рыжков Россия www.viva64.com
Дата: 29.07.11 11:46
Оценка:
Здравствуйте, blackhearted, Вы писали:

B>если код не собирается под Win, его можно проанализировать или нет?


нет, нельзя
Евгений Рыжков
ООО "СиПроВер"
Re[8]: верификация C-кода
От: Alexéy Sudáchen Чили  
Дата: 29.07.11 13:24
Оценка:
Здравствуйте, Евгений Рыжков, Вы писали:

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-файл.


Ну если бы он не компилировался, о чём тогда разговор? =)
Ловите мыло.
Re[9]: верификация C-кода
От: Евгений Рыжков Россия www.viva64.com
Дата: 01.08.11 09:48
Оценка:
Здравствуйте, 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>Ловите мыло.

Ошибка исправлена, спасибо.
Евгений Рыжков
ООО "СиПроВер"
Re[10]: верификация C-кода
От: Hard_Club  
Дата: 02.08.11 15:17
Оценка:
ЕР>Ошибка исправлена, спасибо.

Так все-таки вопрос остается открытым:

мне нужно добавить собственную проверку, что все идентификаторы должны начинаться с буквы p, можете рассказать как это сделать с помощью вашего tool?
Re[11]: верификация C-кода
От: Евгений Рыжков Россия www.viva64.com
Дата: 03.08.11 06:14
Оценка:
Здравствуйте, Hard_Club, Вы писали:

ЕР>>Ошибка исправлена, спасибо.


H_C>Так все-таки вопрос остается открытым:


H_C>мне нужно добавить собственную проверку, что все идентификаторы должны начинаться с буквы p, можете рассказать как это сделать с помощью вашего tool?


У нас довольно удобно добавляются собственные правила. Нашему пользователю достаточно написать e-mail в произвольной форме нам и мы добавим правило.
Евгений Рыжков
ООО "СиПроВер"
Re[12]: верификация C-кода
От: Hard_Club  
Дата: 03.08.11 07:08
Оценка:
Р>У нас довольно удобно добавляются собственные правила. Нашему пользователю достаточно написать e-mail в произвольной форме нам и мы добавим правило.


А самому никак нельзя? дело в том, что у нас уже есть code checker, который написан на Питоне. Но он умеет разбирать только тела и заголовки функций, а дальше — уже все ищется с помощью регулярных выражений. Мы бы хотели оперировать не регулярными выражениями, а конструкциями языка, для этого ищем соответствующие инструментальные средства.
Re[13]: верификация C-кода
От: Евгений Рыжков Россия www.viva64.com
Дата: 03.08.11 08:23
Оценка:
Здравствуйте, Hard_Club, Вы писали:

H_C>А самому никак нельзя?


Нет, нельзя. Поскольку это очень трудная задача — составить грамотное диагностическое правило и без опыта в этой сфере сделать это практически невозможно стороннему пользователю. А нам — очень даже легко.

H_C>Мы бы хотели оперировать не регулярными выражениями, а конструкциями языка, для этого ищем соответствующие инструментальные средства.


Регулярные выражения конечно же не подходят для статического анализа кода. Вот статья об этом: "Статический анализ и регулярные выражения".
Евгений Рыжков
ООО "СиПроВер"
Re[13]: верификация C-кода
От: Tonal- Россия www.promsoft.ru
Дата: 03.08.11 09:00
Оценка:
Здравствуйте, Hard_Club, Вы писали:

H_C>А самому никак нельзя? дело в том, что у нас уже есть code checker, который написан на Питоне. Но он умеет разбирать только тела и заголовки функций, а дальше — уже все ищется с помощью регулярных выражений. Мы бы хотели оперировать не регулярными выражениями, а конструкциями языка, для этого ищем соответствующие инструментальные средства.

Посмотри PLY — у них есть несколько парсеров С/С++
Ну или попробовать под antlr грамматику найти/написать — он умеет генерить парсеры в python.
Re[14]: верификация C-кода
От: Евгений Рыжков Россия www.viva64.com
Дата: 03.08.11 10:40
Оценка:
Здравствуйте, Tonal-, Вы писали:

T>Здравствуйте, Hard_Club, Вы писали:


H_C>>А самому никак нельзя? дело в том, что у нас уже есть code checker, который написан на Питоне. Но он умеет разбирать только тела и заголовки функций, а дальше — уже все ищется с помощью регулярных выражений. Мы бы хотели оперировать не регулярными выражениями, а конструкциями языка, для этого ищем соответствующие инструментальные средства.

T>Посмотри PLY — у них есть несколько парсеров С/С++
T>Ну или попробовать под antlr грамматику найти/написать — он умеет генерить парсеры в python.

Этого недостаточно. Парсер построит дерево, но к нему еще нужно раскрытие типов, вычисление их и т.п.
Евгений Рыжков
ООО "СиПроВер"
Re[15]: верификация C-кода
От: Tonal- Россия www.promsoft.ru
Дата: 05.08.11 04:10
Оценка:
Здравствуйте, Евгений Рыжков, Вы писали:

H_C>>>А самому никак нельзя? дело в том, что у нас уже есть code checker, который написан на Питоне. Но он умеет разбирать только тела и заголовки функций, а дальше — уже все ищется с помощью регулярных выражений. Мы бы хотели оперировать не регулярными выражениями, а конструкциями языка, для этого ищем соответствующие инструментальные средства.

T>>Посмотри PLY — у них есть несколько парсеров С/С++
T>>Ну или попробовать под antlr грамматику найти/написать — он умеет генерить парсеры в python.
ЕР>Этого недостаточно. Парсер построит дерево, но к нему еще нужно раскрытие типов, вычисление их и т.п.
С этим никто не спорит.
Но вроде у топикстартера уже есть свои наработки — так что вполне возможно его устроят предложенные либки или их аналоги.

Кроме того, как мне кажется, ему нужно не только проверять правильность кода но и соответствие какому-то своему стандарту кодирования. И если первое вполне разумно включать в вашь продукт, то второе, кроме как пользовательскими скриптами/плагинами делать не разумно — стандарты кодирования могут отличатся кардинально.
Re[16]: верификация C-кода
От: Евгений Рыжков Россия www.viva64.com
Дата: 05.08.11 06:00
Оценка:
Здравствуйте, Tonal-, Вы писали:

ЕР>>Этого недостаточно. Парсер построит дерево, но к нему еще нужно раскрытие типов, вычисление их и т.п.

T>С этим никто не спорит.
T>Но вроде у топикстартера уже есть свои наработки — так что вполне возможно его устроят предложенные либки или их аналоги.

Не устроят. Постоянно вводят людей в заблуждения говоря, что вот есть парсер (возможно даже автогенерируемый), который все распарсит и будет счастье. А счастья не будет (в узком смысле), это надо понимать.
Евгений Рыжков
ООО "СиПроВер"
Re[17]: верификация C-кода
От: Аноним  
Дата: 08.08.11 10:58
Оценка:
ЕР>Не устроят. Постоянно вводят людей в заблуждения говоря, что вот есть парсер (возможно даже автогенерируемый), который все распарсит и будет счастье. А счастья не будет (в узком смысле), это надо понимать.
Как не будет счастья? А clang? Ну, то есть компиляторы, предоставляющие api к своим "потрохам". Таким образом, синтаксические анализаторы, интеграцию с ide, рефакторы и прочее становиться гораздо проще делать..
Re[18]: верификация C-кода
От: Hard_Club  
Дата: 08.08.11 11:57
Оценка:
Здравствуйте, Аноним, Вы писали:

ЕР>>Не устроят. Постоянно вводят людей в заблуждения говоря, что вот есть парсер (возможно даже автогенерируемый), который все распарсит и будет счастье. А счастья не будет (в узком смысле), это надо понимать.

А>Как не будет счастья? А clang? Ну, то есть компиляторы, предоставляющие api к своим "потрохам". Таким образом, синтаксические анализаторы, интеграцию с ide, рефакторы и прочее становиться гораздо проще делать..

А как с помощью clang, например, проверить, что все идентификаторы в коде начинаются с буквы "p"?
Re: верификация C-кода
От: TimurSPB Интернет  
Дата: 08.08.11 12:03
Оценка:
1. http://www.parasoft.com/jsp/products/cpptest.jsp — хорошая вещь, но сильно платная. Можно свои правила делать прям из куска кода.
2. LINT — классика
Make flame.politics Great Again!
Re[2]: верификация C-кода
От: Hard_Club  
Дата: 08.08.11 12:40
Оценка:
Здравствуйте, TimurSPB, Вы писали:

TSP>1. http://www.parasoft.com/jsp/products/cpptest.jsp — хорошая вещь, но сильно платная. Можно свои правила делать прям из куска кода.

TSP>2. LINT — классика

cpptest — а можно примерчик генерации правил?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.