美文网首页
代码静态分析

代码静态分析

作者: helinyu | 来源:发表于2021-08-09 17:57 被阅读0次

什么是代码静态分析?
在不运行应用程序的情况下, 对然阿金的源代码的定义、结构和行为进行分析, 由此, 找出程序中的不规范、不合理的或者可能造成程序运行异常的代码。

最为简单的是:“人工代码走查”, 但是工作量巨大, —— 自动化的代码金泰分析技术。


代码静态分析到底可以为我们的软件解决什么问题呢?

  1. 编码规范检查: 基于公司自定义的统一编码规范.
    检查代码中不合规范的写法, 以保证代码的统一风格, 尽早羽凡软件质量风险的各种不合理代码代码的出现。
    编码规则 —— 规范编码格式、命名规范、内存和资源管理、宏定义、危险代码等。。。
  2. 代码质量缺陷检测: 检查隐藏的会导致运行时异常或者安全性的代码缺陷, eg: 空指针, 越界、除零、死锁、安全漏洞等。
    软件质量检查: 要求对代码进行更深度的解析和扫描, 以定位真正的代码缺陷, 除了找出问题点, 还需要定位相关的代码逻辑路径。
  3. 代码度量分析: 针对软件代码的各项度量指标的代码静态分析。 [eg: 复杂度、嵌套深度、分支结构等] ;代码度量检查的思路与“二八原则”不谋而合,因为少数的最复杂的代码中隐藏或导致了大部分的bug。
  4. 人工代码评审: 对代码的算法、逻辑的实现合理与否的检查。 【review】

QR : 为什么要做代码静态分析?
更早、更彻底地检查或羽凡代码错误,减少后期测试的bug,最终降低项目成本并提高软件可靠性。 可靠性、可读性、可维护性和可移植性

到底应该引入哪些编码代码规则难以抉择,太多、太少都有问题。
软件缺陷检测的误报率太高,是否存在漏报?
编码规则重要还是缺陷检测重要,如何取舍?
如何保证代码静态分析的结果能被及时修复?
历史遗留代码中的海量检测结果如何处理?
如何最大程度实现代码静态分析的自动化?
开源工具和商业工具有什么区别?

看看iOS上我们的项目应该怎么做代码的静态分析

1、 首先是选择工具
(1)
Xcode Analyze (xcode 自带)

主要检查:
1、逻辑错误:访问空指针或未初始化的变量等;
2、内存管理错误:如内存泄漏等;
3、声明错误:从未使用过的变量;
4、Api调用错误:未包含使用的库和框架。

xcode Analyzer 分析常见的错误:

  1. Localizability Issue 本地化问题
  2. core/foundation/OC 就是可能没有调用一些父类的方法
  3. logic error 一些用法上的问题
  4. Memory error 可能会有一些内存问题,常见的是cell返回nil
  5. Memory (Core Foundation/Objective-C) 很坑是一些C语言上面,没有释放
  6. Dead store 常常看到的是没有阅读的

oclint 规范可以看看

createARGBBitmapContextFromImage 这个方法,我在外面释放掉了,为什么还会显示可能的内存泄漏? 这种情况判断不了? 项目里面的这种情况判断不了。 这个还需要进一步去处理这个内容。

修改之后的

优先修改、 core fundation , memory , memory error
延后修改

(2) 第三方使用比较多的工具
fbinfer
infer_cn
facebook 的静态分析工具, 分析OC、Java或者C代码,报告潜在的问题。

将那些严重的 bug 扼杀在发布之前,同时防止应用崩溃和性能低下。

命令:

xcodebuild -workspace xndm_proj.xcworkspace -scheme xndm_proj -sdk iphoneos14.5 | tee xcodebuild.log | xcpretty -r json-compilation-database -o compile_commands.json

infer run --keep-going --skip-analysis-in-path Pods --compilation-database-escaped compile_commands.json

执行第二条命令的时候有问题

!!!!!infer 运行起来太久都没有停止,消耗的磁盘过大, 所以,暂时先不管

简单例子:

命令参考链接
infer 官网
可参考的网址

https://www.jianshu.com/p/9f0a19388de6 applescript 的使用

有关的代码工具

相关文章

  • C/C++怎么做好代码静态分析

    代码静态分析 代码静态分析是指在不运行代码的情况下根据代码的静态信息,对代码的各个维度进行分析。 代码静态分析一般...

  • 静态代码分析工具对比

    静态代码分析工具 一、 什么是静态代码分析工具 二、 Findbugs 三、 Checkstyle 四、 Pmd ...

  • 静态代码分析(Static Code Analysis)

    静态代码分析简介 程序静态分析(Static Code Analysis)是指在不运行代码的方式下,通过词法分析、...

  • Android 静态代码分析工具

    Android 静态代码分析工具 静态代码分析是指无需运行被测代码,仅通过分析或检查源程序的语法、结构、过程、接口...

  • 静态代码分析

    程序静态分析 通过词法分析、语法分析、控制流、数据流分析等技术对程序代码进行扫描,验证代码是否满足规范性、安全性、...

  • 代码静态分析

    什么是代码静态分析?在不运行应用程序的情况下, 对然阿金的源代码的定义、结构和行为进行分析, 由此, 找出程序中的...

  • 静态代码分析工具汇总

    静态代码扫描,借用一段网上的原文解释一下(这里叫静态检查):“静态测试包括代码检查、静态结构分析、代码质量度量等。...

  • OCLint 代码静态分析

    OCLint 代码静态分析 为了提高代码质量和代码走查的效率,软件开发过程中一般会使用静态代码分析工具来对程序正确...

  • 内存分析(Analyze)

    一. 静态内存分析 所谓静态内存分析, 是指在程序没运行的时候, 通过工具对代码直接进行分析根据代码的上下文的语法...

  • iOS安全攻防-代码混淆、反调试

    一、静态分析 静态分析是指用工具对程序结构,代码逻辑的分析。很大程度上取决关键字,通过关键字找到敏感代码,进行破解...

网友评论

      本文标题:代码静态分析

      本文链接:https://www.haomeiwen.com/subject/rxczvltx.html