Шина (инструмент для программирования) - Splint (programming tool)
Разработчики) | Разработчики сплинта |
---|---|
Стабильный выпуск | 3.1.2 / 12 июля 2007 г .
|
Репозиторий | github |
Операционная система | Кроссплатформенность |
Тип | Статический анализ кода |
Лицензия | GPL |
Веб-сайт | www |
Splint , сокращение от Secure Programming Lint , представляет собой инструмент программирования для статической проверки программ C на наличие уязвимостей безопасности и ошибок кодирования. Ранее называвшаяся LCLint, это современная версия инструмента lint Unix .
Splint имеет возможность интерпретировать специальные аннотации к исходному коду , что дает ему более строгую проверку, чем это возможно, просто глядя на исходный код. Шина используется gpsd как часть усилий по устранению дефектов.
Splint - это бесплатное программное обеспечение, выпущенное в соответствии с условиями Стандартной общественной лицензии GNU .
Основная деятельность по разработке Splint была остановлена в 2010 году. Согласно CVS на SourceForge , по состоянию на сентябрь 2012 года самое последнее изменение в репозитории было в ноябре 2010 года. В репозитории Git на GitHub есть более свежие изменения, начиная с июля 2019 года.
Пример
#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;
}
Выход шины:
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;
}
Смотрите также
- Переполнение буфера
- Отладчик памяти
- Тестирование программного обеспечения
- Список инструментов для статического анализа кода
использованная литература
внешние ссылки