Fortran アプリケーションにおけるインテル® Inspector XE の使用 – パート 3 スタティック・セキュリティー解析

インテル® Fortran コンパイラーインテル® Inspector

この記事は、インテル® ソフトウェア・ネットワークに掲載されている「Using Intel® Inspector XE on Fortran Applications – Static Security Analysis」(http://software.intel.com/en-us/articles/using-intel-inspector-xe-on-fortran-applications-static-security-analysis/) の日本語参考訳です。


インテル® Inspector XE は、C/C++、C#、Fortran 言語で記述されたプログラムの解析をサポートします。この記事は、Fortran アプリケーションにおけるインテル® Inspector XE の使用方法を紹介するシリーズ (全 3 パート) の 3 つ目です。  パート 1 ではメモリー解析を、パート 2 ではスレッド解析を紹介しました。メモリー解析とスレッド解析はどちらも、ランタイム中に行われるダイナミック解析タイプです。

この記事では、コンパイル時に行われるスタティック解析を紹介します。このスタティック解析は、コードエラーセキュリティー問題の両方について、アプリケーションのすべてのソースコードを解析します。 スタティック・セキュリティー解析は、インテル® Parallel Studio XE およびその他の Studio XE バンドル製品で利用可能な正当性解析ツールです。

スタティック解析は、コンパイラー・オプションで設定する特別なモードで、インテル® C++ コンパイラーまたはインテル® Fortran コンパイラーの (GCC/Microsoft* と互換性のある) フロントエンドを利用します。スタティック解析は、インテル® コンパイラーでコンパイルしたときに重大なエラーが発生しないコードに対して行うことができます。

ただし、スタティック解析ではバイナリー・コードは生成されません。インテル® コンパイラーで生成したバイナリー・コードを使用してアプリケーションを実行する必要はありません。 以下の表は、コンパイラーのドキュメントから抜粋した、スタティック解析で使用するコンパイラー・オプションの説明です。

Microsoft* Visual Studio を使用している場合、これらのコンパイラー・オプションは、プロジェクトのプロパティー ([Fortran] > [診断] プロパティー・ページ) から設定できます。コンパイルを行うと、インテル® Inspector XE の結果が生成されます。結果は、Visual Studio の GUI またはコマンドラインから表示できます。以下の画面は、Visual Studio で [すべてのエラーと警告 (/Qdiag-enable:sc3)] コンパイラー・オプションを使用してスタティック解析を実行した結果です。

Summary.PNG

この例で、スタティック解析は 2 つのエラー (赤い丸) と 1 つの警告 (黄色の三角) を報告しています。[Code Locations] ペインに、問題と関連するソースコード行が表示されます。

ここで [Summary] ビューに表示されている最初の問題は、未割り当ての配列参照 “UnALLOCATED array ref (possible)” です。[Code Locations] ペインを見ると、配列 “queens” が割り当てを行わずに書き込まれています。この問題を修正するには、変数を使用する前に、変数にメモリーを割り当てます。次のコードを前に追加してください。

allocate.PNG

この割り当てを行うことで、最初の問題は修正されます。2 つ目の問題は、未確認のオプション引数 “Optional arg unchecked” です。この問題は、サブルーチンがオプション引数の存在を確認しないで引数を使用したときに発生します。問題をダブルクリックして、[Sources] ビューに切り替えると、 完全なソースコードとトラックバック情報が表示されます。

unchecked.PNG

オプション引数 “output” がその存在を確認することなく代入されています。これはランタイムエラーの原因になります。この問題を修正するには、代入の前に引数の確認を追加します。
argCheck.PNG
最後の問題は、未使用のサブルーチン “Unused subroutine” です。これは警告であり、コードに問題があることを示している訳ではありません。このアプリケーションの場合、サブルーチンはデバッグ目的で使用されていて、このビルドでは呼び出されていません。ただし、アプリケーションでこのサブルーチンを使用することを想定しているのにサブルーチンが呼び出されていないのであれば、修正する必要があります。

スタティック解析では、多くのコードおよびセキュリティーに関する問題を検出できます。この記事では、そのいくつかを紹介したに過ぎません。インテル® Inspector XE を活用することで、Fortran アプリケーションを容易に解析し、アプリケーションの正当性とセキュリティーを向上することができます。

編集部追加

本記事では、Fortran プログラムの論理的な問題をコンパイル時に検出する方法について紹介しています。ツールを活用してプログラムの誤りを未然に修正することで、デバッグ作業に費やされる時間を減らし、主要な機能の実装に集中できます。この SSA (スタティック・セキュリティー解析) 機能はインテル® (Visual) Fortran Studio XE や、同様に “Studio XE” と付くバンドル製品をお持ちの場合にのみ利用することができます。バンドル製品をお持ちでない方は、是非とも評価版にてお試しください。評価版のダウンロードや、アップグレードのお問い合わせはエクセルソフト株式会社まで。

コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。

タイトルとURLをコピーしました