верификация 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-файл.
Евгений Рыжков
ООО "СиПроВер"
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.