主要内容

以编程方式创建和编辑项目

这个示例展示了如何使用Project API来创建一个新项目,并自动执行操作文件的项目任务。它涵盖了如何从命令行创建项目、添加文件和文件夹、设置项目路径、定义项目快捷方式,以及在另一个项目中创建对新项目的引用。它还展示了如何以编程方式处理修改过的文件、依赖项、快捷键和标签。

设置示例文件

创建泰晤士表应用程序示例项目文件的工作副本,并打开该项目。MATLAB®将文件复制到示例文件夹,以便您可以编辑它们。该项目将这些文件置于Git™源代码控制之下。使用currentProject从当前加载的项目创建项目对象。

matlab.project.example.timesTable mainProject = currentProject;

检查项目文件

检查项目中的文件。

= mainProject文件。文件
文件=1×14对象1×14 ProjectFile数组,带有属性:Path Labels Revision SourceControlStatus

使用索引来访问此列表中的文件。例如,获取文件10。每个文件都有描述其路径和附加标签的属性。

mainProject.Files (10)
“C:\workSpace\examples\TimesTableApp1\tests\tNewTimesTable.”m"标签:[1×1 matlab.project.]修订版本:"51316c67b968d45a17e127003a25143577ec011a" SourceControlStatus:未修改

获取Git最新版本的第十个文件。

mainProject.Files .Revision (10)
ans = " 51316 c67b968d45a17e127003a25143577ec011a "

检查第十档的标签。

mainProject.Files .Labels (10)
文件:"C:\workSpace\examples\TimesTableApp1\tests\tNewTimesTable. "m" DataType: 'none' Data: [] Name: "Test" CategoryName: "Classification"

通过名称获取特定的文件。

