主要内容

静态代码指标

静态代码指标

代码生成器执行静态分析生成的C或C ++代码并提供这些指标静态代码指标报告HTML代码生成报告的一部分。将光标放在生成的代码中的函数或变量上时,您还可以看到指标。

您可以使用报告中的信息来:

  • 查找每个文件中的文件和代码行数。

  • 估计每个函数的代码行数和堆栈使用量。

  • 比较每次更改模型或MATLAB时生成多少文件,函数,变量和代码线的差异®算法。

  • 根据全局变量的大小加上估计的堆栈大小,确定目标平台并将RAM分配给堆栈。

  • 确定可能的性能缓慢点,例如最大的全局变量或堆叠使用情况下的最昂贵的呼叫路径。

  • 查看函数的循环复杂性,这通过功能计算线性独立路径的数量。

  • 查看函数调用树。确定最长的呼叫路径以估计最坏情况执行时间。

  • 查看所选代码替换库提供的目标函数如何在生成的代码中使用。

例如,请参阅:

静态代码度量分析

生成代码的静态分析仅在源代码上执行而不执行程序。静态代码度量分析的结果包括在内静态代码指标HTML代码生成报告的一部分。如果生成来自MATLAB代码的MEX函数,则该报告不可用。

对生成的源代码文件的静态分析:

  • 使用指定的C数据类型。对于Si金宝appmulink.®模型,您可以在这些数据类型中指定硬件实现>生产硬件配置参数对话框的窗格。对于来自MATLAB代码的代码生成,您可以在其中指定它们硬件选项卡Matlab Coder™项目设置对话框或使用代码生成配置对象。由于特定于目标的编译器和平台设置,实际对象代码度量可能不同。

  • 仅当您指定它时,才包括自定义代码。对于Si金宝appmulink型号,您可以指定自定义代码代码生成>自定义代码窗格在模型配置中。对于来自MATLAB代码的代码生成,您可以在此指定调试选项卡Matlab编码器项目设置对话框或使用代码生成配置对象。如果生成的代码包括标准C运行时库中未包含的特定于平台的文件,则会生成错误报告。

  • 对于Si金宝appmulink模型,包括来自引用模型的生成的代码。

  • 使用用于估计全局和本地数据结构大小的结构的所有成员的1字节对齐。通过对其所有字段的大小进行求和来计算结构的大小。该估计表示结构的最小尺寸。

  • 计算函数的自堆栈大小,作为函数内本地数据的大小,排除输入参数。函数的累积堆栈大小是自堆栈大小加上其被称为函数的累计堆栈大小的最大值。例如,如果表示称为函数的累积堆栈尺寸表示为Accum_Size1 ... Accum_Sizen.,函数的累积堆栈大小是

    累积_stack_size = self_stack_size + max(accomm_size1,...,accum_sizen)

    例如,考虑这段生成的代码:

    现在考虑以下代码指标:

    累积的堆栈大小为12个字节,因为功能的自堆叠大小debug_b.是12个字节,4个输入参数没有贡献累计堆栈大小的计算。

  • 估计函数的堆栈大小时,静态分析停止在递归调用的第一个实例中。这功能信息表指示函数调用路径中发生递归时。代码生成仅生成递归代码,用于状态流事件广播,如果被写入递归函数,则为图形功能。

  • 计算函数的循环复杂性,作为决定的数量加上一个:

    CC =决定数+ 1
    以下构造添加了决定:

    • 如果声明

    • 否则 - 如果声明

    • 切换语句(每次1个决定案件分支)

    • 循环陈述:虽然,但是做的

    笔记

    上述构造中的布尔运算符不会增加额外的决策。

  • 不包括ert_main.c.,因为您可以选择提供自己的选择main.c

查看生成的代码中的静态代码度量和定义

代码生成报告

查看代码生成报告中的代码,以访问代码指标和定义:

  • 在这一点代码生成>报告窗格,如果选择静态代码指标复选框,您可以将光标放在Code窗口中的全局变量和函数,以查看代码指标信息。

  • 在代码窗口中,如果单击链接的变量或函数,则打开“代码检查”窗口。窗口提供了与变量或函数的定义的链接。在这一点代码生成>报告窗格,如果你选择了静态代码指标复选框,您还可以查看变量或函数的代码指标信息。

代码视图

在代码透视图的代码视图中查看代码时,将光标放在全局变量上方的省略号菜单上,并函数查看代码指标信息。

工具提示提供了一个链接到变量或函数的定义。

静态代码度量报告限制

如果模型的目标配置导致生成的代码,则静态代码度量不可用:

  • 包括未由模型层次结构生成的标题文件,而不是系统标题文件

  • 使用未识别的宏