您可以将有关代码生成的信息导出到基础MATLAB中的一个变量中®工作区。此变量包含coder.reportinfo.
其属性包含此信息的对象:
代码生成摘要,其中包括有关代码生成成功、日期和时间、输出文件的路径、处理器、版本等信息Matlab Coder™,工具箱许可证在代码生成,工具链和构建配置期间签出。
代码生成配置对象。
输入文件的文本、路径和扩展名。
生成文件的文本,路径和扩展。
对于代码生成中涉及的所有MATLAB函数和方法:名称,专业化,文件,启动索引和结束索引。
代码生成错误、警告和信息消息。
代码洞察指出生成代码的潜在问题。
在代码生成期间生成的构建日志。
可以使用报告信息对象以编程方式访问有关代码生成的信息。例如,您可以在MATLAB命令行中显示代码生成消息。要执行此操作,请在构建脚本中访问包含这些消息的属性。
假设您希望将代码生成报告信息导出到该变量信息
在您的基础MATLAB工作区中。执行以下操作之一:
在Matlab编码器应用程序,调试选项卡,设置将报告信息导出到变量到变量名信息
。
在命令行中,使用Codegen.
命令-Reportinfo.
选择。后指定变量名-Reportinfo.
选择。
Codegen.myfunction.-Reportinfo.信息
在命令行,设置代码配置对象属性ReportInfoVarName
对角色矢量“信息”
。
生成并打开代码生成报告。点击出口报告信息。在对话框中指定变量名信息
。
为成功的代码生成过程创建报告信息对象。检查这个对象的属性。
定义MATLAB函数喷火
:
函数B = foo(a) c = svd(a,0);b =和(c);结束
生成MEX功能喷火
。指定输入一种
作为一个一维有上界的变大小矩阵3.
第二维有一个上界5.
。将代码生成报告信息导出到变量信息
在您的基础MATLAB工作区中。
Codegen.-config:mex.喷火- args.{coder.typeof(的(1,1),[3 - 5],[1])}-Reportinfo.信息
代码生成器生成MEX函数foo_mex
。代码生成器还创建报告信息对象信息
在MATLAB的基础工作空间。
检查报告信息对象的结构。该对象具有八个属性,包含有关代码生成的信息。
摘要:[1×1编码器。配置:[1×1编码器。MexCodeConfig] InputFiles: [1×1 coder.CodeFile] GeneratedFiles: [21×1 coder.CodeFile] Functions: [1×1 coder.Function] Messages: [0×1 coder.Message] CodeInsights: [1×1 coder.Message] BuildLogs: [1×1 coder.BuildLog]
检查每个财产信息
分别地。
info.summary.
是一个编码器。总结
其属性包含有关代码生成成功信息的信息,代码生成日期和时间,输出文件的路径,处理器,工具箱许可证在代码生成期间签出,以及版本Matlab编码器。
Summary with properties: Success: true Date: '08-May-2020 09:15:07' OutputFile: 'C:\coder\R2020b\License discovery\foo_mex。版本:'MATLAB Coder 5.1 (R2020b)' ToolboxLicenses: [1×0 string]
如果生成独立代码,info.summary.
还包含关于工具链和构建配置的信息。
信息。配置
是代码配置对象。在本例中,因为您为喷火
,它是一个编码器。MexCodeConfig
对象。
信息。InputFiles
是一个数组编码器
对象。数组的每个元素包含代码生成输入文件的文本、路径和扩展名。在本例中,数组只有一个元素,因为只有一个输入文件Foo.m.
。
` function b = foo(a)←↵b = svd(a,0);←↵end←↵' Path: 'C:\coder\R2019a\Report Info Object\foo. html \m”扩展:“打烊”
info.generatedFiles.
是一个数组编码器
对象。数组的每个元素包含生成文件的文本、路径和扩展名。在本例中,它是21.
——- - - - - -1
阵列因为有25.
生成的文件。
21×1带有属性的代码文件数组:文本路径扩展名
info.function.
是一个数组编码器。函数
对象。数组的每个元素包含以下MATLAB函数或方法的信息:
名称和专业化。
这编码器
对象,用于包含函数或方法的输入文件。该对象也包含在信息。InputFiles
。
文件文本中函数或方法的开始和结束索引。
在这个例子中,info.function.
有一个元素,因为在输入文件中只有一个MATLAB函数Foo.m.
。
函数与属性:名称:'foo'专用:0文件:[1×1码码.Codefile] StartIndex:1 EndIndex:52
信息。消息
是一个数组编码器。消息
对象,其中包含代码生成错误、警告和信息消息。在本例中,没有此类消息。这个属性是一个空数组。
0×1带有属性的消息数组:标识符类型文本文件StartIndex结束索引
信息。CodeInsights
是一个数组编码器。消息
对象,包含代码洞察。这些见解是关于生成代码中潜在问题的消息,例如与MATLAB代码的潜在差异和潜在的主要行数组布局问题。这些消息也会出现在代码生成报告中代码的见解选项卡。数组的每个元素包含以下关于一个代码洞察的信息:
标识符和消息的类型。
信息的文本。
消息所属的类别和子类别。
这编码器。文件
或编码器
对象,用于生成消息的输入文件。
生成消息的文件文本部分的开始和结束索引。
在这个例子中,有一个代码洞察。
在生成的代码中,要操作的维度是自动选择的,可能与MATLAB不同。考虑将工作尺寸明确指定为一个常值。Category: 'PotentialDifferencesFromMATLAB'文件:[1×1编码器。StartIndex: 41 EndIndex: 46
要索引到文件的文本中,请使用startIndex.
和EndIndex
属性。
info.CodeInsights.File.Text (41:46)
'总和(c)'
info.buildlogs.
是一个数组编码器。BuildLog
对象,其中包含在代码生成期间生成的构建日志。构建日志包含编译和链接错误和警告。同样的构建日志也出现在代码生成报告中建立日志选项卡。阵列的每个元素都包含一个构建日志的类型和文本。在此示例中,有一个版本的类型'目标'
。
为签出工具箱许可的代码生成过程创建报告信息对象。检查这个对象的属性。
定义MATLAB函数酒吧
调用函数IQR.
(统计和机器学习工具箱)和鸡尾酒疗法
(小波工具箱)。
函数[u,v,w] = bar(x)%#codegen.u =差(x);[v, w] = haart (x);结束
生成C源代码酒吧
。将输入参数的类型指定为1
——- - - - - -One hundred.
双打的行矢量。将代码生成报告信息导出到变量信息
在您的基础MATLAB工作区中。
Codegen.- c酒吧- args.{0 (1100)}-Reportinfo.信息
代码生成成功。检查info.Summary.ToolboxLicenses
财产。
1×2 string array "statistics_toolbox" " wavet_toolbox "
该属性表明统计和机器学习工具箱™和小波工具箱™许可在代码生成期间被检出。
笔记
如果生成MEX代码,请在加载MEX函数时再次选中这些许可证。
如果生成静态库或动态链接库,则工具箱许可仅在代码生成期间被签出。代码生成器不会将许可签出写入生成的独立代码中。
为失败的代码生成过程创建报告信息对象。检查这个对象的属性。
定义MATLAB函数喷火
:
函数B = foo(a) B = svd(a,0);结束
生成MEX功能喷火
。指定输入一种
作为字符串标量。将代码生成报告信息导出到变量信息
在您的基础MATLAB工作区中。
Codegen.-config:mex.喷火- args.{“字符串标量”}-Reportinfo.信息
代码生成失败,因为字符串标量不是MATLAB函数的有效输入SVD.
。代码生成器创建报告信息对象信息
在MATLAB的基础工作空间。
检查info.summary.
和信息。消息
属性。
info.summary.
表示代码生成失败。
成功:false Date: '08-May-2020 10:20:35' OutputFile: 'C:\coder\R2020b\License discovery\codegen\mex\foo' Processor: 'Generic->MATLAB Host Computer' Version: 'MATLAB coder 5.1 (R2020b)' ToolboxLicenses: [1×0 string]
信息。消息
是一个数组编码器。消息
对象,其中包含代码生成错误、警告和信息消息。数组的每个元素包含以下关于一条消息的信息:
标识符和消息的类型。
信息的文本。
这编码器
对导致该消息的输入文件的对象。
导致消息的文件文本的一部分的开始和结束索引。
在此示例中,有两个错误消息。所以,信息。消息
是一个2
——- - - - - -1
数组中。
2×1消息数组,具有属性:标识符类型文本文件startIndex endIndex
查看数组的第一个元素info.Messages (1)
。
具有属性的消息:标识符:“编码器:工具箱:UnsupportedClass”类型:'错误'文本:'函数'sv万博1manbetxd'未定义类“字符串”的值。文件:[1×1码码.Codefile] StartIndex:26 EndIndex:33
startIndex.
和EndIndex
属性,以便索引到文件的文本中。info.messages(1).file.text(26:33)
“圣言(0)'
若要手动检查输入文件的文本,则对应的行号和列号startIndex.
和EndIndex
值是有用的。使用getLineColumn
获取此信息的功能。此函数返回两个结构,该结构包含与相对应的行和列号startIndex.
和EndIndex
分别。
在上面的例子中,手工检查的部分Foo.m.
导致第一个错误消息,显示文件的文本。
info.Messages (1) .File.Text
文件文本显示如下:
'功能b = foo(a)b = svd(a,0);结尾 '
访问导致第一个错误消息的文本部分的行号和列号。
[startLoc, endLoc] = getLineColumn (info.messages (1))
输出是:
startLoc = struct with fields: Line: 2 Column: 5 endLoc = struct with fields: Line: 2 Column: 12
这些位置对应于函数调用的开始和结束“圣言(0)'
在文本中Foo.m.
。
假设您创建了报表信息对象信息
在MATLAB会话中,然后在另一个MATLAB会话中使用它。如果信息。配置
是独立代码生成的配置对象(编码器。CodeConfig
或Coder.embeddedCodeConfig
),可能会发生以下行为:
如果第二节的MATLAB主机没有在硬件板中指定info.config.hardware.
属性安装在上面,配置参数info.config.hardware.
恢复其默认值。默认值是[]
。
如果第二次会话的MATLAB主机没有指定的工具链info.Config.Toolchain
属性安装在上面,配置参数info.Config.Toolchain
恢复其默认值。默认值是'自动找到安装的工具链'
。
编码器。BuildLog属性|编码器Properties|编码器.File属性|编码器。功能|编码器。消息属性|编码器。方法属性|coder.reportinfo.Properties|编码器。摘要属性|getLineColumn