主要内容

使用脚本自动化项目任务

此示例演示如何使用project API自动执行项目任务,操作文件,包括使用修改的文件、依赖项、快捷方式和标签。

在命令行获取项目

打开Airframe项目并使用currentProject获取项目对象,以便在命令行中操作该项目。

sldemo\U slproject\U机身项目=当前项目
使用“MinGW64编译器(C)”生成。MEX已成功完成。proj=具有以下属性的项目:名称:“机身示例”SourceControlIntegration:“Git”RepositoryLocation:“C:\workSpace\examples\repositories\airframe1”SourceControlMessages:[1×3字符串]只读:0顶级:1依赖项:[1×1有向图]类别:[1×1 matlab.project.Category]文件:[1×31 matlab.project.ProjectFile]快捷方式:[1×7 matlab.project.Shortcut]项目路径:[1×7 matlab.project.PathFolder]项目参考:[1×0 matlab.project.ProjectReference]启动文件:[1×0字符串]关闭文件:[1×0字符串]说明:“这是一个示例项目。↵↵使用“项目快捷方式”toolstrip选项卡可以找到开始此项目的方法。根文件夹:“C:\workSpace\examples\airframe1”SimulinkCodeGenFolder:“C:\workSpace\examples\airframe1\work\codegen”项目启动文件夹:“C:\workSpace\examples\airframe1”SimulinkCacheFolder:“C:\workSpace\examples\airframe1\work\cache”万博1manbetx

查找项目命令

找出你可以对你的项目做些什么。

方法(项目)
类matlab.project.project的方法:addFile listModifiedFiles addFolderIncludingChildFiles RequiredFiles addPath refreshSourceControl addReference重新加载快捷方式removeCategory addShutdownFile removeFile addStartupFile removePath addprop removeReference close removeShortcut CreateContegory removeShutdownFile导出removeStartupFile findCategory runChecks findFile updateDependencies isLoaded调用“methods('handle'),用于从handle继承的matlab.project.project方法。

检查项目文件

获取项目对象后,可以检查项目属性,如文件。

files=proj.files
files=1×31项目文件数组,具有以下属性:路径标签修订版SourceControlStatus

使用索引访问此列表中的文件。以下命令获取文件号10。每个文件都有描述其路径和附加标签的属性。

项目文件(10)
ans=ProjectFile及其属性:路径:“C:\workSpace\examples\airframe1\data\system_model.sldd”标签:[1×1 matlab.project.Label]修订:“3E2DE2B2A43515259C0843AACF30775D8FDA493”源控制状态:未修改

检查第10个文件的标签。

项目文件(10).标签
ans=带有属性的标签:文件:“C:\workSpace\examples\airframe1\data\system\U model.sldd”数据类型:“无”数据:[]名称:“设计”类别名称:“分类”

按名称获取特定文件。

myfile=findFile(项目,'models/AnalogControl.slx')
myfile=ProjectFile及其属性:路径:“C:\workSpace\examples\airframe1\models\AnalogControl.slx”标签:[1×1 matlab.project.Label]修订版:“3E2DE2B2A43515259C0843AACF30775D8FDA493”源控制状态:未修改

找出您可以对该文件执行的操作。

方法(myfile)
类matlab.project.ProjectFile的方法:addLabel findLabel removeLabel

获取修改过的文件

通过添加任意块修改项目模型文件。

开放式系统(“模拟控制”)添加块(“内置/子系统”,“模拟控制/测试”)保存系统(“模拟控制”)

获取项目中所有已修改的文件。观察两个修改过的文件。与Project中的“修改的文件”视图进行比较,在该视图中可以看到修改的模型文件和相应的项目定义文件。

modifiedfiles=listModifiedFiles(项目)
modifiedfiles=1×2项目文件数组,具有以下属性:路径标签修订版SourceControlStatus

获取第二个修改过的文件。观察文件SourceControlStatus属性被修改。类似地,列表修改文件返回在项目的“修改的文件”视图中显示的已添加、冲突、删除等文件。

修改文件(2)
ans=ProjectFile,其属性为:路径:“C:\workSpace\examples\airframe1\resources\project\uuid-0988ac9d-5add-4cac-83a5-6a4af6c0cf34.xml”修订版:“SourceControlStatus:已添加

在查询单个文件之前刷新源代码管理状态。使用前无需执行此操作列表修改文件.

refreshSourceControl(项目)

获取具有特定源代码管理状态的所有项目文件。例如,获取以下文件:未修改.

项目文件(ismember([proj.Files.SourceControlStatus],matlab.sourcecontrol.Status.Unmodified))
ans=1×22具有属性的项目文件数组:路径标签修订版SourceControlStatus

获取文件依赖项

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

更新的依赖项(项目)

获取机身项目中的依赖关系列表。dependencies属性包含项目文件之间的依赖关系图,存储为MATLAB有向图对象。

g=项目依赖关系
g=具有以下属性的有向图:边:[21×1表]节点:[21×1表]

获取模型所需的文件。

requiredFiles=bfsearch(g,其中(“模拟控制”))
requiredFiles=3×1单元数组{'C:\workSpace\examples\airframe1\models\AnalogControl.slx'}{'C:\workSpace\examples\airframe1\data\controller.sldd'}{'C:\workSpace\examples\airframe1\data\bus.sldd'}

获取图形中所有类型的顶级文件。

g、 Nodes.Name(indegree(g)==0);

获取具有依赖项的顶级文件。

