静态分析

PMD-Java代码静态分析工具使用

耗尽温柔 提交于 2019-12-04 04:19:16
如今,使用代码分析工具来代替人工进行代码审查,已经是大势所趋了。用于Java代码检测的工具中,不乏许许多多的佼佼者,其中PMD就是其中一款。PMD既可以独立运行,也可以以命令行的形式运行,还可以作为插件在IDE中运行,本文将基于在Android Studio中的使用来介绍PMD的基本使用。 一、PMD简介 对于PMD名称含义,有个有趣的现象,PMD不存在一个准确的名称,在官网上你可以发现很有有趣的名称 ,比如:Pretty Much Done,Project Meets Deadline等。PMD是一款程序代码检查工具(可以支持多种语言,以Java为例),通过静态分析Java源文件来获知代码错误,也就是说在不运行不编译Java程序的情况下直接扫描Java源文件,报告错误 。该软件功能强大,扫描效率高,是Java程序员debug的好帮手。它附带了许多可以直接使用的规则,利用这些规则可以找出Java源程序的许多问题,比如: 可能的 Bugs:检查潜在代码错误,如空 try/catch/finally/switch 语句 未使用代码(Dead code):检查未使用的变量,参数,方法 复杂的表达式:检查不必要的 if 语句,可被 while 替代的 for 循环 重复的代码:检查重复的代码 循环体创建新对象:检查在循环体内实例化新对象 资源关闭:检查 Connect,Result

UML类图

匿名 (未验证) 提交于 2019-12-02 23:52:01
UML:统一建模语言,是一种用于软件系统分析和设计的语言工具 2.UMLͼ UML图分类: 用例图 静态结构图:类图,对象图,包图,组件图,部署图 动态行为图:交互图,状态图,活动图 类图是描述类与类之间的关系的,是UML图中最核心的 用于描述系统中类(对象)本身的组成和类(对象)之间的各种静态关系 类之间的关系:依赖,泛化(继承),实现,关联,聚合与组合 待续......

IDEA插件之FindBugs

让人想犯罪 __ 提交于 2019-12-02 16:19:11
1、是个啥?   Findbugs,它是一个静态分析工具,用来查找Java代码中的程序错误。它使用静态分析来识别Java程序中上百种不同类型的潜在错误。 2、安装   File -> Settings -> Plugins -> Marketplace 搜索“Findbugs” 安装完重启IDEA 3、使用   (1)在代码编辑框右键,选择”FindBugs”菜单,选择需要分析的文件   (2)分析完成后,底栏会有窗口,显示结果:   (3)如果有bug的话,会显示错误图标和提示(图来自网络): 来源: https://www.cnblogs.com/GuixinChan/p/11753745.html

#逆向分析系列#逆向0X01

て烟熏妆下的殇ゞ 提交于 2019-12-02 05:03:20
简单来讲,对软件进行分析并搞清楚其行为的工作就叫做“逆向工程”。逆向是指对软件进行分析,其对象不仅限与恶意软件,因此也不一定和计算机安全相关,譬如:license的绕过、游戏金手指等。都属于通过逆向分析绕过或篡改内部数据达到所需目标。 逆向工程可分为静态分析与动态分析。静态分析是:在不允许目标程序的情况下进行分析。动态分析:在运行目标程序的情况下进行分析。静态分析可用于了解全局信息,动态分析可用于了解局部信息,动静结合效果倍增! 静态分析常用工具包括:winhex(二进制编辑器)、IDA Freeware版(反汇编工具)等。 动态分析常用工具包括:Process Monitor(系统进程监视器)、OllyDbg(动态追踪工具)、Wireshark(数据包分析软件)等。 形形色色各种工具都有,再次不一一介绍。 工欲善其事必先利其器,在具有“趁手武器”后,我们需要对汇编指令有所了解(了解常用关键指令即可),便于通过工具展示出的内容进行分析。 没必要一行行仔细阅读,重要的部分花时间仔细理解,其余部分了解大概即可。 指令 示例 含义 说明 MOV MOV EAX,ECX EAX=ECX 将ECX的值存入EAX ADD ADD EAX,ECX EAX+=ECX 将EAX的值加上ECX的值 SUB SUB EAX,ECX EAX-=ECX 将EAX的值减去ECX的值 INC INC EAX

