热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

静态分析工具汇总

静态代码扫描,借用一段网上的原文解释一下(这里叫静态检查):“静态测试包括代码检查、静态结构分析、代码质量度量等。它可以由人工进行,充分发挥人的逻辑思维优势,也可以借助软件工具自动

静态代码扫描,借用一段网上的原文解释一下(这里叫静态检查):“静态测试包括代码检查、静态结构分析、代码质量度量等。它可以由人工进行,充分发挥人的逻辑思维优势,也可以借助软件工具自动进行。代码检查代码检查包括代码走查、桌面检查、代码审查等,主要检查代码和设计的一致性,代码对标准的遵循、可读性,代码的逻辑表达的正确性,代码结构的合理性等方面;可以发现违背程序编写标准的问题,程序中不安全、不明确和模糊的部分,找出程序中不可移植部分、违背程序编程风格的问题,包括变量检查、命名和类型审查、程序逻辑审查、程序语法检查和程序结构检查等内容。”。

我看了一系列的静态代码扫描或者叫静态代码分析工具后,总结对工具的看法:静态代码扫描工具,和编译器的某些功能其实是很相似的,他们也需要词法分析,语法分析,语意分析...但和编译器不一样的是他们可以自定义各种各样的复杂的规则去对代码进行分析。

以下将会列出的静态代码扫描工具,会由于实现方法,算法,分析的层次不同,功能上会差异很大。有的可以做SQL注入的检查,有的则不能(当然,由于时间问题还没有对规则进行研究,但要检查复杂的代码安全漏洞,是需要更高深分析算法的,所以有的东西应该不是设置规则库就可以检查到的,但在安全方面的检查,一定程度上也是可以通过设置规则进行检查的)

.NET

  • .NET Compiler Platform(代号罗斯林) -开源编译器框架,C#和Visual Basic .NET中开发的微软 .NET。提供用于分析和操作语法的API。
  • CodeIt.Right  -结合静态代码分析和自动重构最佳实践,它允许代码中的错误和违规行为自动修正; 支持C#和VB.NET。
  • 的CodeRush  -一个插件的Visual Studio它提醒用户侵犯最佳做法。
  • 的FxCop  -免费静态分析微软.NET程序编译为CIL。独立和集成在一些微软的Visual Studio版本; 微软。
  • NDepend的  -简化了管理,通过分析和可视化代码的依赖关系,通过定义设计规则,这样做影响分析复杂的.NET代码库,并通过比较不同版本的代码。集成到Visual Studio中。
  • Parasoft dotTEST -静态分析,单元测试和代码审查的插件为Visual Studio的 ; 适用于语言的Microsoft .NET Framework和.NET Compact Framework,包括C#,VB.NET,ASP.NET和托管C ++。
  • 了StyleCop  -分析C#源代码来执行一组风格和一致性规则。它可以从内部运行的Microsoft Visual Studio中或整合到MSBuild的项目。

Ç,C ++ 

  • Astrée  -查找所有可能的运行时错误由抽象解释,可以证明不存在运行时错误,并能证明功能的断言; 针对对安全至关重要的C代码(例如航空电子设备)。
  • BLAST  - (伯克利懒惰抽象软件验证工具) -对C程序的基础上慵懒抽象的开源软件模型检测(后续项目CPAchecker。[5])。
  • Cppcheck  -开源的工具来检查几种类型的错误,包括使用STL。
  • cpplint  -一个开源的工具,它检查是否符合谷歌的风格指南对C ++编码。
  • Clang   -一个开放源代码编译器,它包括一个静态分析器它包括一个静态分析器
  • Coccinelle的  -一个开源的源代码模式匹配和改造。
  • Cppdepend  -简化了管理,通过分析和可视化代码的依赖关系,通过定义设计规则,这样做影响分析,并比较不同版本的代码的复杂的C / C ++代码库。
  • ECLAIR  -对于自动分析,验证,C和C ++程序的测试和转化的平台。
  • Eclipse(软件)  -一种开放源码的IDE,包括静态代码分析仪(CODAN)。
  • Fluctuat  - 抽象解释的程序数值属性的验证。
  • Frama-C  -一个开源的静态分析框架C.
  • Goanna  -软件分析工具,用于C / C ++。
  • Klocwork的静态代码分析  -静态分析工具,用于C / C ++。
  • Lint -原来的静态代码分析仪C.
  • LDRA Testbed  -软件分析与测试工具套件的C / C ++。
  • Parasoft C / C ++test  - C / C ++工具,它的静态分析,单元测试,代码审查,并且运行时错误检测; 可用于插件的Visual Studio和Eclipse的基础的集成开发环境。
  • PC-Lint -软件分析工具,用于C / C ++。
  • Polyspace  -使用抽象解释检测和证明不存在的运行时间错误,在死代码的源代码以及用于检查所有MISRA(2004,2012),规则(指令,非指令)。
  • PVS-Studio  -软件分析工具,用于C,C ++,C ++ 11,C ++ / CX(组件扩展)。
  • PRQA QA·C与QA·C ++  -的C / C ++质量保证和方针/编码标准执法与MISRA支持深度静态分析。
  • SLAM project  -一期工程微软研究院检查它使用的接口软件满足的关键行为属性。
  • Sparse  -一个开源工具,旨在发现故障的Linux内核。
  • Splint  -一个开源的进化版皮棉,为C.
  • ...