g、 Nodes.Name(indegree(g)==0&outdegree(g)>0)
ans=4×1单元数组{'C:\workSpace\examples\airbrame1\models\DigitalControl.slx'}{'C:\workSpace\examples\airbrame1\models\airbrame1\tests\f14\models\lineracturator.slx'}{'C:\workSpace\examples\airbrame1\tests\f14\airbrame\test.m'}

通过创建转置图查找受影响(或“上游”)的文件。

转置=翻转边缘(g)受影响=bfsearch(转置,其中(“垂直通道”))
transposed=properties:Edges有向图:[21×1表]节点:[21×1表]impacted=4×1单元格数组{'C:\workSpace\examples\airbrame1\models\vertical\u channel.slx'}{'C:\workSpace\examples\airbrame1\models\slproject\u f14.slx'}{'C:\workSpace\examples\airbrame1\tests\f14\u airbrame\u test.m'}

查找受数据字典影响的文件。

impacted2=bfsearch(转置,其中(“巴士,sldd”))
impacted2=11×1单元数组{'C:\workSpace\examples\airbrame1\data\bus.sldd'}{'C:\workSpace\examples\airbrame1\data\controller.sldd'}{'C:\workSpace\examples\airbrame1\data\system\u model.sldd'}{'C:\workSpace\examples\airbrame1\tests\f14\u airbrame\u test.m'}{'C:\workSpace\examples\airbrame1\airbrame1\models\AnalogControl.slx'}{'C:\workSpace\examples\airbrame1\models\DigitalControl.slx'}{'C:\workSpace\examples\airbrame1\airbrame1\models\lineracturator.slx'}{'C:\workSpace\examples\airbrame1\models\nonlineracturator.slx'}{'C:\workSpace\examples\airbrame1\models\slproject\slu f14.slx'}{'C:\workSpace\examples\airbrame1\models\vertical\u channel.slx'}

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

averageNumDependencies=平均值(outdegree(g));NumberOf孤儿数=总和(indegree(g)+outdegree(g)=0;

如果要对模型层次结构进行更改,请自下而上查找拓扑顺序。

ordered=g.Nodes.Name(flip(toposort(g));

查询快捷方式

检查项目的快捷方式属性。

快捷方式=项目快捷方式
快捷方式=1×7快捷方式数组,属性:名称组文件

检查数组中的快捷方式。

捷径(7)
ans=带有属性的快捷方式:名称:“重建项目的s函数”组:“实用程序”文件:“C:\workSpace\examples\airbrame1\utilities\Rebuild\u s\u functions.m”

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

快捷方式(7).文件
ans=“C:\workSpace\examples\airbrame1\utilities\rebuild\u s\u functions.m”

检查快捷方式单元格数组中的所有文件。

{shortcuts.File}'
ans=7×1单元数组{[“C:\workSpace\examples\airframe1\custom\U tasks\analyzeModelFiles.m”]}{[“C:\workSpace\examples\airframe1\custom\U tasks\billOfMaterials.m”]{[“C:\workSpace\examples\airframe1\custom\checkCodeProblems.m”]}{[“C:\workSpace\examples\airframe1\custom\U tasks\runUnitTest.m”]{[“C:\workSpace\examples\airbrame1\models\slproject\u f14.slx”]}{[“C:\workSpace\examples\airbrame1\reports\slproject\u f14.pdf”]}{[“C:\workSpace\examples\airbrame1\utilities\rebuild\u s\u functions.m”]}

标签文件

创建char类型的新标签类别。在项目中,新的工程师类别将显示在标签窗格中。

创建类别(项目,“工程师”,“char”)
ans=具有属性的类别:名称:“工程师”单值:0数据类型:“字符”LabelDefinition:[1×0 matlab.project.LabelDefinition]

了解如何使用新类别。

类别=findCategory(项目,“工程师”); 方法(类别)
matlab.project.Category类的方法:createLabel findLabel removeLabel

在新类别中定义新标签。

createLabel(类别,“鲍勃”);

获取标签定义。

ld=findLabel(类别,“鲍勃”)
ld=带属性的LabelDefinition:名称:“Bob”类别名称:“工程师”

将标签附加到检索到的文件myfile。如果在Project中选择该文件,则可以在标签编辑器窗格中看到此标签。

addLabel(我的文件,“工程师”,“鲍勃”);

获取特定标签并将数据附加到该标签上,例如,一些文本。

label=findLabel(myfile,“工程师”,“鲍勃”);标签。数据=“请评估”
label=带属性的标签:文件:“C:\workSpace\examples\airframe1\models\AnalogControl.slx”数据类型:“char”数据:“请评估”名称:“Bob”类别名称:“工程师”

可以为标签数据指定变量,例如:

mydata=label.Data
mydata='请评估'

创建具有数字数据类型的新标签类别。

创建类别(项目,“评估员”,“双人”); 类别=findCategory(项目,“评估员”);createLabel(类别,“山姆”);

将新标签附着到指定的文件,并将数据值2指定给标签。

myfile=proj.Files(14);addLabel(myfile,“评估员”,“山姆”, 2)
ans=带有属性的标签:文件:“C:\workSpace\examples\airframe1\models”数据类型:“double”数据:2名称:“Sam”类别名称:“评估员”

关闭项目

在命令行关闭项目与使用项目工具关闭项目相同。例如,项目运行关闭脚本并检查未保存的模型。

关闭(项目)

更多信息

有关使用API的更多详细信息,请输入:当前项目文件.

要自动启动和关闭任务,请参阅自动化启动任务.

另见

||||

相关话题