メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

無意味なインクルード

存在するが使用されない include 命令

R2022b 以降

説明

この欠陥は、インクルードされるヘッダーを使用しない場合に発生します。

たとえば、次を行わない場合です。

  • インクルードされたファイルで定義されているマクロ、またはそのインクルードされたファイルのインクルードで定義されているマクロの呼び出し。

  • インクルードされたファイルで定義されているデータ型、またはそのインクルードされたファイルのインクルードで定義されているデータ型の使用。

  • インクルードされたファイルで定義されているオブジェクトあるいは関数、またはそのインクルードされたファイルのインクルードで定義されているオブジェクトあるいは関数の、呼び出しまたはそれらへの参照の使用。

  • インクルードされたファイルによってそのファイルの外部に提供される、外部から可視のオブジェクトの使用。

オブジェクトが入れ子のマクロ内で使用されている場合、Polyspace はその使用を見逃す可能性があります。その結果、Polyspace はそのオブジェクトを宣言している includeUSELESS_INCLUDE としてフラグを設定する可能性があります。

リスク

不必要なファイル依存関係によって、プロジェクトのビルド速度が低下します。ビルド速度を改善するには、使用されない include 命令を削除します。

修正方法

使用されない include 命令を削除します。

すべて展開する

この例は、<cmath> および <stdexcedpt> ヘッダー ファイルも、これらのファイルに含まれる include 命令も使用しません。

#include <iostream>      
#include <cmath>        
#include <stdexcept>    
#include <vector>       

int age = 0;
std::vector<int> allAges;

void saveAge()
{
	std::cout << "Enter age: ";
	std::cin >> age;
	
	allAges.push_back(age);
}

int main() {
	while (age <= 40)
	{
		saveAge();
	}

	for (int x : allAges)
	{
		std::cout << x << std::endl;
	}

	return 0;
}
修正 — 使用されない include 命令を削除

1 つの修正方法として、使用されない include 命令をファイルから削除します。

#include <iostream>
#include <vector>

int age = 0;
std::vector<int> allAges;

void saveAge()
{
	std::cout << "Enter age: ";
	std::cin >> age;
	
	allAges.push_back(age);
}

int main() {
	while (age <= 40)
	{
		saveAge();
	}

	for (int x : allAges)
	{
		std::cout << x << std::endl;
	}

	return 0;
}

結果情報

グループ: 適切な手法
言語: C | C++
既定値: オフ
コマンド ライン構文: USELESS_INCLUDE
影響度: Low

バージョン履歴

R2022b で導入

すべて展開する