Автоматизируйте управление меткой в проекте

В этом примере показано, как к проекту функционирует, чтобы управлять метками.

Откройте проект корпуса в качестве примера

Запустите следующие команды, чтобы создать и открыть рабочую копию "sldemo_slproject_airframe" примера.

Simulink.ModelManagement.Project.projectDemo('airframe');
rebuild_s_functions('no_progress_dialog');
Building with 'gcc'.
MEX completed successfully.

Получите объект проекта.

Используйте функцию currentProject, чтобы получить объект проекта управлять в настоящее время открытым проектом в командной строке.

project = currentProject;

Просмотрите метки файла

Исследуйте свойство Files проекта. Свойство Files содержит массив объектов файла, один для каждого файла в проекте.

files = project.Files;
disp(files);
  1x30 ProjectFile array with properties:

    Path
    Labels
    Revision
    SourceControlStatus

Можно использовать индексацию, чтобы получить доступ к файлам в этом массиве. Следующая команда получает номер документа 2. Каждый файл имеет два свойства, описывающие его путь и присоединенные метки.

aFile = files(2);
disp(aFile);
  ProjectFile with properties:

                   Path: "/tmp/BR2019bd_1170825_64229/publish_examples0/bml.batserve.009250/work/MATLAB/projects/examples/airframe5/custom_tasks/analyzeModelFiles.m"
                 Labels: [1x1 matlab.project.Label]
               Revision: ""
    SourceControlStatus: NotUnderSourceControl

Найдите информацию о присоединенных метках файла путем индексации в свойство Labels объекта файла. Следующая команда присоединила первую метку к этому конкретному файлу.

label = aFile.Labels(1);
disp(label);
  Label with properties:

            File: "/tmp/BR2019bd_1170825_64229/publish_examples0/bml.batserve.009250/work/MATLAB/projects/examples/airframe5/custom_tasks/analyzeModelFiles.m"
        DataType: 'none'
            Data: []
            Name: "Analysis"
    CategoryName: "Classification"

Присоедините метку к подмножеству файлов.

Следующий код присоединяет метку 'Design' в категории 'Классификации' ко всем файлам в проекте с.m расширением файла.

Сначала получите список файлов:

files = project.Files;

Затем цикл через каждый файл и присоединяют метка 'Design' от категории 'Классификации', если файл имеет расширение.m.

for fileIdx = 1:numel(files)
   file = files(fileIdx);
   [~, ~, fileExtension] = fileparts(file.Path);
   if strcmp(fileExtension,'.m')
       addLabel(file, 'Classification', 'Design');
   end
end

Найдите именованную метку

Можно установить и запросить данные по метке, которая присоединена к файлу. Для этого сначала необходимо найти объект файла. Можно сделать это цикличным выполнением через все файлы в проекте, как показано на предыдущем шаге. В качестве альтернативы можно использовать функцию findFile на проекте.

Следующий код находит объект файла для файла 'utilities/rebuild_s_functions.m'.

pathToLocate = fullfile('utilities','rebuild_s_functions.m');
file = findFile(project, pathToLocate);

Исследуйте свойство Labels получить массив объектов Метки, один для каждой метки, присоединенной к файлу.

labels = file.Labels;
disp(labels);
  Label with properties:

            File: "/tmp/BR2019bd_1170825_64229/publish_examples0/bml.batserve.009250/work/MATLAB/projects/examples/airframe5/utilities/rebuild_s_functions.m"
        DataType: 'none'
            Data: []
            Name: "Design"
    CategoryName: "Classification"

Чтобы найти метку по наименованию, используйте findLabel на объекте файла.

label = findLabel(file, 'Classification','Design');
disp(label);
  Label with properties:

            File: "/tmp/BR2019bd_1170825_64229/publish_examples0/bml.batserve.009250/work/MATLAB/projects/examples/airframe5/utilities/rebuild_s_functions.m"
        DataType: 'none'
            Data: []
            Name: "Design"
    CategoryName: "Classification"

Создайте новую категорию

Необходимо создать новые метки, прежде чем можно будет присоединить их к файлу. Вы задаете метки в категориях, давая каждой категории имя и поддерживаемый тип данных.

Следующий код создает категорию меток под названием Инженеры, которые могут использоваться, чтобы обозначить принадлежность файла в проекте. Эти метки имеют тип данных char для присоединения данных о Строке.

createCategory(project,'Engineers','char');
engineersCategory = findCategory(project, 'Engineers');
createLabel(engineersCategory,'Sam');
createLabel(engineersCategory,'Pat');
createLabel(engineersCategory,'Alex');

Можно теперь присоединить марку Сэма от категории 'Инженеров' до файла в проекте.

addLabel(file, 'Engineers', 'Sam');
label = findLabel(file, 'Engineers', 'Sam');

Установите данные о метке

Следующие наборы команд данные для присоединенной метки.

label.Data = 'Maintenance responsibility';
disp(label)
  Label with properties:

            File: "/tmp/BR2019bd_1170825_64229/publish_examples0/bml.batserve.009250/work/MATLAB/projects/examples/airframe5/utilities/rebuild_s_functions.m"
        DataType: 'char'
            Data: 'Maintenance responsibility'
            Name: "Sam"
    CategoryName: "Engineers"

Дополнительная информация

Проектная документация