使用代码跟踪验证生成的代码
代码跟踪(可跟踪性)使用超链接在生成的代码行和模型中相应的元素之间导航。要找到代码行及其对应的元素,您还可以右键单击模型中的一个或多个元素。双向导航是双向可追溯性。
使用代码跟踪,你可以:
验证生成的代码是否如您所期望的那样。您可以确定哪些模型元素对应于一行代码。您可以跟踪来自已审阅或未审阅的不同元素的代码。
验证生成的代码是否满足设计需求。您可以将需求链接到模型元素,并使用代码跟踪来验证为模型元素生成的代码是否满足分配的需求。
当您从Simulink生成代码时金宝app®模型,跟踪信息嵌入到生成的代码中,除非明确未指定。可追溯性信息包括用于在生成的源代码和模型之间进行跟踪的链接。你可以通过以下方式查看生成的代码:
生成的代码包括支持代码跟踪的资源:金宝app
代码元素超链接(当您将光标放在代码上时,用下划线表示)用于跟踪生成代码中的变量或类型到它们在头文件中的声明或定义。
代码注释中的标记,用于标识生成代码行的模型中的元素。
行号超链接,链接到生成代码行的模型组件。
可追踪的元素
Simulink块和这些statflow支持双向跟踪金宝app金宝app®元素:
州
转换
状态转换表
MATLAB函数。从MATLAB函数调用的外部代码不支持可金宝app跟踪性。
真值表块
图形化功能
金宝app仿真软件的功能
这些statflow元素支持单向跟踪:金宝app
事件(code-to-model)
代码到模型的可跟踪性适用于显式事件,但不适用于隐式事件。控件中的显式事件的超链接,单击该超链接将突出显示该项目内容窗格的模型资源管理器。
连接(模型到代码)
模型到代码的可追溯性适用于具有至少一个传出转换的连接。在Stateflow Editor中右键单击这样的连接,突出显示与该连接的第一个传出转换相对应的代码行。
有关更多信息,请参见<一个href="//www.tatmou.com/nl/nl/help/ecoder/ug/trace-stateflow-elements-in-generated-code.html" class="a">在生成的代码中跟踪状态流元素一个>.
MATLAB函数您直接插入到Simulink模型中的块也是可跟踪的。金宝app有关更多信息,请参见<一个href="//www.tatmou.com/nl/nl/help/ecoder/ug/using-traceability-in-matlab-function-blocks.html" class="a">在MATLAB函数块中使用可追溯性一个>.
生成代码中的可追溯性
代码视图
打开模型<一个href="//www.tatmou.com/nl/help/ecoder/ug/matlab:rtwdemo_comments" target="_blank">
rtwdemo_comments
.打开嵌入式编码器®构建模型。在C代码选项卡上,单击构建.
HTML代码生成报告默认打开。若要使用报表,请参见<一个href="//www.tatmou.com/nl/nl/help/ecoder/ug/verify-generated-code-by-using-code-tracing.html" class="intrnllnk">代码生成报告一个>.
在code透视图的code视图中查看生成的代码。
使用Code视图顶部的下拉列表在生成的源文件之间切换。
源代码包含可追溯性信息,如超链接注释、行号、变量和操作符。将光标放在注释或行号超链接上或单击。Simu金宝applink Editor突出显示模型中相应的块或块。
要突出显示模型中某个块的生成代码,请选择该块。为块生成的代码在code视图中高亮显示。
要打开引用模型的生成代码,请打开引用模型并在code视图中查看生成的代码。
代码生成报告
打开模型<一个href="//www.tatmou.com/nl/help/ecoder/ug/matlab:rtwdemo_comments" target="_blank">
rtwdemo_comments
.打开嵌入式编码器应用程序C代码选项卡上,单击设置打开“配置参数”对话框。选择<一个href="//www.tatmou.com/nl/nl/help/rtw/ref/create-code-generation-report.html" class="a">创建代码生成报告如果尚未选中。默认情况下,<一个href="//www.tatmou.com/nl/nl/help/rtw/ref/open-report-automatically.html" class="a">自动打开报表,<一个href="//www.tatmou.com/nl/nl/help/ecoder/ref/code-to-model.html" class="a">Code-to-model,<一个href="//www.tatmou.com/nl/nl/help/ecoder/ref/model-to-code.html" class="a">模型到代码的被选中。
如果您的模型包含引用模型,并且您希望为引用模型的代码生成报告启用可追溯性,那么对于每个引用模型重复前面的步骤。
构建模型。在C代码选项卡上,单击构建.构建过程在MATLAB web浏览器中打开代码生成报告。
在左侧导航窗格中,选择一个源代码文件。右边窗格中的源代码和行号包含到模型中块的超链接。
单击注释或行号超链接。Simu金宝applink Editor显示并突出显示模型中相应的块或块。
要突出显示模型中块的生成代码,右键单击块并选择C / c++代码>导航到C/ c++代码.然后在HTML代码生成报告中突出显示为块生成的代码。要为所选的多个块突出显示生成的代码,请按住转变键,选择多个块,然后右键单击任意一个块进行选择C / c++代码>导航到C/ c++代码.然后在HTML代码生成报告中突出显示为块生成的代码。
如果在您的模型中有一个引用模型,在左侧导航窗格中参考模型,按连结至参考模型。引用模型的代码生成报告现在显示在MATLAB web浏览器中。
在左侧导航窗格中,可以单击回来按钮返回到以前的代码生成报告。
可追溯性标记
可追溯性标记出现在生成代码的相应行上方的注释中。标签格式为<
.系统
>/block_name
是下列之一:系统
文本
根
由Simulink引擎分配的唯一系统号金宝app
源块的名称。block_name
代码生成器在生成的头文件的注释部分记录模型的标记
.例如,这个注释出现在一个模型的头文件中,模型
.h喷火
,它有一个子系统外
还有一个嵌套的子系统内心的
:
这里是这个模型的系统层次结构。* *: foo * : foo/Outer * : foo/Outer/Inner */
这段代码在生成的代码行上方显示了一个标记注释。源模型根级别的增益块生成以下代码:
/*增益:'<根>/UnDeadGain1' */ rtb_UnDeadGain1_h = dead_gain_U。In1 * dead_gain_P.UnDeadGain1_Gain;
这段代码在生成的代码行上方显示了一个标记注释。在源模型根级别以下一级的子系统中的增益块生成以下代码:
/*增益:'/增益' */ dead_gain_B。temp0 *= (dead_gain_P.s1_Gain_Gain);
运营商可追溯性
生成的代码提供了生成代码中的操作符与Simulink块、statflow元素或MATLAB函数块之间的可追溯性。金宝app
要使用操作符可追溯性来验证生成的代码,在生成的代码中,单击操作符超链接以突出显示模型中的源块。
支持这些操作符。金宝app
符类型 | 运营商 |
---|---|
算术 | + ,- ,* ,/ ,% |
+ = ,- = ,* = ,/ = ,%= |
|
++ ,-- (前缀及后缀) |
|
逻辑 | ! ,& & ,|| |
关系 | = = ,! = ,< ,> ,< = ,>= |
位 | ~ ,| ,^ ,& ,>> ,<< |
& = ,^ = ,| = ,< < = ,> > = |
|
有条件的 | 吗? |
不支持这些操作符。金宝app
符类型 | 操作符的例子 |
---|---|
赋值运算符 | = |
和指针操作符的成员 | 数组下标:一个[b] |
和指针解引用的地址:和 ,*一个 |
|
成员:a.b ,a - b > |
|
其他运营商 | 函数调用中的括号:foo (a, b) |
逗号:一个 ,b |
|
范围解析:b:: |
|
演员:类型(一) |
|
新 ,新[] |
|
删除 ,删除[] |
可追溯性的限制
这些限制适用于由Embedded Coder软件生成的报告:
在以下条件下,如果块名称包含,则模型到代码的可追溯性将被禁用:
单引号(
”
).星号(
*
),这会导致相对于模型中的其他名称产生名称混乱的歧义。如果在块名中或在块名的末尾,斜杠前面或后面有星号(/
).这个角色
y
(char (255)
).
如果块名称包含换行符(
\ n
),为块路径超链接生成的代码注释将换行符替换为空格以方便阅读。您不能跟踪表示这些类型的子系统的块到生成的代码:
虚拟子系统
戴面具的子系统
由于优化,非虚拟子系统的代码已经被删除
如果您不能在子系统级别上跟踪子系统,那么您可以跟踪子系统中的各个块。
如果您在不同于用于生成代码的平台上打开一个模型,那么您就不能使用模型到代码和代码到模型的可追溯性。
中生成的文件不可用内联跟踪性
shared_utils
文件夹中。