myfile = findFile (mainProject,“源/ timestable.mlapp”
路径:"C:\workSpace\examples\TimesTableApp1\source\timestable. "mlapp"标签:[1×1 matlab.project。修订版本:"51316c67b968d45a17e127003a25143577ec011a" SourceControlStatus:未修改

创建新项目

创建时间表游戏项目。该项目将存储用时表应用程序背后的游戏逻辑。用时表游戏项目将通过项目引用被用时表应用程序项目使用。

创建项目并设置项目名称。

timesTableGameFolder = fullfile (mainProject。RootFolder,“参考文献”“TimesTableGame”);timesTableGame = matlab.project.createProject (timesTableGameFolder);timesTableGame。Name =“乘法表游戏”

将用时表应用程序游戏逻辑从主项目文件夹移动到新项目文件夹,并将其添加到用时表游戏项目中。然后,从泰晤士表应用程序项目中删除该文件。

移动文件(“. . \ . . \ \ timesTableGame.m源”);addFile (timesTableGame,“timesTableGame.m”);重载(mainProject);removeFile (mainProject“源\ timesTableGame.m”);

将用时表游戏项目根文件夹添加到用时表游戏项目路径中。这使得timesTableGame.m当泰晤士表应用项目或任何引用泰晤士表应用项目加载时,文件可用。

重载(timesTableGame);目录(timesTableGame timesTableGame.RootFolder);

添加项目参考

将新的用时表游戏项目添加到用时表应用项目中作为项目参考。这允许时间表应用程序项目查看、编辑和运行时间表游戏项目中的文件。

重载(mainProject);addReference (mainProject timesTableGame);

把修改的文件

获取Times Table App项目中所有修改过的文件。将这个列表与文件>修改在项目中查看。你可以看到新的泰晤士表游戏项目的文件,以及泰晤士表应用程序项目中删除和修改的文件。

modifiedfiles = listModifiedFiles (mainProject)
modifiedfiles =1×8对象1×8 ProjectFile数组,带有属性:Path Labels Revision SourceControlStatus

获取列表中的第二个修改文件。观察到的SourceControlStatus属性是添加.的listModifiedFiles函数返回添加、修改、冲突、删除等的所有文件。

modifiedfiles (2)
“C:\workSpace\examples\TimesTableApp1\refs\ timestableame \resources\project\ project .xml”Revision:“SourceControlStatus: Added .

在查询单个文件之前刷新源控制状态。您不需要在调用之前这样做listModifiedFiles

refreshSourceControl (mainProject)

获取所有的项目文件未修改的.使用ismember函数获取一个逻辑数组,该数组表示Times Table App项目中哪些文件未修改。使用数组获取未修改文件的列表。

unmodifiedStatus = ismember ([mainProject.Files.SourceControlStatus], matlab.sourcecontrol.Status.Unmodified);mainProject.Files (unmodifiedStatus)
ans =1×9的对象1×9 ProjectFile数组,带有属性:Path Labels Revision SourceControlStatus

得到文件的依赖关系

运行依赖关系分析来更新项目文件之间的已知依赖关系。

updateDependencies (mainProject)

获取泰晤士表应用程序项目中的依赖项列表。的依赖关系属性包含项目文件之间的依赖关系图,存储为MATLAB有向图对象。

g = mainProject。依赖关系
g = diggraph with properties: Edges: [5×1 table] Nodes: [9×1 table]

获得所需的文件timestable.mlapp文件。

requiredFiles = bfsearch(g, which(“源/ timestable.mlapp”))
requiredFiles =2×1细胞{“C: \ workSpace \ \ TimesTableApp1 \ \ timestable源例子。mlapp’}{“C: \ workSpace \ \参TimesTableApp1 \ \ TimesTableGame例子\ timesTableGame.m '}

获取图中所有类型的顶级文件。的入度函数查找不依赖于任何其他文件的所有文件。

顶级= g.Nodes.Name(入度(g) = = 0)
顶级=7×1细胞{“C: \ workSpace \ \ TimesTableApp1 \ \ TimesTableRequirements需求示例。mlx’}{“C: \ workSpace \ \ TimesTableApp1 \ \ tAnswerIsCorrect测试例子。m '}{“C: \ workSpace \ \ TimesTableApp1 \ \ tCurrentQuestion测试例子。m '}{“C: \ workSpace \ \ TimesTableApp1 \ \ tNewTimesTable测试例子。m '}{'C:\workSpace\examples\TimesTableApp1\utilities\editTimesTable.m' } {'C:\workSpace\examples\TimesTableApp1\utilities\openRequirementsDocument.m' } {'C:\workSpace\examples\TimesTableApp1\utilities\runTheseTests.m' }

获取具有依赖项的顶级文件。的入度函数查找不依赖于任何其他文件的所有文件,并且出度函数查找所有具有依赖关系的文件。

top = g. nodes . name (indegree(g)==0 & outdegree(g)>0)
顶级=4×1细胞{“C: \ workSpace \ \ TimesTableApp1 \ \ TimesTableRequirements需求示例。mlx’}{“C: \ workSpace \ \ TimesTableApp1 \ \ tAnswerIsCorrect测试例子。m '}{“C: \ workSpace \ \ TimesTableApp1 \ \ tCurrentQuestion测试例子。m '}{“C: \ workSpace \ \ TimesTableApp1 \ \ tNewTimesTable测试例子。m '}

通过创建一个转置的图来查找受影响的(或“上游”)文件。使用flipedge函数来反转图形中边的方向。

转置= flipedge (g)
转置=有向图属性:Edges: [5×1 table] Nodes: [9×1 table]
影响= bfsearch(转置,(“源/ timestable.mlapp”))
影响=2×1细胞{“C: \ workSpace \ \ TimesTableApp1 \ \ timestable源例子。mlapp’}{“C: \ workSpace \ \ TimesTableApp1 \ \ TimesTableRequirements.mlx需求的例子}

获取有关项目文件的信息,例如依赖项和孤儿项的数量。

averageNumDependencies =意味着(出度(g));numberOfOrphans =总和(入度(g) +出度(g) = = 0);

更改依赖关系图的排序顺序,以自底向上显示项目更改。

命令= g.Nodes.Name(翻转(toposort (g)));

查询快捷键

您可以使用快捷方式保存频繁的任务和频繁访问的文件,或自动启动和关闭任务。

获取泰晤士表应用程序项目快捷方式。

快捷键= mainProject。快捷键
快捷键=1×4对象1×4带有属性的快捷数组:名称组文件

检查列表中的快捷方式。

快捷键(2)
名称:"Edit TimesTableApp "组:"Launch Points"文件:"C:\workSpace\examples\TimesTableApp1\utilities\editTimesTable.m"

获取快捷方式的文件路径。

快捷键(3)。文件
ans = " C: \ workSpace \ \ TimesTableApp1例子\工具\ openRequirementsDocument.m”

检查快捷方式列表中的所有文件。

{快捷方式。文件}’
ans =4×1单元阵列{[" C: \ workSpace \ \ TimesTableApp1例子\ \ timestable来源。mlapp "]} {[" C: \ workSpace \ \ TimesTableApp1 \工具\ editTimesTable例子。m”)}{["C:\workSpace\examples\TimesTableApp1\utilities\openRequirementsDocument.m"]} {["C:\workSpace\examples\TimesTableApp1\utilities\runTheseTests.m" ]}

标签文件

创建一个新的类型标签类别字符.在泰晤士表应用程序项目中,新的工程师类别出现在标签窗格。

createCategory (mainProject“工程师”“字符”
名称:"Engineers" singlevalue: 0 DataType: "char" LabelDefinitions: [1×0 matlab.project.LabelDefinition]

在新类别中定义一个新标签。

类别= findCategory (mainProject,“工程师”);createLabel(类别,“鲍勃”);

获取新标签的标签定义对象。

ld = findLabel(类别,“鲍勃”
ld = LabelDefinition with properties:名称:"Bob" CategoryName: "Engineers"

将标签附加到项目文件。如果您选择Times Table App项目中的文件,您可以在标签编辑器窗格。

myfile = findFile (mainProject,“源/ timestable.mlapp”);addLabel (myfile“工程师”“鲍勃”);

获取一个特定的标签并将文本数据附加到其上。

标签= findLabel (myfile,“工程师”“鲍勃”);标签。Data =“电子邮件:Bob.Smith@company.com”
C:\workSpace\examples\TimesTableApp1\source\timestable. label =带有属性的标签。mlapp" DataType: 'char' Data: 'Email: Bob.Smith@company.com' Name: "Bob" CategoryName: "Engineers"

检索标签数据并将其存储在一个变量中。

mydata =标签。数据
mydata = 'Email: Bob.Smith@company.com'

用数据类型创建一个新的标签类别, MATLAB通常用于处理数值数据。

createCategory (mainProject“评估”“双”);类别= findCategory (mainProject,“评估”);createLabel(类别,“山姆”);

将新标签附加到指定的文件并将数据值2赋给该标签。

myfile = mainProject.Files (10);addLabel (myfile“评估”“山姆”, 2)
ans = Label with properties: File: "C:\workSpace\examples\TimesTableApp1\utilities" DataType: 'double' Data: 2 Name: "Sam" CategoryName: "Assessors"

关闭项目

关闭项目以运行关闭脚本并检查未保存的文件。

关上(mainProject)

另请参阅

相关的话题