メインコンテンツ

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

polyspace.CodingRulesOptions クラス

名前空間: polyspace

チェックするコーディング ルールのカスタム リストの作成

説明

Polyspace® 解析でチェックするコーディング ルールのカスタム リストを作成します。

メモ

MATLAB® から Polyspace を実行する前に、Polyspace インストールと MATLAB インストールをリンクしなければなりません。MATLAB や Simulink との Polyspace の統合またはPolyspace Server 製品と MATLAB との統合を参照してください。

構築

ruleList = polyspace.CodingRulesOptions(RuleSet) では、RuleSet コーディング ルール セット用のコーディング ルール オブジェクト ruleList が作成されます。コーディング ルール オブジェクトに有効なルールを設定します。

入力引数

すべて展開する

標準コーディング ルール セットを、コーディング ルールの頭字語のいずれかで指定します。

例: 'misraCpp'

データ型: char

プロパティ

コーディング ルール セットごとに、節に分割されたサポートされるすべてのルールを含むオブジェクトが作成されます。既定では、すべてのルールがオンになっています。ルールをオフにするには、そのルールを false に設定します。以下に例を示します。

misraRules = polyspace.CodingRulesOptions('misraC');
misraRules.Section_20_Standard_libraries.rule_20_1 = false;

コピーのセマンティクス

値。値クラスがコピー操作に及ぼす影響については、オブジェクトのコピーを参照してください。

すべて折りたたむ

Polyspace 解析でチェックされるコーディング ルールをカスタマイズします。既定ですべてのルールが有効になっているため、一部のルールを無効にすることでカスタム サブセットを作成できます。

コーディング ルールを設定するオブジェクト polyspace.CodingRulesOptions と Polyspace 解析を実行するオブジェクト polyspace.Project の 2 つのオブジェクトを作成します。

misraRules = polyspace.CodingRulesOptions('misraC2012');
proj = polyspace.Project;

ルール 2.1 ~ 2.7 を無効にすることでコーディング ルールのリストをカスタマイズします。

misraRules.Section_2_Unused_code.rule_2_1 = false;
misraRules.Section_2_Unused_code.rule_2_2 = false;
misraRules.Section_2_Unused_code.rule_2_3 = false;
misraRules.Section_2_Unused_code.rule_2_4 = false;
misraRules.Section_2_Unused_code.rule_2_5 = false;
misraRules.Section_2_Unused_code.rule_2_6 = false;
misraRules.Section_2_Unused_code.rule_2_7 = false;

オブジェクト polyspace.Project のプロパティ Configuration にコーディング ルールのカスタマイズされたリストを追加します。

proj.Configuration.CodingRulesCodeMetrics.MisraC3Subset = misraRules;
proj.Configuration.CodingRulesCodeMetrics.EnableMisraC3 = true;
proj.Configuration.CodingRulesCodeMetrics.EnableCheckersSelectionByFile = true;
ファイルごとのチェッカーの選択を有効にする必要があります。なぜなら、Polyspace の実行では、下位の XML ファイルを使用してコーディング ルール チェッカーを有効にするからです。XML ファイルは結果フォルダーの .settings サブフォルダーに保存されています。

オブジェクト polyspace.Project を使用して分析を実行できるようになります。たとえば、次のように入力できます。

proj.Configuration.Sources = {fullfile(polyspaceroot, 'polyspace', ... 
    'examples', 'cxx', 'Bug_Finder_Example', 'sources', 'numerical.c')};
run(proj, 'bugfinder');

解析で、MISRA C™:2012 ルールのサブセットを指定する必要があるとします。無効にするルールを列挙する代わりに、有効なままにしておくルールを指定できます。ルールを含む MISRA C:2012 セクションを指定せずに、ルール番号のみを指定することもできます。

cell 配列のルール番号を、次のように定義される関数 createRulesObject に指定します。

function rulesObject = createRulesObject(rulesToEnable)

%% This function takes a cell array of MISRA C:2012 rules and returns
%% a polyspace.CodingRulesOptions object with the rules enabled.
%% Example input argument: {'2.7', '3.1'}

    rulesObject = polyspace.CodingRulesOptions('misraC2012');
    
    % Coding Standards documents have many sections. Loop over all
    % sections.
    ruleSections = properties(rulesObject);
    for i=1:length(ruleSections)
         sectionName = ruleSections{i};
         rulesInSection = properties(rulesObject.(sectionName));
         
         % Loop over all rules in a section, enable or disable rule based
         % on input
         for j=1:length(rulesInSection)
             ruleNumberAsProperty = rulesInSection{j};
             ruleNumber = strrep(strrep(ruleNumberAsProperty,'rule_',''),'_','.');
             if(any(strcmp(rulesToEnable,ruleNumber)))
                 rulesObject.(sectionName).(ruleNumberAsProperty)=1;
             else
                 rulesObject.(sectionName).(ruleNumberAsProperty)=0;
             end
         end
    end
end

たとえば、ルール 1.1 と 2.2 を有効にするには、次のように入力します。

createRulesObject({'1.1','2.2'})

バージョン履歴

R2016b で導入