C/C++代码静态分析工具调研

那年仲夏 提交于 2019-12-02 03:54:42
C/C++代码静态分析工具调研 摘自:https://www.jianshu.com/p/92886d979401 简述 静态分析(static analysis)是指在不执行代码的情况下对其进行分析评估的过程,是软件质量和软件安全保障的重要一环。它通过词法分析、语义分析、控制流分析、数据流分析等技术对代码逐行解析暴露问题,从而协助我们将许多在运行时才会暴露的棘手麻烦扼杀于摇篮之中。 典型问题示例 代码静态分析能够识别诸多类型的漏洞或缺陷,轻至警告级的「变量未使用」,重至错误级的各类bug,这里列举几种常见的、较严重的、可静态检测的问题。 ■ 缓冲区溢出 缓冲区溢出是指向缓冲区中存入超出其空间大小的数据量,导致多余的数据覆盖其他区域的合法数据,类似倒入容器中的水过多而导致溢出,流到它不该去的地方,造成不可预期的后果。从实践统计看,缓冲区溢出问题是软件中最普遍存在的漏洞问题,在C/C++这类不提供内存越界检测的语言中尤甚。通常,发生缓冲区溢出的情况有: 字符串拷贝,当目标缓冲区长度小于源字串的长度时(此类的函数包括 strcpy 、 _mbscpy 、 strcat 、 wcscat 、 memcpy 、 strncpy 、 _mbsncpy 、 strncat 、 wcsncat 等)。 // 字符串拷贝之前没有对s做长度判断,如果超过10,就会造成缓冲区溢出。 void func

XCode Static Analysis 静态分析工具分析代码

巧了我就是萌 提交于 2019-11-30 20:29:28
Clang静态分析和Instruments来剖析代码有一些不同,Clang更致力于在编译的过程中通过自身的一套判断机制来找出代码中潜在的隐患。   在XCode 3.2之后的版本里,Clang已经被集成进来,Static Analysis 是基于 Clang 的非常好的静态代码分析工具。可以从xcode直接运行Static Analysis 分析器。   Static Analysis 优点:   1、使用操作容易。   2、能够在编码阶段,开发自行进行 代码检查 。早期发现代码隐患。   3、直接分析源代码来发现程序中的错误,而不需要实际运行。   4、自动检测objective-C程序中的BUG,发现内存泄露和其它问题。   5、内存问题发现越早,解决的代价就越小。   使用方法:   1、确保你的程序没有被编译过(编译过了就使用Clean all targets清除编译)   2、点击Product > Analyze如下图:   3、如果你的程序代码有问题,在编译完成之后,右下角的原来提示warning 和 error的地方现在变成了这样:   4、现在你可以像解决以前的warning 或者 error一样,对提示的地方点进去。   5、可能会存在问题的一些情况:   各处内存泄漏:   对象引用隐患(内存已释放可能又被使用了) 未使用到的函数:   未初始化的变量  

CodeSonar通过创新型静态分析增强软件可靠性

不羁岁月 提交于 2019-11-30 18:05:34
为进一步提高软件的可靠性,GrammaTech公司正在与美国国土安全部(DHS)合作,并在“静态分析现代化程序(STAMP)”的指导下进行尖端研发。GrammaTech首席执行官Teitelbaum说:“DHS要求我们提供能够为静态分析领域增加具有价值的创新性想法。”三年来,GrammaTech提出了具有变革性的想法,其中最为主要的是使用机器学习检查开源社区中的大型代码库,以自动了解用户如何使用某些API。正如Teitelbaum指出的那样,这可以减轻手动、遗留方法相关联的缺点,这些遗留方法可以用来找出对API强制执行的规则,使用机器学习自动化规则创建过程,确保以更低的成本进行更多的程序错误检查。“我们从数千个开源程序中学习规则,并将其与CodeSonar和其他开源分析器进行集成,使开源社区也可以从我们的研究中受益。”Teitelbaum补充道。 软件开发生命周期中的重要性,特别是在网络安全方面,开发人员更有义务提高软件质量。这些年来,软件质量已逐渐成为开发人员的主要挑战。因此,网络威胁推动了高级代码分析工具的迅速发展。软件保障工具和先进的网络安全解决方案CodeSonar以其“核心创新”方法和强大的研究实力满足了这一全球性的需求。秉持着安全第一的软件设计理念,CodeSonar通过其稳健的代码分析平台,帮助客户设计、开发和部署可信的软件应用程序。它可以检测并消除软件问题

