所在的位置: C++ >> C++发展 >> 什么是静态分析

什么是静态分析

北京白癜风医院好不好 https://jbk.39.net/yiyuanzaixian/bjzkbdfyy/jzpj/

静态分析,可以帮助我们在代码编写的阶段就能及时发现代码错误,在根上保证工程质量,是iOS开发者最长用到的一种代码调试工具。

Xcode自带有静态分析工具Analyze,功能有限,无法帮我们在代码编写阶段发现更多的问题。

功能更全、定制化高、效率高的第三方静态检查工具。OClint、Infer、Clang静态分析器

三个常用的复杂度指标

圈复杂度

是用来衡量一个模块判定结构的复杂程度,数量上表现为独立路径的条数。而独立路径就是在控制流程图中从起点到终点的一条回路。圈复杂度大说明程序代码的判断逻辑复杂。

通常用的计算公式是V(G)=e-n+,e代表控制流程图中边的数量(对应代码中顺序结构的部分),n代表控制流图中结点的数量,包括起点和终点(1、所有终点只计算一次,即使有多个turn或者throw;、结点对应代码中的分支语句)

示例参看

一般来说,圈复杂度在以4以内是低复杂度,5到7是是中复杂度,8到10是高复杂度,11以上时复杂度就非常高了,这时需要考虑重构,不然就会因为测试用例的数量过高而难以维护。

NPath复杂度

NPATH度量会计算遍历一个函数时,所有可能的执行路径的数量。它会考虑嵌套的条件语句,以及由多部分组成的布尔表达式(例如,AB,C

D,等等)。

解释:在Nejmeh的团队中,每个单独的例程都有一个取值为00的非正式的NPATH限值;超过这个限值的函数可能会进行进一步的分解,或者至少一探究竟。

NCSS对量

NCSS度量是指不包含注释的源码行数,方法和类过大会导致代码维护时阅读困难,大的NCSS值表示方法或类做的事情太多,应该拆分或重构。一般方法行数不过百,类的行数不过千。

主流的静态分析工具

OCLint

OCLint是基于ClangTooling开发的静态分析工具,主要用来发现编译器检查不到的那些潜在的关键技术问题。

这些规则已经基本覆盖了具有通用性的规则,主要包括语法上的基础规则、Cocoa库相关规则、一些约定俗成的规则、各种空语句检查、是否按新语法改写的检查、命名上长变量名短变量名检查、无用的语句变量和参数的检查。除此之外,还包括了和代码量大小是否合理相关的一些规则,比如过大的类、类里方法是否太多、参数是否过多、Block嵌套是否太深、圈复杂度的检查等。

bwtapoclint/formulaebwinstalloclint

xcode脚本

还需要安装

source~/.bash_profileunsetLLVM_TARGET_TRIPLE_SUFFIXxcodebuild-schemeproject_name-workspaceproject_name.xcworkspacecleanxcodebuild-schemeproject_name-workspaceproject_name.xcworkspaceCOMPILER_INDEX_STORE_ENABLE=NO

xcptty-rjson-


转载请注明:http://www.aierlanlan.com/tzrz/6373.html

  • 上一篇文章:
  •   
  • 下一篇文章: