主要内容

静态代码度量

静态代码度量

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

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

  • 找到的文件,在每个文件的代码行。

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

  • 比较方面的差异有多少文件、函数、变量和生成的代码行每次你改变模型或MATLAB®算法。

  • 确定一个目标平台和分配的内存堆栈,基于全局变量的大小再加上估计堆栈的大小。

  • 确定可能的性能慢点,如最大的全局变量或最昂贵的调用路径的堆栈使用。

  • 视图的圈复杂度函数,计算通过一个函数线性独立路径的数量。

  • 视图函数调用树。确定最长的调用路径估计最坏情况下的执行时间。

  • 提供的视图如何目标函数,选择的代码替换库,用于生成的代码。

有关示例,请参见:

静态代码度量分析

执行静态分析生成的代码只有在没有执行程序的源代码。静态代码度量分析的结果中包括静态代码度量部分的HTML代码生成报告。报告没有如果你生成一个墨西哥人从MATLAB代码功能。

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

  • 使用指定的C数据类型。对于仿真金宝app软件®模型,指定这些数据类型硬件实现>生产硬件面板的配置参数对话框。从MATLAB代码生成的代码,您指定的硬件选项卡的MATLAB编码器™项目设置”对话框中或使用代码生成配置对象。实际对象代码度量可能由于有针对性的编译器和不同平台的设置。

  • 包括自定义代码只有在你指定它。对于仿真金宝app软件模型,您指定的自定义代码代码生成>自定义代码面板模型中配置。从MATLAB代码生成的代码,您指定的调试选项卡的MATLAB编码器项目设置”对话框中或使用代码生成配置对象。生成一个错误报告如果生成的代码包含特定于平台的文件不包含在标准的C运行时库。

  • 对于仿真金宝app软件模型,包括从参考模型生成的代码。

  • 使用字节对齐的所有成员结构估算全球和本地数据结构尺寸。大小的结构计算加法的所有字段的大小。这个估计代表尽可能最小的结构尺寸。

  • 计算函数的自我栈大小作为本地数据的大小在一个函数,不包括输入参数。累积函数的堆栈大小是自我积累栈的栈大小+最大尺寸的函数。例如,如果积累栈大小被调用的函数表示为accum_size1…accum_sizeN,那么累积函数的堆栈大小

    accumulated_stack_size = self_stack_size + max (accum_sizeN accum_size1…)

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

    Debug_b生成函数声明的函数。

    现在考虑下面所示的代码度量:

    代码度量表显示函数的堆栈大小。

    自我积累的堆栈大小为12字节,因为函数的堆栈大小Debug_b12字节,4输入参数不会导致累积的计算堆栈大小。

  • 当评估一个函数的堆栈大小,静态分析递归调用的停在第一个实例。的函数信息表显示当递归函数调用发生在一个路径。代码生成只生成递归代码Stateflow事件广播和图形函数写成一个递归函数。

  • 计算函数的圈复杂度决定数量+ 1:

    CC + 1 =数量的决定
    以下结构添加一个决定:

    • If语句

    • else if语句

    • Switch语句(1为每一个决定情况下分支机构)

    • 循环语句:虽然,延伸

    请注意

    布尔操作符前构造不添加额外的决定。

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

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

当你在代码视图或视图代码代码生成报告,将您的鼠标停留在全局变量和函数查看代码度量信息。

生成的代码显示光标悬停rtDwork变量和框代码定义和代码度量的细节。

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

生成的代码显示突出rtDwork变量的声明。

静态代码度量报告的局限性

静态代码度量没有如果目标配置为生成的代码模型的结果:

  • 包含一个头文件,不是生成的模型层次结构和不是一个系统头文件

  • 使用一个宏,它并不认可