主要内容

使用脚本自动化项目任务

这个例子展示了如何使用API自动化项目的任务操作文件,包括处理修改文件、依赖、快捷键和标签。

得到项目在命令行

打开机身项目和使用currentProject项目对象在命令行操作项目。

项目= sldemo_slproject_airframe
建筑“MinGW64编译器(C)”。墨西哥人成功完成。项目=项目属性:名称:“机体”SourceControlIntegration:“Git”RepositoryLocation:“C: \ workSpace \ \库\ airframe3例子“SourceControlMessages:只读的(“分支状态:正常”…):0最高级的:1依赖性:[1×1有向图]类别:[1×1 matlab.project。类别]文件:[1×32 matlab.project。ProjectFile]捷径:[1×7 matlab.project。快捷方式]ProjectPath: [1×7 matlab.project。matlab.project PathFolder] ProjectReferences: [1×0。ProjectReference] StartupFiles:[1×0的字符串]ShutdownFiles:[1×0的字符串]DefinitionFilesType: FixedPathMultiFile描述:“这是一个示例项目。↵↵使用“项目快捷键”将来发布标签查找的方式开始使用这个项目。”RootFolder: "C:\workSpace\examples\airframe3" SimulinkCodeGenFolder: "C:\workSpace\examples\airframe3\work\codegen" ProjectStartupFolder: "C:\workSpace\examples\airframe3" SimulinkCacheFolder: "C:\workSpace\examples\airframe3\work\cache"

发现项目的命令

找出你可以与你的项目有关。

方法(项目)
matlab.project方法类。项目:addFile listImpactedFiles addFolderIncludingChildFiles listModifiedFiles目录listRequiredFiles addReference refreshSourceControl addShortcut重载addShutdownFile removeCategory addStartupFile removeFile addprop removePath密切removeReference createCategory removeShortcut出口removeShutdownFile findCategory removeStartupFile findFile runChecks isLoaded updateDependencies listAllProjectReferences叫“方法(处理)”matlab.project的方法。项目继承处理。

检查项目文件

获得一个项目对象后,您可以检查等项目属性文件。

文件= proj.Files
文件= 1×32 ProjectFile数组属性:路径修正SourceControlStatus标签

在这个列表中使用索引访问文件。下面的命令文件10号。每个文件都有描述它的路径和附加标签属性。

