精华内容
下载资源
问答
  • 代码扫描工具

    万次阅读 2018-06-11 11:39:08
    1. DMSCA-企业级静态源代码扫描分析服务平台系统架构 客户可以通过Internet或者局域网络 从浏览器、Eclipse、Visual Studio 、命令行 、甚至 Web 服务访问DMSCA 服务平台,上传扫描代码,选择扫描策略,自动化扫描...

    1. DMSCA-企业级静态源代码扫描分析服务平台

    系统架构


          客户可以通过Internet或者局域网络 从浏览器、Eclipse、Visual Studio 、命令行 、甚至 Web 服务访问DMSCA 服务平台,上传扫描代码,选择扫描策略,自动化扫描, 并利用平台可视化环境 ,审计扫描结果 ,生成审计报告 ,并可以利用平台提供的知识库 ,学习软件安全漏洞 、代码质量缺陷等多方面的知识,加速源代码缺陷修复 。

    2. VeraCode静态源代码扫描分析服务平台


         Veracode静态源代码分析服务平台是全球商业运营最好的平台,全球数千家 软件科技公司都在使用其服务发现软件安全漏洞、质量缺陷。


    支持众多主流的开发语言和框架:   

    •    Java

    •    .NET

    •    JavaScript & TypeScript (including AngularJS, Node.js, and jQuery)

    •    Python, Perl, PHP, Ruby on Rails, Scala, ColdFusion, Classic ASP

    •    iOS (Objective-C and Swift), Android (Java), PhoneGap, Cordova, Titanium, Xamarin

    •    C/C++ (Windows, RedHat Linux, OpenSUSE, Solaris)

    •    COBOL, RPG, Visual Basic 6

    3. Fortify Scan 

    Fortify SCA是一个静态的、白盒的软件源代码安全测试工具。它通过内置的五大主要分析引擎:数据流、语义、结构、控制流、配置流等对应用软件的源代码进行静态分析,分析的过程中与它特有的软件安全漏洞规则进行全面地匹配、查找,从而将源代码中存在的安全漏洞扫描出来,并给于整理报告。

    4. Checkmarx

    Checkmarx的CxEnterprise静态源代码安全漏洞扫描和管理方案是一款比较全面的、综合的源代码安全扫描和管理方案,该方案提供用户、角色和团队管理、权限管理、扫描结果管理、扫描调度和自动化管理、扫描资源管理、查询规则管理、扫描策略管理、更新管理、报表管理等多种企业环境下实施源代码安全扫描和管理功能。

    展开全文
  • Android 代码扫描工具

    2019-03-05 09:17:52
    静态代码扫描 360 火线 官网:http://magic.360.cn/zh/index.html 收费:免费 详情:检测代码潜在的安全问题,性能,以及崩溃问题。 规则:http://magic.360.cn/zh/document.html ...

    静态代码扫描

    360 火线

    官网:http://magic.360.cn/zh/index.html
    收费:免费
    详情:检测代码潜在的安全问题,性能,以及崩溃问题。
    规则:http://magic.360.cn/zh/document.html

    展开全文
  • Sonar代码扫描常见规则总结

    千次阅读 2020-05-22 09:46:22
    Sonar代码扫描常见规则 最近公司项目交付,交付前集成,功能,性能,安全种种测试工作就来了,由于测试离职,被抓壮丁,兼职起测试修改工作。小公司,平时敲(ctrl+c)代码(ctrl+v) 时,同事也不在意一些代码规范...

    Sonar代码扫描常见规则

    最近公司项目交付,交付前集成,功能,性能,安全种种测试工作就来了,由于测试离职,被抓壮丁,兼职起测试修改工作。小公司,平时敲(ctrl+c)代码(ctrl+v)
    时,同事也不在意一些代码规范,以及一些常见的规约要求(阿里规约),所以代码扫描一地bug,漏洞,以及坏味道,道人委实因为这恨加了几天班。(心疼道人3秒)

    因此,如果项目交付需要进行代码质量扫描等工作,一定要将代码规范写进公司代码规范中,并严格遵守。

    程序员啦,代码提交时,idea编辑工具的话,可以使用sonarLine插件进行代码扫描,并修改扫描出的问题,再进行提交;或者使用阿里规约进行代码检测(至于sonar Rule 设置,后续博文会进行更新),下面是平时代码中常见的一些问题,希望对各位道友有所帮助。


    注:括号中为sonar扫描规则

    (1)非空判断(Nullcheck of value previously dereferenced)

    错误代码

    List<Map<String, Object>> rows 
    = (List<Map<String, Object>>) dao.pagedQuery(sqlKey, param, pageIndex,
                        pageSize);
    Map<String, Object> map = new HashMap<String, Object>();
    int fileId = -1;
    // for循环中 未做rows的非null判断
    for (Map<String, Object> item : rows) {
        map.clear();
        ...
    }
    

    修改方案

    ...
    if (rows != null && !rows.isEmpty()) {
        for (Map<String, Object> item : rows) {
            map.clear();
            ...
        }
    }
    

    (2) Map集合迭代时,采用EntrySet迭代器而不是KeySet迭代器【性能因素】(Inefficient use of keySet iterator instead of entrySet iterator)

    错误代码(KeySet迭代器)

    Map<String, String> param = new HashMap<>();
    //开始循环 
    for (String key : param.keySet()) {
        list.add(new BasicNameValuePair(key, param.get(key)));
    }
    

    修改方案(EntrySet迭代器)

    Map<String, String> param = new HashMap<>()
    //请求参数转换
    for (Map.Entry<String, String> entry : param.entrySet()) {
        list.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));
    }
    

    (3)日志记录使用日志框架(log4j)(User a logger to log exception)

    错误示例

    try{
    ...
    } catch (Exception e) {
        e.printStackTrace();
    }
    

    修改为

    private static Logger logger = Logger.getLogger(FileTransferService.class);
    ...
    try{
    ...
    } catch (Exception e) {
        logger.error("getSetFileTransferObjectClass is Error!", e);
    }
    

    (4) 不需要使用封装类来定义布尔类型常量 (method needlessly boxes a boolean constant)

    // 不推荐(涉及数据的自动装箱、拆箱)
    Boolean b = true;
    --------------------
    // 推荐写法
    boolean b = true;
    // 或者 
    Boolean b = Boolean.TRUE;
    

    (5)字节数组或字符串编码转化时,需要指定编码格式(Method encodes String bytes without specifying the character encoding)

    // 推荐写法
    String string2 = new String(string1.getBytes(StandardCharsets.UTF_8), StandardCharsets.UTF_8)); 
    // 或者
    String string3 = new String(string1.getBytes(), StandardCharsets.UTF_8));
    
    byte[] data = string3.getBytes(StandardCharsets.UTF_8);
    

    (6) StringBuffer或StringBuilder字符串拼接时,传递简单的连接字符串(Method passes simple concatenating string in StringBuffer or StringBuilder append)

    不推荐写法

    StringBuilder columnStr = new StringBuilder();
    List<Map<String, String>> list = tableMap.get(key);
    for (Map<String, Object> map : list) {
        columnStr.append(StringUtil.convertToString(map.get("COLUMN")) + ",");    
    }
    

    推荐写法

    StringBuilder columnStr = new StringBuilder();
    List<Map<String, String>> list = tableMap.get(key);
    for (Map<String, Object> map : list) {
        columnStr.append(StringUtil.convertToString(map.get("COLUMN"))); 
        columnStr.append(",");
    }
    

    (7)split()函数特殊字符问题("." or “|” used for regular expression)

    java中split()特殊符号"." “|” “*” “” “]”

    - 关于点的问题是用string.split("[.]") 解决。
    - 关于点的问题是用string.split("\\.") 解决。
    - 关于竖线的问题用 string.split("\\|")解决。
    - 关于星号的问题用 string.split("\\*")解决。
    - 关于斜线的问题用 sring.split("\\\\")解决。
    - 关于中括号的问题用 sring.split("\\[\\]")解决。
    

    (8)魔数问题(坏味道)
    0,1;“0”,“1” 其余所有变量引用,或者直接使用该变量都不符合Sonar的代码规范规则。

    代码示例

    // 不推荐的写法
    if("old".equals(type)){
        ...
    }
    // 推荐写法
    String oldIndex = "old";
    if (oldIndex.equals(type)){
        ...
    }
    

    (9) Map,List等常用容器初始化需设置初始化大小(性能问题)

    原因:以HashMap和ArrayList为例:

    • HashMap 扩容时(数据大小 >= 初始化容器大小【默认16】 * 负载因子【0.75】),
      会进行数据的rehash,和数据的移动影响性能。
    • ArrayList 扩容时,会进行数组大小(1.5倍)扩增;涉及到数组中元素的复制,然后copy
      到新的数组中。 复制影响性能,根据业务减少扩容次数。

    注意事项:HashMap 的初始化大小必须是2的次幂(原因是:HashMap的hash算法与扩容机制【数据平移】决定)。

    // 不推荐写法
    Map<String, String> pMap = new HashMap<>();
    // 推荐写法
    Map<String, String> pMap = new HashMap<>(32);
    

    在这里插入图片描述

    展开全文
  • 静态代码扫描

    千次阅读 2017-04-28 13:53:03
    静态代码分析(Static program analysis):在不运行程序的条件下,进行程序分析。 编译流程差不多分为这5个阶段: ...静态代码扫描通常分为两种: 模式匹配:匹配代码编译过程中的token流、抽象语法树

    静态代码分析(Static program analysis):在不运行程序的条件下,进行程序分析。


    编译流程差不多分为这5个阶段:
    1. 词法分析生成token流
    2. 语法分析生成抽象语法树
    3. 针对抽象语法树进行语义分析,构建内部数据结构,如控制流图、生成中间代码
    4. 代码优化
    5. 目标代码生成
    静态代码扫描通常分为两种:




    模式匹配:匹配代码编译过程中的token流、抽象语法树(AST)和中间代码,根据经验认知某些样式的代码就是BUG
    • 词法分析词法分析是计算机科学中将字符序列转换为单词(Token)序列的过程。进行词法分析的程序或者函数叫作词法分析器,也叫扫描器(Scanner)。词法分析器一般以函数的形式存在,供语法分析器调用。词法分析阶段是编译过程的第一个阶段,是编译的基础。这个阶段的任务是从左到右一个字符一个字符地读入源程序,即对构成源程序的字符流进行扫描然后根据构词规则识别单词(也称单词符号或符号)。词法分析程序实现这个任务。词法分析是编译程序的必要阶段,核心任务是扫描、识别单词且对识别出的单词给出定性、定长的处理.cppcheck 是一个静态代码扫描工具,使用词法分析进行代码扫描,支持c、C++代码。主要对token流进行匹配,在扫描时无需编译,执行速度较快。
        1. 自动变量检查
        2. 数组的边界检查
        3. class类检查
        4. 过期的函数,废弃函数调用检查
        5. 异常内存使用,释放检查
        6. 内存泄漏检查,主要是通过内存引用指针
        7. 操作系统资源释放检查,中断,文件描述符等
        8. 异常STL函数使用检查
        9. 代码格式错误,以及性能因素检查
    • 语法分析:语法分析是编译过程的一个逻辑阶段,主要任务是在词法分析的基础上将单词序列组合成各类语法短语,如程序、语句、表达式等等。语法分析程序判断程序在结构上是否正确PMD是一个JAVA代码的代码错误分析工具,使用语法分析进行扫描。PMD可以支持扫描文件夹,查找文件夹下的".java"文件进行分析。主要原理是匹配抽象语法树。执行的检查包括:
        1. 潜在的bug:空的try/catch/finally/switch语句
        2. 未使用的代码:未使用的局部变量、参数、私有方法等
        3. 可选的代码:String/StringBuffer的滥用
        4. 复杂的表达式:不必须的if语句、可以使用while循环完成的for循环
        5. 重复的代码:拷贝/粘贴代码意味着拷贝/粘贴bugs
        6. 循环体创建新对象:尽量不要在for或while循环体内实例化一个新对象
        7. 资源关闭:Connect,Result,Statement等使用之后确保关闭掉
    • 中间代码:中间代码是编译器编写者希望可以从语法树生成一个更接近目标代码的中间标识形式,或者使用这样一个中间表示代替语法树,然后再行这个新的中间表示生成目标代码。中间代码作为编译器前端和后端的桥梁,中间代码的作用是可使编译程序的结构在逻辑上更为简单明确,特别是可使目标代码的优化比较容易实现中间代码,即为中间语言程序,中间语言的复杂性介于源程序语言和机器语言之间。中间语言有多种形式,常见的有逆波兰记号、四元式、三元式和树。findbugs是一种开源分析Java代码错误的分析工具。findbugs的分析对象是java中间代码——字节码,因此在使用命令行调用工具的过程中,需要传入编译好的class文件或者jar包。同时,findbugs也发布多款的插件和图形界面,支持不同需求的用户。findbugs是目前java代码静态分析领域应用较广泛的工具。
    数据流分析:数据流分析技术基于控制流图(CFG),按照某种方式扫面控制流图的每一条指令,试图理解指令行为,以此判断程序中存在的BUG。数据流分析很像CR(code review),分析能力很强大。Clang Static Analyzer是一种发现C、C++、Obhective-C程序缺陷的静态代码检测工具,可以作为一个单独的工具运行,也可以集成在xcode中。Clang Static Analyzer是用C++编写的完全开源的软件,隶属于Clang项目。主要检查的是:
    1. 未初始化参数,未初始化指针调用
    2. 除0错误
    3. 对于参数标记为nonnull的函数,调用时传入了可能为null的参数
    4. 对null指针进行解引用
    5. 无效栈地址(C)
    6. 未使用二元操作之后的值(C)
    7. 无效的数组大小(C)
    8. 不确定的数组下标访问(C)























    展开全文
  • Fortify代码扫描工具

    千次阅读 2020-12-26 18:53:03
    Fortify是一款强大的静态代码扫描分析工具,其发现代码漏洞缺陷的能力十分强悍,主要是将代码经过编译,依托于其强大的内置规则库来发现漏洞的。其次fortify SCA团队在开发此商业工具时,也提供了自定义规则的接口,...
  • 静态代码扫描教程

    千次阅读 2017-07-28 13:09:58
    静态代码扫描教程,Sonarqube(Sonar),lint介绍,压缩apk,减少 apk 体积
  • 静态代码扫描工具汇总

    千次阅读 2019-11-22 09:44:42
    而静态代码扫描工具能够在代码构建过程中帮助开发人员快速、有效的定位代码缺陷并及时纠正这些潜在的问题。 通过调研,本文将着重介绍几款常用的静态代码扫描工具,这些工具分为几类: 轻量级静态代码扫描工具:Cpp...
  • Jenkins安装Fireline代码扫描

    千次阅读 2019-07-10 10:59:26
    目前火线不仅能检查出安卓代码中的安全类问题和内存泄露问题,还兼容了阿里开源的Java开发规约(P3C项目),本文将以教程的形式帮助大家了解如何在Jenkins中使用火线插件做静态代码扫描。 安装fireline插件 系统...
  • 使用Docker搭建Sonarqube代码扫描环境

    千次阅读 2020-10-18 11:29:33
    Sonarqube环境搭建这里推荐使用docker进行搭建,其他方式搭建,可参考之前的文章:SonarQube环境搭建使用Docker 搭建Sonar的代码扫描环境:1、先创建好几个目录...
  • 静态代码扫描的原理

    千次阅读 2020-01-15 11:29:27
    静态代码扫描存在的价值 研发过程,发现BUG越晚,修复的成本越大 缺陷引入的大部分是在编码阶段,但发现的更多是在单元测试、集成测试、功能测试阶段 统计证明,在整个软件开发生命周期中,30% 至 70% 的代码逻辑...
  • 四款优秀的源代码扫描工具简介

    千次阅读 2020-12-18 16:56:06
    一、DMSCA-企业级静态源代码扫描分析服务平台 端玛企业级静态源代码扫描分析服务平台(英文简称:DMSCA)是一个独特的源代码安全漏洞、质量缺陷和逻辑缺陷扫描分析服务平台。该平台可用于识别、跟踪和修复在源代码...
  • 静态代码扫描平台SonarQube简介

    万次阅读 2016-03-10 16:34:01
    静态代码扫描这个词对很多人来说并不陌生,从字面上理解就是检查项目的源码,从源码中找出代码存在的缺陷:潜在的bug,未使用的代码,复杂的表达式,重复的代码等。 把静态代码扫描引入到自动化测试工作中,需要...
  • iOS 静态代码扫描

    千次阅读 2015-06-18 10:24:42
    iOS 静态代码扫描(facebook 出品 infer) 前阵子 facebook开源了其静态代码扫描工具,该工具通吃 JAVA\Android\iOS,不仅可以检查 Android 和 Java 代码中的 NullPointException 和 资源泄露,也可以发现 iOS 和...
  • 前面介绍了AlibabaIDE插件和通过Jenkins+SonarQube 两种方式审查书写代码规范的方式,今天介绍下AndroidStudio 自带的代码扫描工具。
  • SonarQube+cppcheck实现C++代码扫描

    千次阅读 热门讨论 2019-09-11 14:53:42
    背景 最近接收到C++代码检测的需求,一开始上网找了很久,sonar的... sonar_scanner工具:代码扫描工具 Cppcheck工具:Cppcheck是一种C/C++代码缺陷静态检查工具,不同于C/C++编译器及其它分析工具,Cppcheck只检...
  • 各语言的静态代码扫描工具

    千次阅读 2017-10-27 14:19:24
    1.go 语言静态扫描工具  go tool ver src  go语言自带的扫描工具...2. php 静态代码扫描  phpmd  安装方法: mac 版本: 1. 前提先安装brew 2.添加php tab:brew tap homebrew/homebrew-php  
  • 静态代码扫描常见问题及修复 风险类型 原因 Code Correctness: Erroneous String Compare 字符串的对比使用错误方法 Cross-Site Scripting Web浏览器发送非法数据,导致浏览器执行恶意代码 Dead Code: ...
  • fortify代码扫描使用教程

    万次阅读 热门讨论 2018-09-13 16:08:06
    配置信息:HP Fortify SCA and Applications 4.10+WIN7(64位家庭版) 打开fortify的工作台,选择Advanced Scan...选择代码文件夹,如果代码文件很大,建议拆开一个文件夹一个文件夹扫描 确定后,弹出通知框...
  • 如何用 Sonar 进行静态代码扫描

    千次阅读 2018-04-12 10:43:17
    本次 Chat 将讲述:如何从源码中测试发现 BUG。 主要内容包括: SonarQube 环境搭建。 静态代码扫描讲解。 配置规则使用。 源码问题分析。
  • 文章目录关于静态代码扫描工具Lint的简单使用一、Lint 与 IDE 的结合使用二、Lint 与 gradle 命令的结合使用具体位置如下图:生成的HTML在浏览器打开如图:自定义 Lint为什么需要自定义 Lint?Lint 需要自定义检查的...
  • Android静态代码扫描-自定义规则

    千次阅读 2017-03-15 12:34:18
    Android提供了一个代码检查工具Android Lint,能够对项目中潜在正确性、安全性、性能、可用性、可访问性...如果需要搭建一个企业内部的Android静态代码扫描工具,直接使用Android自带的Android Lint检查是不够的,会有
  • sonar代码扫描 覆盖率 单元测试不显示sonar代码扫描覆盖率 单元测试项目结构改变解决覆盖率为0 sonar代码扫描覆盖率 单元测试 其中看到覆盖率为0 单元测试未显示,需在项目中增加test包,结构和业务结构一致 项目...
  • 想做一个整合开源安全代码扫描工具的代码安全分析平台
  • eclipse 无用代码扫描工具UCDetector

    千次阅读 2017-06-27 11:33:23
    本文主要介绍UCDetector(无用代码扫描工具)使用方法及局限 对于沉积或多方接手开发的项目经常会遇到一坨一坨无用的代码,但一个一个类查找又相当费时,这里介绍一个eclipse插件扫描没有引用的类、方法、常量。 ...
  • ![图片说明](https://img-ask.csdn.net/upload/201702/07/1486431144_164792.png) 用的 HP的Fortify静态代码安全性扫描工具 进行的代码扫描
  • 全面剖析PMD静态代码扫描工具

    万次阅读 2018-06-12 15:39:22
    最近需要调研静态代码扫描工具cong1 调研对象pmd-bin-6.4.0【PMD可执行版本】· bin· designer.bat【界面工具,能将java源代码转化为AST(抽象语法树),个人推荐使用】· bgastviewer.bat【界面工具,与...
  • java项目使用Sonar进行质量管理百度搜索各种坑本文介绍1....搜索“增量代码扫描”,全都是一个人答案,而且是个老旧的答案。其实新版本,首页默认已经支持了增量代码扫码。 教程都是配置mysql,新版so
  • 阿里巴巴代码扫描插件

    千次阅读 2019-07-08 09:11:51
    这个扫描插件是由阿里巴巴 P3C 项目组研发的,大家可以从github上了解一下详细情况以及对应的使用。 ... 引用一段官方的话: 为了让开发者更加方便、快速将...该插件在扫描代码后,将不符合规约的代码按Blocker/Cr...
  • 无用代码扫描工具UCDetector

    千次阅读 2014-03-27 14:28:43
    本文主要介绍UCDetector(无用代码扫描工具)使用方法及局限   对于沉积或多方接手开发的项目经常会遇到一坨一坨无用的代码,但一个一个类查找又相当费时,这里介绍一个eclipse插件扫描没有引用的类、方法、...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 572,443
精华内容 228,977
关键字:

代码扫描