メインコンテンツ

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

コーディング規約およびコード メトリクスをチェックする Code Prover ワークフローの Bug Finder への移行

R2025b

以前のリリースの Polyspace® Code Prover では、外部コーディング規約のチェックとコード複雑度メトリクスの計算がサポートされていました。たとえば、Code Prover を次の用途に使用できました。

  • MISRA C:2012 や MISRA C++:2008 などの外部コーディング規約への準拠のチェック。

  • 命名規則への準拠のチェック。

  • コード複雑度標準への準拠のチェック。

  • コード メトリクスの計算。

上記の機能のサポートは、Code Prover から削除されました。これらのタスクの実行に推奨されるツールは Polyspace Bug Finder です。Code Prover の使用から Bug Finder の使用に移行するように、ワークフローを変更してください。

ワークフローの変更

場合によっては、Code Prover から Bug Finder に移行するために、ワークフローを変更する必要があります。

コーディング ルール違反のチェックとコード メトリクスの計算

これまでは、このタスクを行うには [構成] ペインで適切なオプションを設定し、[Code Prover の実行] をクリックしていました。Bug Finder の使用へ移行するには、次のようにします。

  • Polyspace ユーザー インターフェイスの [構成] ペインで同じオプションを設定してから、[Bug Finder の実行] をクリックします。

  • コマンド ラインで polyspace-code-prover を polyspace-bug-finder に置き換えます。Bug Finder を有効にしない場合は、-checkers に値 none を指定します。たとえば、次のコマンドを置き換えます。

    polyspace-code-prover -sources file_name -misra3 all -code-metrics 
    上記のコマンドを次のコマンドで置き換えます。
    polyspace-bug-finder -sources file_name -misra3 all -code-metrics -checkers none

Polyspace Bug Finder と Code Prover では、一部のコーディング ルールのチェック方法が異なります。Bug Finder への移行後に、コーディング ルール違反の数と位置が多少異なることがあります。

コード メトリクスの計算、ランタイム エラーとコーディング ルール違反のチェック

以前は、これらのタスクを行うには [構成] ペインで適切なオプションを設定してから、[Code Prover の実行] をクリックしていました。Bug Finder の使用へ移行するには、次のようにします。

  • Polyspace ユーザー インターフェイスの [構成] ペインで同じオプションを設定します。次に、2 つの個別の Polyspace 解析を実行してその結果を取得します。Bug Finder 解析を実行して、コード ルール違反のチェックとコード メトリクスの計算を行います。ランタイム エラーをチェックするには、別の Code Prover 検証を実行します。

  • コマンド ラインで、適切な解析オプションを指定したコマンド polyspace-bug-finder と polyspace-code-prover を使用して、Bug Finder 解析と Code Prover 解析を個別に実行します。たとえば、次のコマンドを置き換えます。

    polyspace-code-prover -sources file_name -misra3 all -code-metrics
    上記のコマンドを次のコマンドで置き換えます。
    polyspace-bug-finder -sources file_name -code-metrics -misra3 all -checkers none
    polyspace-code-prover -sources file_name

コード メトリクスの計算、生成されたコードでのランタイム エラーとコーディング ルール違反のチェック

以前は、これらのタスクを行うには、Polyspace 解析を設定してから、Code Prover 検証を開始しました。Bug Finder の使用へ移行するには、次のようにします。

  • Simulink® ツールストリップで、以前と同じ構成を使用します。次に、Bug Finder 解析と Code Prover 解析を個別に実行します。

  • MATLAB® コマンド ウィンドウで、個別の polyspace.ModelLinkOptions および polyspace.Project オブジェクトのセットを使用して、Bug Finder 解析と Code Prover 解析を個別に実行します。

cd(matlabroot);
modelName = 'polyspace_controller_demo';
openExample('polyspace_code_prover/OpenSimulinkModelForPolyspaceAnalysisExample', ...
'supportingFile',modelName);
mkdir TempDir;
load_system(modelName);
cd TempDir;

%  Set parameters for Embedded Coder target
set_param(modelName, 'SystemTargetFile', 'ert.tlc');
set_param(modelName,'Solver','FixedStepDiscrete');
set_param(modelName,'SupportContinuousTime','on');
set_param(modelName,'LaunchReport','off');
set_param(modelName,'InitFltsAndDblsToZero','on');

% Generate code
slbuild(modelName);

% Create Bug Finder project configuration
psprjCfgBF = polyspace.ModelLinkOptions(modelName);
% Enable coding rules, such as MISRA C:2012
psprjCfgBF.CodingRulesCodeMetrics.EnableMisraC3 = true;
psprjCfgBF.CodingRulesCodeMetrics.MisraC3Subset = 'all';
% Deactivate Bug Finder defects
psprjcfg.BugFinderAnalysis.EnableChecker = false;

