パターン マッチングを使用した Polyspace 解析対象ファイルの選択
Polyspace® 製品を使用して静的解析を実行する場合、その解析では Polyspace プロジェクト内で指定されている (またはコマンド ラインで -sources
を使用して指定した) すべてのファイルが対象となります。場合によっては、これらのファイルのサブセットのみの結果を確認したり、ファイルのサブセットに異なる解析動作を適用したりする必要があります。ファイルのサブセットを指定するには、ファイル選択パターンを使用します。ファイル選択パターン (glob パターン) で複数のファイルを対象にするには、?
や *
などのワイルドカードを使用します。
ファイル選択パターンを指定する状況
ビルド コマンドによって Polyspace プロジェクトまたはオプション ファイルを作成する際、あるいは Polyspace Bug Finder™ を使用して静的解析を実行する際に、ファイルのサブセットを選択できます。
ビルド コマンドによって Polyspace 解析を設定する際にファイルを選択する
polyspace-configure
を使用してプロジェクトを作成すると、オプション -include-sources
または -exclude-sources
に渡すパターンとパスが一致するソース ファイルを追加または除外できます。この 2 つのオプションは、コマンド ラインで複数回指定することも、組み合わせることもできます。
次のフォルダー構造を以下の例に適用します。
これらの例を試すには、
に含まれるデモ ファイルを使用します。polyspaceroot
\polyspace\examples\doc_cxx\sources-select
は Polyspace インストール フォルダーです。polyspaceroot
次のコマンドを実行します。
polyspace-configure -allow-overwrite -include-sources "glob_pattern" \ -print-excluded-sources -print-included-sources make -B
glob_pattern
は、プロジェクトに追加またはプロジェクトから除外するファイルのパスのマッチに使用する glob パターンです。polyspace-configure
に渡す glob パターンがシェルによって展開されないようにするには、glob パターンを二重引用符で囲みます。Bug Finder 解析を実行する際にファイルを選択する
Polyspace Bug Finder を使用して C/C++ コードを解析するときに、プロジェクト内のファイルのうち、解析中に特定の処理を必要とするファイル セットを定義できます。たとえば、サードパーティ ライブラリに含まれる関数本体の定義をスキップする場合や、所有するファイル内のすべての関数を強制的に解析する場合です。分類 XML ファイル内に、特定の動作が適用されたファイル セットを列挙し、この分類ファイルを使用して Bug Finder 解析を微調整できます。
分類 XML ファイルで、file-pattern
要素 (fileset > files-in-set
または fileset > files-not-in-set
要素の子) 内にファイル パターンを指定できます。たとえば、次のパターンでは myproject/inc
のサブフォルダー内の .hpp
ファイルが選択されますが、名前が -generated
で終わるファイルは除外されます。
<fileset name="Application implementation and header files"> <files-in-set> <file-pattern>myproject/inc/**/*.hpp</file-pattern> </files-in-set> <files-not-in-set> <file-pattern>myproject/inc/**/*-generated.hpp</file-pattern> </files-not-in-set> <behaviors> <!-- Specific behaviors for this file set --> </behaviors> </fileset>
静的解析中に分類ファイルを指定するには、解析オプション -classification
を使用します。たとえば、次のコマンドを使用して Bug Finder を実行できます。
polyspace-bug-finder -options-file myOptions.txt -classification myClassification.xml
サポートされているファイル選択のパターン
この表の例では、sources
は最上位のフォルダーであるとします。
glob パターン構文 | 例 |
---|---|
特殊文字、スラッシュ ('/')、バックスラッシュ ('\') を使用しない。 パターンは対応するファイルと一致し、フォルダーとは一致しない。 |
|
パターンが特殊文字
一致にパスの区切り記号は含まれない。 |
|
次で始まるパターン:
パターンは絶対パスにのみ一致する。 |
|
次で終わるパターン:
パターンは指定されたフォルダーの下のすべてのファイルに一致する。
|
|
次が含まれるパターン:
パターンは指定されたパス内の 0 以上のフォルダーに一致する。 |
|
パターンの先頭が パターンはコマンドを実行するパスからの相対パスに一致する。 |
|
パターンが Windows における UNC パス。 | ファイルがサーバー
|
polyspace-configure
では、次の glob パターンはサポートされていません。
Windows での現在のドライブからの相対になる絶対パス。
たとえば、
\foo\bar
です。現在のフォルダーからの相対パス。
たとえば、
C:foo\bar
です。Windows の拡張パス。
たとえば、
\\?\foo
です。パターンの先頭以外で '.' または '..' を含むパス。
たとえば、
/foo/bar/../a?.c
です。文字
'*'
のみ。
参考
-classification
| polyspace-configure