Java

  • Checkstyle  -除了一些静态代码分析,它可以用来显示侵犯一个配置编码标准。
  • FindBugs  -一个开源的静态分析字节码的Java(基于雅加达 BCEL马里兰大学)。
  • IntelliJ IDEA -跨平台的Java IDE,具有自己的一套几百代码检查可在即时在整个项目的编辑和批量分析分析代码。
  • JArchitect  -简化了分析和可视化代码的依赖关系,通过定义设计规则,这样做影响分析,并通过比较不同版本的代码管理复杂的Java代码库。
  • Jtest  -测试和静态代码分析产品通过Parasoft的。
  • LDRA Testbed   -软件分析与测试工具套件的Java。
  • PMD  -静态规则集基于Java源代码分析器,能够识别潜在问题。
  • SemmleCode  -面向对象的代码查询静态程序分析。
  •  Sonargraph(原SonarJ) -代码为目的的架构显示器的一致性,也计算了广泛的软件度量。
  • Soot  -一个语言处理和优化框架由中间语言的Java。
  • Squale  -管理软件质量的平台(也可用于其他语言,使用商业分析工具虽然)。
  • SonarQube  -对代码质量的持续检查的开源平台。
  • SourceQube  -一个独立于平台的命令行静态源代码分析器用于Java,C / C ++,RPG IV(AS / 400)和Python。
  • ThreadSafe  -一个静态分析工具,用于Java的重点是寻找并发错误。
  • ...

Javascript

  • Google‘s Closure Compiler  -的Javascript优化器重写代码,以更快,更小,并检查使用本地Javascript功能。
  • JSLint -的Javascript 语法检查和验证。
  • JSHint  - JSLint的的社区驱动的叉。

 

Objective-C, Objective-C++

  • Clang -免费锵项目包括静态分析。作为版本3.2,该分析仪包括在Xcode中 。[6]

Perl

  • Perl::Critic   -一个工具来帮助实施通用Perl的最佳实践。大多数的最佳做法是基于达米安康威的Perl的最佳实践的书。
  • PerlTidy  -程序作为一个语法检查和测试仪/实施者在Perl的编码实践。
  • Padre- Perl的一个IDE,它也提供了静态代码分析检查常见的初学者的错误。

Python的[ 编辑]

  • pylint -静态代码分析。很严格的; 包括许多文体警告也是如此。
  • PyCharm  -跨平台的Python IDE,具有代码检查可在即时在整个项目的编辑和批量分析分析代码。


  以下我在网上搜集到的分析工具,我整理了以下挑了一些出来,这里只是一部分,另外一些可以到参考链接上看一下:

