polyspace.CodingRulesOptions class

Пакет: полипробел

Создайте пользовательский список кодирования правил проверять

Описание

Создайте пользовательский список кодирования правил зарегистрироваться в анализе Polyspace®.

Примечание

Прежде чем вы запустите Polyspace от MATLAB®, необходимо соединить Polyspace и установки MATLAB. Смотрите Интегрируют Polyspace с MATLAB и Simulink.

Конструкция

ruleList = polyspace.CodingRulesOptions(RuleSet) создает объект ruleList правил кодирования для RuleSet кодирование правила установлено. Установите активные правила в объекте правил кодирования.

Входные параметры

развернуть все

Стандартный набор правила кодирования, заданный как одно из кодирования, управляет акронимами.

Пример: 'misraCpp'

Типы данных: char

Свойства

Для каждого набора правила кодирования объект создается со всеми поддерживаемыми правилами, разделенными на разделы. По умолчанию все правила идут. Чтобы выключить правило, установите правило ко лжи. Например:

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

Копировать семантику

Значение. Чтобы изучить, как классы значения влияют на операции копии, смотрите Копирование Объектов (MATLAB).

Примеры

свернуть все

Настройте правила кодирования, которые проверяются в анализе Polyspace. Поскольку все правила включены по умолчанию, можно создать пользовательское подмножество путем отключения некоторых правил.

Создайте два объекта: polyspace.CodingRulesOptions объект для того, чтобы установить правила кодирования и polyspace.Project объект для выполнения анализа Polyspace.

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;

Добавьте индивидуально настраиваемый список кодирования правил к Configuration свойство polyspace.Project объект.

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®: 2 012 правил для анализа. Вместо того, чтобы перечислить правила, что вы хотите отключенный, можно задать правила, что вы хотите сохранить включенным. Можно также задать числа правила только без MISRA C: 2 012 разделов, содержащих правила.

Задайте числа правила в массиве ячеек к 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'})

Введенный в R2017b