В этом примере показано, как использовать API Проекта, чтобы создать новый проект и автоматизировать задачи проекта для управления файлами. Это покрывает, как создать проект из командной строки, добавьте файлы и папки, создайте путь к проекту, задайте ярлыки проекта и создайте ссылку на новый проект в другом проекте. Это также показывает, как программно работать с модифицированными файлами, зависимостями, ярлыками и метками.
Создайте рабочую копию Табличных файлов проекта Приложения "Таймс" в качестве примера и откройте проект. MATLAB® копирует файлы в папку в качестве примера так, чтобы можно было отредактировать их. Проект подвергает файлы системе контроля версий Git™. Используйте currentProject
чтобы создать проект возражают из в настоящее время загруженного проекта.
matlab.project.example.timesTable mainProject = currentProject;
Исследуйте файлы в проекте.
files = mainProject.Files
files=1×14 object
1×14 ProjectFile array with properties:
Path
Labels
Revision
SourceControlStatus
Используйте индексацию, чтобы получить доступ к файлам в этом списке. Например, получите номер документа 10. Каждый файл имеет свойства, описывающие его путь и присоединенные метки.
mainProject.Files(10)
ans = ProjectFile with properties: Path: "C:\workSpace\examples\TimesTableApp1\tests\tNewTimesTable.m" Labels: [1×1 matlab.project.Label] Revision: "51316c67b968d45a17e127003a25143577ec011a" SourceControlStatus: Unmodified
Получите Git последняя версия десятого файла.
mainProject.Files(10).Revision
ans = "51316c67b968d45a17e127003a25143577ec011a"
Исследуйте метки десятого файла.
mainProject.Files(10).Labels
ans = Label with properties: File: "C:\workSpace\examples\TimesTableApp1\tests\tNewTimesTable.m" DataType: 'none' Data: [] Name: "Test" CategoryName: "Classification"
Получите конкретный файл по наименованию.
myfile = findFile(mainProject,"source/timestable.mlapp")
myfile = ProjectFile with properties: Path: "C:\workSpace\examples\TimesTableApp1\source\timestable.mlapp" Labels: [1×1 matlab.project.Label] Revision: "51316c67b968d45a17e127003a25143577ec011a" SourceControlStatus: Unmodified
Создайте проект Настольной игры "Таймс". Этот проект сохранит игровую логику устаревшее Табличное Приложение. Проект Настольной игры "Таймс" будет использоваться Табличным проектом Приложения "Таймс" через ссылку проекта.
Создайте проект и установите название проекта.
timesTableGameFolder = fullfile(mainProject.RootFolder,"refs","TimesTableGame"); timesTableGame = matlab.project.createProject(timesTableGameFolder); timesTableGame.Name = "Times Table Game";
Переместите Табличную игровую логику Приложения "Таймс" от основной папки проекта до папки нового проекта и добавьте его в проект Настольной игры "Таймс". Затем удалите файл из Табличного проекта Приложения "Таймс".
movefile("..\..\source\timesTableGame.m"); addFile(timesTableGame,"timesTableGame.m"); reload(mainProject); removeFile(mainProject,"source\timesTableGame.m");
Добавьте корневую папку проекта Настольной игры "Таймс" в путь к проекту Настольной игры "Таймс". Это делает timesTableGame.m
файл, доступный, когда Табличный проект Приложения "Таймс" или любой проект, что ссылки Табличный проект Приложения "Таймс" загружаются.
reload(timesTableGame); addPath(timesTableGame,timesTableGame.RootFolder);
Добавьте новый проект Настольной игры Времен в Табличный проект Приложения "Таймс" как ссылка проекта. Это позволяет проекту Приложения Расписания просмотреть, отредактировать, и петлять в проекте Настольной игры "Таймс".
reload(mainProject); addReference(mainProject,timesTableGame);
Получите все модифицированные файлы в Табличном проекте Приложения "Таймс". Сравните этот список с представлением Files> Modified в проекте. Вы видите файлы для нового проекта Настольной игры Времен, а также удаленные и модифицированные файлы в Табличном проекте Приложения "Таймс".
modifiedfiles = listModifiedFiles(mainProject)
modifiedfiles=1×8 object
1×8 ProjectFile array with properties:
Path
Labels
Revision
SourceControlStatus
Получите второй модифицированный файл в списке. Заметьте что SourceControlStatus
свойством является Added
. listModifiedFiles
функция возвращает любые файлы, которые добавляются, изменяются, конфликтовал, удаленный, и так далее.
modifiedfiles(2)
ans = ProjectFile with properties: Path: "C:\workSpace\examples\TimesTableApp1\refs\TimesTableGame\resources\project\Project.xml" Revision: "" SourceControlStatus: Added
Обновите состояние системы контроля версий прежде, чем запросить отдельные файлы. Вы не должны делать этого прежде, чем вызвать listModifiedFiles
.
refreshSourceControl(mainProject)
Получите все файлы проекта, которые являются Unmodified
. Используйте ismember
функция, чтобы получить массив logicals утверждение, какие файлы в Табличном проекте Приложения "Таймс" не модифицированы. Используйте массив, чтобы получить список немодифицированных файлов.
unmodifiedStatus = ismember([mainProject.Files.SourceControlStatus],matlab.sourcecontrol.Status.Unmodified); mainProject.Files(unmodifiedStatus)
ans=1×9 object
1×9 ProjectFile array with properties:
Path
Labels
Revision
SourceControlStatus
Запустите анализ зависимостей, чтобы обновить известные зависимости между файлами проекта.
updateDependencies(mainProject)
Получите список зависимостей в Табличном проекте Приложения "Таймс". Dependencies
свойство содержит график зависимостей между файлами проекта, хранившими как digraph
MATLAB объект.
g = mainProject.Dependencies
g = digraph with properties: Edges: [5×1 table] Nodes: [9×1 table]
Потребуйте файлов timestable.mlapp
файл.
requiredFiles = bfsearch(g, which('source/timestable.mlapp'))
requiredFiles = 2×1 cell
{'C:\workSpace\examples\TimesTableApp1\source\timestable.mlapp' }
{'C:\workSpace\examples\TimesTableApp1\refs\TimesTableGame\timesTableGame.m'}
Получите файлы верхнего уровня всех типов в графике. indegree
функция находит все файлы, которые не зависятся ни от каким другим файлом.
top = g.Nodes.Name(indegree(g)==0)
top = 7×1 cell
{'C:\workSpace\examples\TimesTableApp1\requirements\TimesTableRequirements.mlx'}
{'C:\workSpace\examples\TimesTableApp1\tests\tAnswerIsCorrect.m' }
{'C:\workSpace\examples\TimesTableApp1\tests\tCurrentQuestion.m' }
{'C:\workSpace\examples\TimesTableApp1\tests\tNewTimesTable.m' }
{'C:\workSpace\examples\TimesTableApp1\utilities\editTimesTable.m' }
{'C:\workSpace\examples\TimesTableApp1\utilities\openRequirementsDocument.m' }
{'C:\workSpace\examples\TimesTableApp1\utilities\runTheseTests.m' }
Получите файлы верхнего уровня, которые имеют зависимости. indegree
функция находит все файлы, которые не зависятся ни от каким другим файлом и outdegree
функция находит все файлы, которые имеют зависимости.
top = g.Nodes.Name(indegree(g)==0 & outdegree(g)>0)
top = 4×1 cell
{'C:\workSpace\examples\TimesTableApp1\requirements\TimesTableRequirements.mlx'}
{'C:\workSpace\examples\TimesTableApp1\tests\tAnswerIsCorrect.m' }
{'C:\workSpace\examples\TimesTableApp1\tests\tCurrentQuestion.m' }
{'C:\workSpace\examples\TimesTableApp1\tests\tNewTimesTable.m' }
Найдите повлиявшими (или "в восходящем направлении") файлы путем создания транспонированного графика. Используйте flipedge
функционируйте, чтобы инвертировать направление ребер в графике.
transposed = flipedge(g)
transposed = digraph with properties: Edges: [5×1 table] Nodes: [9×1 table]
impacted = bfsearch(transposed,which('source/timestable.mlapp'))
impacted = 2×1 cell
{'C:\workSpace\examples\TimesTableApp1\source\timestable.mlapp' }
{'C:\workSpace\examples\TimesTableApp1\requirements\TimesTableRequirements.mlx'}
Получите информацию о файлах проекта, таких как количество зависимостей и висячих строк.
averageNumDependencies = mean(outdegree(g)); numberOfOrphans = sum(indegree(g)+outdegree(g)==0);
Измените порядок сортировки диаграммы зависимостей, чтобы показать изменения проекта с самого начала.
ordered = g.Nodes.Name(flip(toposort(g)));
Вы можете использовать ярлыки, чтобы сохранить частые задачи и часто получали доступ к файлам, или автоматизировать задачи запуска и завершения работы.
Получите Табличные ярлыки проекта Приложения "Таймс".
shortcuts = mainProject.Shortcuts
shortcuts=1×4 object
1×4 Shortcut array with properties:
Name
Group
File
Исследуйте ярлык в списке.
shortcuts(2)
ans = Shortcut with properties: Name: "Edit Times Table App" Group: "Launch Points" File: "C:\workSpace\examples\TimesTableApp1\utilities\editTimesTable.m"
Получите путь к файлу ярлыка.
shortcuts(3).File
ans = "C:\workSpace\examples\TimesTableApp1\utilities\openRequirementsDocument.m"
Исследуйте все файлы в списке ярлыков.
{shortcuts.File}'
ans=4×1 cell array
{["C:\workSpace\examples\TimesTableApp1\source\timestable.mlapp" ]}
{["C:\workSpace\examples\TimesTableApp1\utilities\editTimesTable.m" ]}
{["C:\workSpace\examples\TimesTableApp1\utilities\openRequirementsDocument.m"]}
{["C:\workSpace\examples\TimesTableApp1\utilities\runTheseTests.m" ]}
Создайте новую категорию меток типа char
. В Табличном проекте Приложения "Таймс", новом Engineers
категория появляется в панели Меток.
createCategory(mainProject,'Engineers','char')
ans = Category with properties: Name: "Engineers" SingleValued: 0 DataType: "char" LabelDefinitions: [1×0 matlab.project.LabelDefinition]
Задайте новую метку в новой категории.
category = findCategory(mainProject,'Engineers'); createLabel(category,'Bob');
Получите объект определения метки для новой метки.
ld = findLabel(category,'Bob')
ld = LabelDefinition with properties: Name: "Bob" CategoryName: "Engineers"
Присоедините метку к файлу проекта. Если вы выбираете файл в Табличном проекте Приложения "Таймс", вы видите эту метку в Маркировать панели Editor.
myfile = findFile(mainProject,"source/timestable.mlapp"); addLabel(myfile,'Engineers','Bob');
Получите конкретную метку и присоедините текстовые данные к ним.
label = findLabel(myfile,'Engineers','Bob'); label.Data = 'Email: Bob.Smith@company.com'
label = Label with properties: File: "C:\workSpace\examples\TimesTableApp1\source\timestable.mlapp" DataType: 'char' Data: 'Email: Bob.Smith@company.com' Name: "Bob" CategoryName: "Engineers"
Получите данные о метке и сохраните их в переменной.
mydata = label.Data
mydata = 'Email: Bob.Smith@company.com'
Создайте новую категорию меток с типом данных дважды, тип, который MATLAB обычно использует для числовых данных.
createCategory(mainProject,'Assessors','double'); category = findCategory(mainProject,'Assessors'); createLabel(category,'Sam');
Присоедините новую метку к заданному файлу и присвойте значение данных 2 метке.
myfile = mainProject.Files(10); addLabel(myfile, 'Assessors', 'Sam', 2)
ans = Label with properties: File: "C:\workSpace\examples\TimesTableApp1\utilities" DataType: 'double' Data: 2 Name: "Sam" CategoryName: "Assessors"
Закройте проект запустить скрипты завершения работы и проверку на несохраненные файлы.
close(mainProject)