Данное диагностическое правило основано на руководстве MISRA (Motor Industry Software Reliability Association) по разработке программного обеспечения.
Это правило актуально только для С. Стандарт C не определяет поведение, при котором происходит запись в файл, открытый только для чтения. Поэтому такое поведение некорректно.
Рассмотрим пример:
void foo(void) { FILE *file = fopen("file.txt", "r"); if (file != NULL) { fputs(file, "I am writing to the read-only file\n"); fclose(file); } }
Файл file.txt был открыт в режиме только для чтения, но при этом в него происходит запись. Неизвестно, как поведет себя операционная система в этой ситуации.
Скорее всего, это опечатка, и режим открытия стоит изменить:
void foo(void) { FILE *file = fopen("file.txt", "w"); if (file != NULL) { fputs(file, "I am writing to the write-only file\n"); fclose(file); } }
Данная диагностика классифицируется как:
|