Данное диагностическое правило основано на руководстве MISRA (Motor Industry Software Reliability Association) по разработке программного обеспечения.
Функции стандартной библиотеки из заголовочных файлов '<stdio.h>' / '<cstdio>' и '<wchar.h>' могут быть опасны. Их поведение зависит от реализации, а их использование может привести к неопределенному поведению.
Рассмотрим следующий фрагмент кода:
#include <stdio.h> void InputFromFile(FILE *file); // Read from 'file' void foo() { FILE *stream; .... InputFromFile(stream); fflush(stream); }
В коде сначала происходит чтение из потока 'stream', а затем поток передается в функцию 'fflush'. Такая последовательность операций приводит к неопределенному поведению.
Анализатор выдаст предупреждение, если обнаружит использование любых функций, определенных в заголовочных файлах '<stdio.h>' / '<cstdio>' и '<wchar.h>':
Пример кода, на который анализатор выдаст предупреждение:
#include <stdio.h> void foo(const char *filename, FILE *oldFd) { FILE *newFd = freopen(filename, "r", oldFd); .... }
Данная диагностика классифицируется как:
|