このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
polyspace.Project
C および C++ に対する Polyspace 解析の実行と結果の読み取り
説明
この MATLAB® オブジェクトを使用して、C および C++ ソース ファイルに対して Polyspace® 解析を実行します。ソース ファイルを指定して解析オプションをカスタマイズするには、Configuration
プロパティを使用します。解析を実行するには、run
メソッドを使用します。解析後に結果を読み取るには、Results
プロパティを使用します。
メモ
MATLAB から Polyspace を実行する前に、Polyspace インストールと MATLAB インストールをリンクしなければなりません。MATLAB や Simulink との Polyspace の統合またはPolyspace Server 製品と MATLAB との統合を参照してください。
作成
proj = polyspace.Project
は、Polyspace 解析の構成、実行、および解析結果の読み取りに使用できるオブジェクトを作成します。
プロパティ
Polyspace 解析を実行するためのオプション。polyspace.Options
オブジェクトとして実装します。オブジェクトには、解析オプションに対応するプロパティがあります。これらのプロパティの詳細については、polyspace.Project.Configuration のプロパティ を参照してください。
既定のオプションは、そのままにしておくことも、以下のいずれかの方法で変更することもできます。
ソース コードの言語を '
C
'、'CPP
'、または 'C-CPP
' (既定の設定) に設定します。オブジェクトの言語設定によっては、いくつかの解析オプションを使用できない場合もあります。proj=polyspace.Project; proj.Configuration=polyspace.Options('C');
プロパティを直接変更する。
proj = polyspace.Project; proj.Configuration.TargetCompiler.Compiler = 'gnu4.9';
他の
polyspace.Project
オブジェクトからオプションを取得する。proj1 = polyspace.Project; proj1.Configuration.TargetCompiler.Compiler = 'gnu4.9'; proj2 = proj1;
複数のプロジェクトで共通の解析オプションを使用するには、この方法に従います。たとえば、すべてのオプションを再利用して、ソース ファイルだけ変更する場合です。
Polyspace デスクトップ製品のユーザー インターフェイスで作成したプロジェクト (
.psprj
ファイル) からオプションを取得する。proj = polyspace.Project; projectLocation = fullfile(polyspaceroot, 'polyspace', ... 'examples', 'cxx', 'Bug_Finder_Example', 'Bug_Finder_Example.psprj') proj.Configuration = polyspace.loadProject(projectLocation);
最適なオプションのセットを決定するには、ユーザー インターフェイスでオプションを設定した後、オプションを
polyspace.Project
オブジェクトにインポートします。ユーザー インターフェイスで、オプションに関するツールヒント ヘルプを表示できます。Simulink® モデルからオプションを取得する (Polyspace デスクトップ製品にのみ適用)。オプションを取得する前に、モデルからコードを生成する。
modelName = 'model'; load_system(modelName); % 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); % Obtain configuration from model proj = polyspace.Project; proj.Configuration = polyspace.ModelLinkOptions(modelName);
オプション使用して、モデルから生成されたコードを解析します。
Polyspace 解析の結果。polyspace.Project
オブジェクトを作成すると、このプロパティは最初は空です。このオブジェクトの run
メソッドを実行してはじめて、このプロパティが入力されます。run
メソッドの引数 ('bugFinder'
または 'codeProver'
) に応じて、プロパティが polyspace.BugFinderResults
オブジェクトまたは polyspace.CodeProverResults
オブジェクトとして実装されます。
結果を読み取るには、polyspace.BugFinderResults
または polyspace.CodeProverResults
オブジェクトの以下のメソッドを使用します。
getSummary
:概要形式の結果を MATLAB table に取得します。proj = polyspace.Project; proj.Configuration.Sources = {fullfile(polyspaceroot, 'polyspace', 'examples',... 'cxx', 'Code_Prover_Example', 'sources', 'single_file_analysis.c')}; proj.Configuration.ResultsDir = fullfile(pwd,'results'); run(proj, 'bugFinder'); resObj = proj.Results; resTable = getSummary(resObj, 'defects');
詳細は、
getSummary
を参照してください。getResults
:完全な結果または読みやすい形式の結果を MATLAB table に取得します。proj = polyspace.Project; proj.Configuration.Sources = {fullfile(polyspaceroot, 'polyspace', 'examples',... 'cxx', 'Code_Prover_Example', 'sources', 'single_file_analysis.c')}; proj.Configuration.ResultsDir = fullfile(pwd,'results'); run(proj, 'bugFinder'); resObj = proj.Results; resTable = getResults(resObj, 'readable');
詳細は、
getResults
を参照してください。
オブジェクト関数
run | Polyspace 解析の実行 |
例
例のファイル numerical.c
に Polyspace Bug Finder™ 解析を実行します。以下のオプションを構成します。
コンパイラとして GCC 4.9 を指定します。
結果を現在の作業フォルダーの
results
サブフォルダーに保存します。
proj = polyspace.Project % Configure analysis proj.Configuration.Sources = {fullfile(polyspaceroot, 'polyspace', ... 'examples', 'cxx', 'Bug_Finder_Example', 'sources', 'numerical.c')}; proj.Configuration.TargetCompiler.Compiler = 'gnu4.9'; proj.Configuration.ResultsDir = fullfile(pwd,'results'); % Run analysis bfStatus = run(proj, 'bugFinder'); % Read results resObj = proj.Results; bfSummary = getSummary(resObj, 'defects');
例のファイル single_file_analysis.c
に Polyspace Code Prover™ 解析を実行します。以下のオプションを構成します。
コンパイラとして GCC 4.9 を指定します。
結果を現在の作業フォルダーの
results
サブフォルダーに保存します。ソース コードに
main
関数が存在しない場合は、関数を生成する必要があることを指定します。
proj = polyspace.Project % Configure analysis proj.Configuration.Sources = {fullfile(polyspaceroot, 'polyspace', 'examples',... 'cxx', 'Code_Prover_Example', 'sources', 'single_file_analysis.c')}; proj.Configuration.TargetCompiler.Compiler = 'gnu4.9'; proj.Configuration.ResultsDir = fullfile(pwd,'results'); proj.Configuration.CodeProverVerification.MainGenerator = true; % Run analysis cpStatus = run(proj, 'codeProver'); % Read results resObj = proj.Results; cpSummary = getSummary(resObj, 'runtime');
例のファイル single_file_analysis.c
に Polyspace Bug Finder 解析を実行します。以下のオプションを構成します。
コンパイラとして GCC 4.9 を指定します。
結果を現在の作業フォルダーの
results
サブフォルダーに保存します。MISRA C™:2012 ルールのチェックを有効にします。必須ルールのみチェックします。
proj = polyspace.Project % Configure analysis proj.Configuration.Sources = {fullfile(polyspaceroot, 'polyspace', ... 'examples', 'cxx', 'Bug_Finder_Example', 'sources', 'numerical.c')}; proj.Configuration.TargetCompiler.Compiler = 'gnu4.9'; proj.Configuration.ResultsDir = fullfile(pwd,'results'); proj.Configuration.CodingRulesCodeMetrics.EnableMisraC3 = true; proj.Configuration.CodingRulesCodeMetrics.MisraC3Subset = 'mandatory'; % Run analysis bfStatus = run(proj, 'bugFinder'); % Read results resObj = proj.Results; defectsSummary = getSummary(resObj, 'defects'); misraSummary = getSummary(resObj, 'codingStandards');
バージョン履歴
R2017b で導入
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)