工具名 静态扫描语言 开源/付费 厂商 介绍 主页网址
ounec5.0 VB.Net、C、C++和C#,
还支持Java。
付  费 Ounce Labs \ http://www.ouncelabs.com/
Coverity Prevent C/C++,C#,JAVA 付费 Coverity 还有其他辅助工具:
1.Coverity Thread Analyzer for Java
2.Coverity Software Readiness Manager for Java
3.Coverity Architecture Analyzer
http://www.coverity.com/index.html
@stake SmartRisk™ 
Analyzer
C/C++,Java 付费 Symantec 
Corporation
@stake SmartRisk™ Analyzer harnesses the power of 
static analysis of binary executables (C, C++, and Java) to 
identify, categorize and prioritize security。
注:在Symantec没有搜到此产品?!
http://www.symantec.com/business/index.jsp
Rational Purify C/C++,Java 付费 IBM Provides memory leak and memory corruption detection for 
Windows,Runtime?!
http://www-01.ibm.com/software/awdtools/purify/
PREfix \ \ microsoft 微软用的静态分析工具,但暂时没有找到下载,
现在好像在考虑发布中!
\
Jtext Java 付费 parasoft 同时还有其他静态分析代码的产品,如:C++Test...
详细请查询官网
http://www.parasoft.com/jsp/cn/support.jsp
flawfinder C/C++ 开源 \ 用Python编写的c、c++程序安全审核工具,
可以检查潜在的安全风险。
http://www.dwheeler.com/flawfinder/
Static Code 
Analyzer
C/C++,C#,JAVA 付费 Fortify \ http://www.fortify.com/
Klocwork Insight C/C++ ,Java 付费 Klocwork \ http://www.klocwork.com/products/insight.asp
PolySpace
Client/Server
C/C++、Ada语言 付费 MathWorks \ http://www.mathworks.cn/
rats C/C++, Python,
Perl, 
PHP代码进行安全审核的工具
开源 \ \ http://www.fortify.com/security-resources/rats.jsp
LAPSE Java 开源 \ LAPSE stands for a Lightweight Analysis for Program 
Security in Eclipse. LAPSE is designed to help with 
the task of auditing Java J2EE applications for common 
types of security vulnerabilities found in Web applications.
LAPSE was developed by Benjamin Livshits as part of the 
Griffin Software Security Project.
http://www.owasp.org/index.php/Category:OWASP_LAPSE_Project
Fluid java 开源 \ We have explored properties including:

    * race conditions and locking policies,
    * unique references and other programmer-significant
aliasing properties,
    * effects,
    * appropriate typing,
    * realtime threading policies, and
    * single-threading policies.
http://www.fluid.cs.cmu.edu:8080/Fluid
Splint C 开源 University of 
Virginia,
Department of 
Computer
Science
静态检测针对C语言的安全工具和漏洞检测。 http://www.splint.org/
cqual C/C++ 开源 马里兰大学 轻量级的静态扫描器,在类Linux系统下运行。 http://www.cs.umd.edu/~jfoster/cqual/
MOPS C 开源 berkeley大学 MOPS is a tool for finding security bugs in C programs 
and for verifying conformance to rules of defensive programming
http://www.cs.berkeley.edu/~daw/mops/
BOON C 开源 berkeley大学 BOON is a tool for automatically finding buffer overrun 
vulnerabilities in C source code. Buffer overruns are one
of the most common types of security holes, and we hope 
that BOON will enable software developers and code auditors
to improve the quality of security-critical programs.
http://www.cs.berkeley.edu/~daw/boon/
BLAST C 开源 The BLAST 
2.0 Team
BLAST is a software model checker for C programs.  
The goal of BLAST is to be able to check that software
satisfies behavioral properties of the interfaces it uses.
BLAST uses counterexample-driven automatic abstraction
refinement to construct an abstract model which is model
checked for safety properties. The abstraction is constructed
on-the-fly, and only to the required precision.
http://mtc.epfl.ch/software-tools/blast/
SpikeWAMP Php 开源 \ for analyzing PHP programs http://developer.spikesource.com/wiki/index.php/SpikeWAMP
Pixy Php 开源 \ Finding XSS and SQLI vulnerabilities http://pixybox.seclab.tuwien.ac.at/pixy/
Mike Java 开源 \ Java source code security scanner built on top of Orizon.
They are connected to OWASP.
http://milk.sourceforge.net/download.html
Smatch C 开源 \ \ http://smatch.sourceforge.net/
Oink C++ 开源 \ C++ Static Analysis Tools http://www.cubewano.org/oink
Frama-C C 开源 \ static analyzers for the C language. http://frama-c.cea.fr/
RTL-check \ 开源 \ RTL-check is an extensible and powerful abstract interpretation
framework for static analysis of programs from a safety and
security perspective
http://rtlcheck.sourceforge.net/
PMD Java 开源 \ PMD scans Java source code and looks for potential problems like:

    * Possible bugs - empty try/catch/finally/
