Шина (инструмент программирования)
Эта статья нуждается в дополнительных цитатах для проверки . ( март 2013 г. ) |
Разработчик(и) | Разработчики Splint |
---|---|
Стабильная версия | 3.1.2
/ 12 июля 2007 г |
Репозиторий | github |
Операционная система | Кросс-платформенный |
Тип | Статический анализ кода |
Лицензия | лицензия GPL |
Веб-сайт | www |
Splint , сокращение от Secure Programming Lint , — это инструмент программирования для статической проверки программ на C безопасности на наличие уязвимостей и ошибок кодирования. Ранее называвшаяся LCLint, это современная версия инструмента Unix lint .
Splint имеет возможность интерпретировать специальные аннотации к исходному коду , что обеспечивает более строгую проверку, чем это возможно при простом просмотре исходного кода. использует Splint Компания gpsd в рамках усилий по обеспечению отсутствия дефектов. [ 1 ]
Splint — бесплатное программное обеспечение , выпущенное на условиях Стандартной общественной лицензии GNU .
Основная деятельность по разработке Splint прекратилась в 2010 году. По данным CVS в SourceForge , по состоянию на сентябрь 2012 года самое последнее изменение в репозитории произошло в ноябре 2010 года. [ 2 ] В репозиторий Git на GitHub внесены последние изменения, начиная с июля 2019 года. [ 3 ]
Пример
[ редактировать ]#include <stdio.h>
int main()
{
char c;
while (c != 'x');
{
c = getchar();
if (c = 'x')
return 0;
switch (c) {
case '\n':
case '\r':
printf("Newline\n");
default:
printf("%c",c);
}
}
return 0;
}
Вывод Splint:
Variable c used before definition Suspected infinite loop. No value used in loop test (c) is modified by test or loop body. Assignment of int to char: c = getchar() Test expression for if is assignment expression: c = 'x' Test expression for if not boolean, type char: c = 'x' Fall through case (no preceding break)
Фиксированный источник:
#include <stdio.h>
int main()
{
int c = 0; // Added an initial assignment definition.
while (c != 'x') {
c = getchar(); // Corrected type of c to int
if (c == 'x') // Fixed the assignment error to make it a comparison operator.
return 0;
switch (c) {
case '\n':
case '\r':
printf("Newline\n");
break; // Added break statement to prevent fall-through.
default:
printf("%c",c);
break; //Added break statement to default catch, out of good practice.
}
}
return 0;
}
См. также
[ редактировать ]- Переполнение буфера
- Отладчик памяти
- Тестирование программного обеспечения
- Список инструментов для статического анализа кода
Ссылки
[ редактировать ]- ^ Раймонд (2012). Браун, Эми; Уисон, Грег (ред.). Архитектура приложений с открытым исходным кодом, Том II (под ред. Эрика). Лулу. ISBN 9781105571817 .
- ^ «Статистика CVS проекта Splint» . Проверено 11 сентября 2012 г.
- ^ «История git проекта Splint» . Гитхаб . Проверено 16 сентября 2020 г.
Внешние ссылки
[ редактировать ]
- Инструменты статического анализа программ
- Бесплатное программное обеспечение для управления памятью
- Кроссплатформенное программное обеспечение
- Бесплатные инструменты тестирования программного обеспечения
- Программное обеспечение, использующее лицензию GPL
- Незавершённые версии инструментов компьютерного программирования