Roslyn 入门:使用 Roslyn 静态分析现有项目中的代码

微笑、不失礼 提交于 2019-11-28 12:23:10
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/WPwalter/article/details/79616402 Roslyn 是微软为 C# 设计的一套分析器,它具有很强的扩展性。以至于我们只需要编写很少量的代码便能够分析我们的项目文件。 作为 Roslyn 入门篇文章,你将可以通过本文学习如何开始编写一个 Roslyn 扩展项目,如何开始分析一个解决方案(.sln)中项目(.csproj)的代码文件(.cs)。 本文是 Roslyn 入门系列之一: Roslyn 入门:使用 Visual Studio 的语法可视化(Syntax Visualizer)窗格查看和了解代码的语法树 Roslyn 入门:使用 .NET Core 版本的 Roslyn 编译并执行跨平台的静态的源码 Roslyn 入门:使用 Roslyn 静态分析现有项目中的代码(本文) 如果你希望真实地静态分析一个实际项目,并且理解这样的分析过程是如何进行的(而不只是写个 demo),那么本文的所有内容都将是必要的。 准备工作 为了能够进行后面关键的操作,我们需要先有一个能跑起来的项目。 ▲ 在 Visual Studio 新建项目,选择“控制台程序(.NET Framework)” 在目前({%

静态时序分析(STA,Static Timing Analysis)基础与应用1

随声附和 提交于 2019-11-28 02:34:51
http://hi.baidu.com/hieda/blog/item/334c4ffab3844c8e9e5146f8.html 前言 在制程进入深次微米世代之后,晶片(IC)设计的高复杂度及系统单晶片(SOC)设计方式兴起。此一趋势使得如何确保IC品质成为今日所有设计从业人员不 得不面临之重大课题。静态时序分析(Static Timing Analysis简称STA)经由完整的分析方式判断IC是否能够在使用者的时序环境下正常工作,对确保IC品质之课题,提供一个不错的解决方案。然而, 对于许多IC设计者而言,STA是个既熟悉却又陌生的名词。本文将力求以简单叙述及图例说明的方式,对STA的基础概念及其在IC设计流程中的应用做详尽 的介绍。 什么是STA? STA的简单定义如下:套用特定的时序模型(Timing Model),针对特定电路分析其是否违反设计者给定的时序限制(Timing Constraint)。以分析的方式区分,可分为Path-Based及Block-Based两种。 先来看看Path-Based这种分析方式。如图一所示,讯号从A点及B点输入,经由4个逻辑闸组成的电路到达输出Y 点。套用的Timing Model标示在各逻辑闸上,对于所有输入端到输出端都可以找到相对应的延迟时间。而使用者给定的Timing Constraint为: 讯号A到达电路输入端的时间点为2

使用 OClint 进行静态代码分析

六月ゝ 毕业季﹏ 提交于 2019-11-27 09:55:19
   OCLint 就是一个建立在 Clang 上的工具,能够发现代码中潜在的问题。   最近需要一个静态分析代码工具,帮助我们发布运行应用前找到代码潜在的问题。 其实对于iOS开发,我们的日常开发上已经用到了这样一个静态分析的工具,那就是 Clang , Clang 是支持 C 、 C++ 、 Objective-C 和 Swift 的一个前端编译工具,他将 OC 或者 Swift 的代码输出抽象语法树(Abstract Syntax Tree),然后编译成 LLVM 的 bitcode,最后由 LLVM 编译成 machine code。这个工具支撑着我们日常的开发和调试。   安装 OCLint:    brew tap oclint/formulae    brew install oclint   安装 xcpretty:    gem install xcpretty   进入工程目录,生成 compile_commands.json 文件:    xcodebuild | tee xcodebuild.log   生成 json 文件:    oclint-xcodebuild         来源: http://www.cnblogs.com/ZachRobin/p/7615809.html