proj.Files (10)
ans = ProjectFile属性:路径:“C: \ workSpace \ \ airframe3 \ data \控制器实例。sldd”标签:[1×1 matlab.project。标签修改:“27 b6d5ec735ea103997d4cf6fc7abe625665678b”SourceControlStatus:修改的

检查10号文件的标签。

proj.Files .Labels (10)
ans =标签的属性:文件:C: \ workSpace \ \ airframe3 \ data \控制器实例。sldd”数据类型:“没有一个”数据:[]的名字:“设计”CategoryName:“分类”

得到一个特定文件的名字。

myfile = findFile(项目,“模型/ AnalogControl.slx”)
myfile = ProjectFile属性:路径:“C: \ workSpace \ \ airframe3 \ \ AnalogControl模型实例。基金”的标签:[1×1 matlab.project。标签修改:“27 b6d5ec735ea103997d4cf6fc7abe625665678b”SourceControlStatus:修改的

找出你可以做文件。

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

把修改的文件

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

open_system (“AnalogControl”)add_block (“内置/子系统”,“AnalogControl /测试”)save_system (“AnalogControl”)

在项目的所有修改的文件。观察两个修改文件。在项目与修改的文件视图,你可以看到一个修改模型文件,和相应的项目定义文件。

modifiedfiles = listModifiedFiles(项目)
modifiedfiles = 1×2 ProjectFile数组属性:路径修正SourceControlStatus标签

第二个修改文件。观察到的文件SourceControlStatus属性修改。同样的,listModifiedFiles返回任何添加的文件,矛盾,删除,等等,出现在项目视图中修改后的文件。

modifiedfiles (2)
ans = ProjectFile属性:路径:“C: \ workSpace \ \ airframe3 \例子项目资源\ \ uuid - 08 - e31a06 - 2 - b0a - 43 - a0 - 8031 deb3ab31ef15。xml”修订:“SourceControlStatus:补充道

查询单个文件之前刷新源代码控制状态。你在使用之前不需要做listModifiedFiles

refreshSourceControl(项目)

得到所有的项目文件与一个特定的源控制地位。例如,文件未修改的

proj.Files (ismember ([proj.Files。SourceControlStatus], matlab.sourcecontrol.Status.Unmodified))
ans = 1×23 ProjectFile数组属性:路径修正SourceControlStatus标签

得到文件的依赖关系

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

updateDependencies(项目)

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

g = proj.Dependencies
g =有向图的属性:边缘:[21×1表]节点:[21×1表)

得到一个模型所需的文件。

requiredFiles = bfsearch (g (“AnalogControl”))
requiredFiles = 3×1单元阵列{' C: \ workSpace \ \ airframe3 \ \ AnalogControl模型实例。基金的}{“C: \ workSpace \ \ airframe3 \ data \控制器实例。sldd’} {“C: \ workSpace \ \ airframe3例子\ data \公交车。sldd '}

得到顶层文件的所有类型图。

g.Nodes.Name(入度(g) = = 0);

得到顶层文件的依赖关系。

g.Nodes.Name(入度(g) = = 0 &出度(g) > 0)
ans = 4×1单元阵列{' C: \ workSpace \ \ airframe3 \ \ DigitalControl模型实例。基金的}{“C: \ workSpace \ \ airframe3 \ \ LinearActuator模型实例。基金的}{“C: \ workSpace \ \ airframe3 \ \ slproject_f14模型实例。基金的}{'C:\workSpace\examples\airframe3\tests\f14_airframe_test.m'}

找到影响(或“上游”)文件通过创建一个转置图。

转置= flipedge (g)影响= bfsearch(转置,(“vertical_channel”))
转置=有向图的属性:边缘:[21×1表]节点:[21×1表)影响= 4×1单元阵列{' C: \ workSpace \ \ airframe3 \ \ vertical_channel模型实例。基金的}{“C: \ workSpace \ \ airframe3 \ \ f14_airframe模型实例。基金的}{'C:\workSpace\examples\airframe3\models\slproject_f14.slx' } {'C:\workSpace\examples\airframe3\tests\f14_airframe_test.m' }

找到文件影响数据字典。

impacted2 = bfsearch(转置,(“buses.sldd”))
impacted2 = 11×1单元阵列{' C: \ workSpace \ \ airframe3 \ \数据例子的公交车。sldd’} {“C: \ workSpace \ \ airframe3 \ data \控制器实例。sldd '}{'C:\workSpace\examples\airframe3\data\system_model.sldd' } {'C:\workSpace\examples\airframe3\tests\f14_airframe_test.m' } {'C:\workSpace\examples\airframe3\models\AnalogControl.slx' } {'C:\workSpace\examples\airframe3\models\DigitalControl.slx' } {'C:\workSpace\examples\airframe3\models\LinearActuator.slx' } {'C:\workSpace\examples\airframe3\models\NonLinearActuator.slx'} {'C:\workSpace\examples\airframe3\models\f14_airframe.slx' } {'C:\workSpace\examples\airframe3\models\slproject_f14.slx' } {'C:\workSpace\examples\airframe3\models\vertical_channel.slx' }

了解你的文件,如依赖性和孤儿的数量。

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

如果你想改变一个模型层次结构,从下到上,发现拓扑秩序。

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

查询快捷键

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

快捷键= proj.Shortcuts
快捷键= 1×7快捷键数组属性:名称组文件

检查数组中的一个快捷方式。

快捷键(7)
ans =快捷方式的属性:名称:“重建项目S-functions”组:“效用”文件:C: \ workSpace \”的例子\ airframe3 \工具\ rebuild_s_functions.m”

得到一个快捷方式的文件路径。

快捷键(7).File
ans = " C: \ workSpace \ \ airframe3例子\工具\ rebuild_s_functions.m”

检查单元阵列中的所有文件的快捷方式。

{shortcuts.File}’
ans = 7×1单元阵列{[" C: \ workSpace \ \ airframe3 \ custom_tasks \ analyzeModelFiles例子。m”]} {[" C: \ workSpace \ \ airframe3 \ custom_tasks \ billOfMaterials例子。m”)}{["C:\workSpace\examples\airframe3\custom_tasks\checkCodeProblems.m"]} {["C:\workSpace\examples\airframe3\custom_tasks\runUnitTest.m" ]} {["C:\workSpace\examples\airframe3\models\slproject_f14.slx" ]} {["C:\workSpace\examples\airframe3\reports\slproject_f14.pdf" ]} {["C:\workSpace\examples\airframe3\utilities\rebuild_s_functions.m" ]}

标签文件

创建一个新的类别的标签,char类型。在项目中,新工程师类别出现在标签窗格。

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

找出你可以做新的类别。

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

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

createLabel(类别,“鲍勃”);

得到一个标签定义。

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

将一个标签附加到检索文件,myfile。如果你选择的文件的项目,你可以看到这个标签的标签编辑器窗格中。

addLabel (myfile“工程师”,“鲍勃”);

获得一个特定的标签和附加数据,例如,一些文本。

标签= findLabel (myfile,“工程师”,“鲍勃”);标签。Data =“请评估”
标签=标签属性:文件:C: \ workSpace \ \ airframe3 \ \ AnalogControl模型实例。基金”数据类型:字符的数据:“请评估”的名字:“鲍勃”CategoryName:“工程师”

您可以指定一个变量标签数据,例如:

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

类别与数值数据类型创建一个新的标签。

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

新标签附加到指定文件并分配数据值2的标签。

myfile = proj.Files (14);addLabel (myfile“评估”,“山姆”,2)
ans =标签的属性:文件:C: \ workSpace \ \ airframe3 \ lib \ timesthree例子。薄层色谱”数据类型:“双”数据:2名:“山姆”CategoryName:“陪审员”

关闭项目

关闭该项目在命令行一样关闭项目使用项目的工具。例如,项目关闭脚本运行广告检查未保存的模型。

关上(项目)

更多的信息

使用API的更多细节,输入:医生currentProject

自动启动和关闭任务,明白了自动化启动任务

另请参阅

||||

相关的话题