% Specify results folder for bugfinder analysis
psprjCfgBF.ResultsDir = 'BF_newResfolder';

% Associate the project configurations with a Polyspace project
bfProj = polyspace.Project;
bfProj.Configuration = psprjCfgBF;

% Set verification mode as Bug Finder
bfStatus = bfProj.run('bugfinder');
% obtain BF results in a table
BF_results = bfProj.Results.getResults('readable');

% Create a new project for Code Prover verification
cpProj = polyspace.Project;

% Create a new configuration object for Code Prover verification
psprjCfgCP =  polyspace.ModelLinkOptions(modelName);
psprjCfgCP.CodingRulesCodeMetrics.EnableMisraC3 = false;

% Specify results folder for Code Prover analysis
psprjCfgCP.ResultsDir = 'CP_newResfolder';

% Associate the project configurations with a Polyspace project
cpProj.Configuration = psprjCfgCP;

% Set verification mode as Code Prover
cpStatus = cpProj.run('codeprover');
% obtain CP results in a table
CP_results = cpProj.Results.getResults('readable');

ランタイム エラー、コーディング ルール違反、およびコード メトリクスを含む Polyspace レポートの作成

以前は、ランタイム エラー、コード メトリクス、コーディング ルール違反などの結果を含む 1 つのレポートを作成するように Code Prover 検証を設定していました。Bug Finder の使用へ移行するには、同じオプションを設定して Bug Finder 解析と Code Prover 解析を個別に実行します。コード メトリクスの計算、ランタイム エラーとコーディング ルール違反のチェックを参照してください。

Bug Finder と Code Prover の結果はそれぞれ別のレポートにまとめられます。

Bug Finder と Code Prover の結果を含む結合レポートを作成するには、polyspace-report-generator を使用します。たとえば、Bug Finder の結果が BF_results フォルダーに、Code Prover の結果が CP_results フォルダーに保存される場合には、コマンド プロンプトで次のコマンドを使用します。

polyspace-report-generator ^
-template %template_path% ^
-results-dir "CP_Results","BF_Results"

@echo off
Rem Specify the path for source
set source="C:\Program Files\Polyspace\R2021b\polyspace\examples\cxx\Bug_Finder_Example\sources\numerical.c"
Rem Using Developer.rpt as template
set template_path="C:\Program Files\Polyspace\R2021b\toolbox\polyspace\psrptgen\templates\Developer.rpt"
Rem making results directory for Bug Finder and Code Prover Run
mkdir bfResults;
mkdir cpResults;
Rem Start Bug Finder analysis
polyspace-bug-finder -sources %source%^
 -results-dir "%CD%\bfResults"^
 -code-metrics ^
 -misra3 all-rules ^
 -lang c ^
 -checkers none
 Rem Start Code Prover analysis
polyspace-code-prover -sources %source%^
 -results-dir "%CD%\cpResults"^
 -lang c ^
 -main-generator 
Rem Start Report generation
polyspace-report-generator ^
-template %template_path% ^
-results-dir "%CD%\cpResults","%CD%\bfResults"

保護されている共有グローバル変数と非保護の共有グローバル変数のチェック

以前は、このタスクを行うために、エントリ ポイント関数と時間的に排他な関数をコードに指定し、Code Prover を使用してコード メトリクスを計算していました。このタスクの推奨される実行方法は、Code Prover でグローバル変数チェックを使用する方法です。

  • Polyspace ユーザー インターフェイスで以前と同じオプションを設定してから、[Code Prover の実行] をクリックします。[コード メトリクスの計算] をオンにする必要はありません。

  • コマンド ラインで以前と同じ解析オプションを使用して、Code Prover 検証を実行します。-code-metrics を省略します。

検証が完了すると、[結果のリスト] で、保護されている共有グローバル変数にグリーン チェックが付いており、非保護の可能性がある共有グローバル変数にはオレンジ チェックが付いています。

グローバル変数 (Polyspace Code Prover)を参照してください。

スタック使用量の計算

以前は、スタック使用量を計算するには、コード メトリクスを計算するようにPolyspace UI で Code Prover 解析を設定するか、またはオプション -code-metrics を指定していました。推奨されるこのタスクの実行方法は、解析オプション [スタック使用量の計算] (-stack-usage) (Polyspace Code Prover) を使用する方法です。

  • Polyspace ユーザー インターフェイスの [チェック動作] ペインで [スタック使用量の計算] をオンにしてから、[Code Prover の実行] をクリックします。[コード メトリクスの計算] をオンにする必要はありません。

  • コマンド ラインで以前と同じ解析オプションを使用して、Code Prover 検証を実行します。-code-metrics の代わりに -stack-usage を使用してください。

検証が完了すると、[結果のリスト] にスタック使用量メトリクスが表示されます。

参考

トピック