C and C++ Binaries


BADFUNC.STDIO_H : <stdio.h>入出力関数の使用

要旨

<stdio.h> で定義されている、以下の入出力関数を使用しています。
clearerr(), ctermid(), cuserid(), fclose(), fdopen(), feof(), ferror(), fflush(), fgetc(), fgetpos(), fgets(), fileno(), flockfile(), fopen(), fprintf(), fputc(), fputs(), fread(), freopen(), fscanf(), fseek(), fseeko(), fsetpos(), ftell(), ftello(), ftrylockfile(), funlockfile(), fwrite(), getc(), getchar(), getc_unlocked(), getchar_unlocked(), getopt(), gets(), getw(), pclose(), perror(), popen(), printf(), putc(), putchar(), putc_unlocked(), putchar_unlocked(), puts(), putw(), remove(), rename(), rewind(), scanf(), setbuf(), setvbuf(), snprintf(), sprintf(), sscanf(), tempnam(), tmpfile(), tmpnam(), ungetc(), vfprintf(), vprintf(), vsnprintf(), vsprintf()

これらの関数は未規定、未定義、および処理系定義の動作と関連しています。

このクラスは 残ったデバッグコード の上位集合となります。

プロパティ

クラス名 Use of <stdio.h> Input/Output
日本語クラス名 <stdio.h>入出力関数の使用
クラス分類 スタイル (style)
ニーモニック BADFUNC.STDIO_H
カテゴリー
MisraC2023 MisraC2023:21.6 The Standard Library input/output functions shall not be used
Misra2012 Misra2012:21.6 The Standard Library input/output functions shall not be used
Misra2004 Misra2004:20.9 The input/output library <stdio.h> shall not be used in production code
AUTOSARC++14 AUTOSARC++14:A1-1-1 All code shall conform to ISO/IEC 14882:2014 - Programming Language C++ and shall not use deprecated features.
  AUTOSARC++14:M27-0-1 The stream input/output library <cstdio> shall not be used.
MisraC++2008 MisraC++2008:27-0-1 The stream input/output library <cstdio> shall not be used.
MisraC++2023 MisraC++2023:4.1.2 Deprecated features should not be used
  MisraC++2023:30.0.1 The C Library input/output functions shall not be used
CWE CWE:676 Use of Potentially Dangerous Function
  CWE:758 Reliance on Undefined, Unspecified, or Implementation-Defined Behavior
JSF++ JSF++:22 The input/output library <stdio.h> shall not be used.
対応言語 C および C++ で利用可能です。
有効/無効設定 このワーニングクラスのチェックはデフォルトで無効になっています。チェックを有効にするにはプロジェクト設定ファイル (configuration file)に以下の WARNING_FILTER ルールを追加してください。
WARNING_FILTER += allow class="Use of <stdio.h> Input/Output"

#include <stdio.h>

int get_answer(){
  int ans;
  ans = fgetc(stdin); /* Warning issued here:
                       * - 'Use of <stdio.h> Input/Output' if fgetc() implemented as a function 
                       * - Use of <stdio.h> Input/Output Macro if fgetc() implemented as a macro
                       */
  if ((ans == (int)('Y')) || ans == (int)('y')){
    return 1;
  }
  return 0;
}

関連のある設定ファイルパラメータ

このクラスは一般テンプレート設定ファイルで BAD_FUNCTION_* ルールセットによって実装されています。

設定ファイルの以下のパラメータがこのワーニングクラスのチェックに影響します。