首页> 外文期刊>Programming and Computer Software >SharpChecker: Static Analysis Tool for C# Programs
【24h】

SharpChecker: Static Analysis Tool for C# Programs

机译:SharpChecker:用于C#程序的静态分析工具

获取原文
获取原文并翻译 | 示例

摘要

This paper considers various aspects of static analysis of C# programs in order to detect the maximum number of software bugs in an acceptable time. A complete cycle of software static analysis is described with the main focus being placed on the specifics of the C# language. Some methods are discussed that take into account popular features of C# at all levels of analysis: call graph and control flow graph construction, dataflow analysis, as well as context- and path-sensitive interprocedural analysis. A symbolic execution method is proposed, which is based on the works devoted to the Bounded Model Checking (BMC) and the Saturn Software Analysis Project. A memory model is described that enables an accurate intraprocedural analysis and allows one to create compact representations of error conditions associated with functions, which are essential for interprocedural analysis. A special attention is paid to the optimizations that occur during path-sensitive analysis of error conditions. The conditions need to be optimized in terms of size, because path-sensitive interprocedural analysis requires saving a large number of conditions for each analyzed function. The conditions are resolved using advanced SMT solvers (such as the Microsoft Z3 Prover). This paper also considers various approaches to modeling the behavior of library functions: based on a summary containing a set of properties required for analysis, or based on simplified implementations in C#. All the discussed solutions are implemented in the SharpChecker static analysis tool and are tested on a number of open-source projects from 1.5 thousand to 1.35 million lines of code.
机译:本文考虑了C#程序静态分析的各个方面,以便在可接受的时间内检测到最大数量的软件错误。描述了软件静态分析的完整周期,主要重点放在C#语言的细节上。讨论了一些在所有分析级别都考虑到C#流行特征的方法:调用图和控制流图的构造,数据流分析以及上下文和路径敏感的过程间分析。提出了一种符号执行方法,该方法基于致力于边界模型检查(BMC)和Saturn软件分析项目的工作。描述了一种存储器模型,该模型能够进行准确的过程内分析,并允许创建与函数相关的错误条件的紧凑表示,这对于过程间分析至关重要。特别注意对错误条件进行路径敏感分析期间发生的优化。需要对条件进行大小优化,因为路径敏感的过程间分析需要为每个被分析的函数保存大量条件。使用高级SMT求解器(例如Microsoft Z3 Prover)可以解决条件。本文还考虑了各种对库函数行为进行建模的方法:基于包含分析所需属性集的摘要,或基于C#中的简化实现。所有讨论的解决方案都在SharpChecker静态分析工具中实现,并在从1500到135万行代码的许多开源项目中进行了测试。

著录项

  • 来源
    《Programming and Computer Software》 |2017年第4期|268-276|共9页
  • 作者单位

    Russian Acad Sci, Inst Syst Programming, Ul Solzhenitsyna 25, Moscow, Russia;

    Russian Acad Sci, Inst Syst Programming, Ul Solzhenitsyna 25, Moscow, Russia;

    Russian Acad Sci, Inst Syst Programming, Ul Solzhenitsyna 25, Moscow, Russia;

    Russian Acad Sci, Inst Syst Programming, Ul Solzhenitsyna 25, Moscow, Russia;

  • 收录信息
  • 原文格式 PDF
  • 正文语种 eng
  • 中图分类
  • 关键词

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号