switch statements
    * Dead code - unused local variables, parameters
and private methods
    * Suboptimal code - wasteful String/StringBuffer usage
    * Overcomplicated expressions - unnecessary if statements,
for loops that could be while loops
    * Duplicate code - copied/pasted code means copied/pasted bugs
http://pmd.sourceforge.net/
FindBugs Java 开源 马里兰大学 uses static analysis to look for bugs in Java code.
注意:提供Eclipse插件。
http://findbugs.sourceforge.net/
ITS4 C\C++ 开源 \ Cigital developed ITS4 to help automate source code
review for security.
http://www.cigital.com/its4/
QJ-Pro Java 开源 \ QJ-Pro is a comprehensive software inspection tool targeted 
towards the software developer.

QJ-Pro checks:
    * conformance to coding standards,
    * misuse of the Java language,
    * best practice conformence
    * code structure and
    * potential bugs at the earliest stages of development.
注意:提供各种IDE插件!
http://qjpro.sourceforge.net/
Jint Java 开源 \ Jlint will check your Java code and find bugs, inconsistencies
and synchronization problems by doing data flow analysis and
building the lock graph.
http://artho.com/jlint/
Hammurapi Java 开源 \ code review system captures coding best practices and delivers
them to developers‘ fingertips. It also generates consolidated
reports for lead developers, architects, and managers to
monitor codebase quality and evolution.
http://www.hammurapi.biz/hammurapi-biz/ef/xmenu/hammurapi-group/index.html
DoctorJ Java 开源 \ Among what it detects:

    * misspelled words
    * parameter and exception names:
          o missing
          o misordered
          o misspelled
    * Javadoc tags:
          o invalid
          o misordered
          o missing expected arguments
          o invalid arguments
          o missing descriptions
    * undocumented classes, methods, fields, 
parameters
http://www.incava.org/projects/java/doctorj/index.html
Dependency Finder Java 开源 \ Dependency Finder is a suite of tools for analyzing
compiled Java code. At the core is a powerful dependency
analysis application that extracts dependency graphs and
mines them for useful information. This application comes
in many forms for your ease of use, including command-line 
tools, a Swing-based application, a web application ready
to be deployed in an application server, and a set of Ant
tasks.
http://depfind.sourceforge.net/
Checkstyle Java 开源 \ Checkstyle is a development tool to help programmers
write Java code that adheres to a coding standard.
It automates the process of checking Java code to spare
humans of this boring (but important) task. This makes
it ideal for projects that want to enforce a coding standard. 
注意:提供多种IDE的插件。
http://checkstyle.sourceforge.net/
Classycle Java 开源 \ Classycle‘s Analyser analyses the static class and package
dependencies in Java applications or libraries.
http://classycle.sourceforge.net/
JDepend Java 开源 \ JDepend traverses Java class file directories and generates
design quality metrics for each Java package. 
JDepend allows you to automatically measure the quality
of a design in terms of its extensibility, reusability,
and maintainability to manage package dependencies effectively.
http://www.clarkware.com/software/JDepend.html
JCSC Java 开源 \ JCSC is a powerful tool to check source code against a highly
definable coding standard and potential bad code.
http://jcsc.sourceforge.net/

......

以下是直接提供代码检查/相关帮助的厂商:

Fortify:  

http://www.fortify.com/

ASPECT: 

http://www.aspectsecurity.com/

OWASP:   

http://www.owasp.org/index.php/Main_Page

securitycompass:

http://www.securitycompass.com/resources.shtml


参考资料:

1. http://www.dwheeler.com/flawfinder/
2. http://www.java2s.com/Product/Java/Byte-Source-Code/Source-Analysis-Diagram.htm
3. http://www.softwarelist.cn/?fsid=53&cid=530&cpath=ABAN
4. http://www.hacker.com.cn/article/view_14804.html
5. http://www.cs.cmu.edu/~aldrich/courses/654/tools/

注:以上链接列举了大量相关工具

Source URL: http://www.pin5i.com/showtopic-22624.html

仅供学习!

静态分析工具汇总


推荐阅读
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 本文讲述了作者通过点火测试男友的性格和承受能力,以考验婚姻问题。作者故意不安慰男友并再次点火,观察他的反应。这个行为是善意的玩人,旨在了解男友的性格和避免婚姻问题。 ... [详细]
author-avatar
mobiledu2502931437
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有