使用Klockwork进行代码分析简单操作流程

  前一段时间公司试用了一下klockwork公司的klockwork代码静态分析软件,我所在项目组进行了试点,试用后感觉不错,有几大亮点:

        1)对代码进行静态分析,无需改动任何源码文件;

        2)分析出来的缺陷问题准率比较高。根据我使用情况来看,达到90%以上;

        3)针对问题的描述非常清晰,有详细的问题产生流程(具体每一步骤所涉及的源代码文件、行数),基本上一看就清楚问题的产生来源;

        4)具备跨文件/模块的分析能力(这一点对于大型项目尤其重要)。

        当然,目前为止我也只是试用了该软件关于问题缺陷的分析功能,还有很多高级功能没有用到。以下针对该软件的安装及简单使用进行说明。

        Linux系统软件安装及操作:

        1)安装服务端程序:

      ./kw-server-installer.9.2.1.7276.linux.sh -i /usr/local/kwserver –a

      -i选项设置安装目录,-a不打印授权协议信息

      注意:必须以普通用户进行服务端程序的安装。

2)拷贝license文件到安装目录下的prjects_root/licenses目录;

3)启动klockwork软件:  
             /usr/local/kwserver/bin/kwservice -r /usr/local/kwserver/projects_root/ start
             Klockwork软件自带了mysql数据库,其启动时也会进行数据库的启动,可能造成其自带数据库端口号与系统数据库端口号冲突,此时通过如下命令进行数据库端口号的修改:
             /usr/local/kwserver/bin/kwservice –r /usr/local/kwserver/projects_root/ set-service-property database port 3310
            如上命令将数据库缺省的3306端口改为3310。

     注意:以上命令只能由普通用户执行(非root用户)。

4)代码静态分析:

     a)采集程序信息
                 进入软件项目目录,运行如下命令采集程序信息(第一次运行该命令必须保证完整make):

          /usr/local/kwserver/bin/kwinject -o xxx.out make

          其中,xxx.out为所采集程序信息的输出文件,为避免遗忘,名称与项目名称一致。

     b)建立静态分析工程:
                 /usr/local/kwserver/bin/kwadmin create-project xxx --language c,cxx

         其中,xxx为静态分析工程名称(即分析结果项目名称)。c,cxx表示该工程为C/C++工程(当前支持c,cxx,java,csharp,多种语言中用“,”分隔)。可通过如下命令查看当前存在的工程:/usr/local/kwserver/bin/kwadmin list-projects。

      c)对代码进行静态分析:
                  /usr/local/kwserver/bin/kwbuildproject -f -o ./table1 xxx.out

          其中,-f表示强制进行项目的build,即使目标目录中已经存在上次build后的数据。 -o设置分析结果目录,./table1为静态分析结果数据的存放目录,可以根据需要进行修改。xxx.out为前述生成的静态分析工程名称。如果一个项目涉及多个静态分析工程,则多个工程间用空格进行分隔。

      d)加载分析结果:
                  /usr/local/kwserver/bin/kwadmin load xxx ./table1/

          其中,xxx为静态分析工程名称,./table1为静态分析结果数据目录。

5)通过http://xxx.xxx.xxx.xxx:8080地址查看以上静态分析结果,其中xxx.xxx.xxx.xxx为klockwork服务器地址,截图如下:

    

使用Klockwork进行代码分析简单操作流程 - china.ygw - ^_^ china.ygw的博客

 

使用Klockwork进行代码分析简单操作流程 - china.ygw - ^_^ china.ygw的博客

 

使用Klockwork进行代码分析简单操作流程 - china.ygw - ^_^ china.ygw的博客

 

使用Klockwork进行代码分析简单操作流程 - china.ygw - ^_^ china.ygw的博客

 Windows系统软件安装及操作:
1)运行服务端安装程序,期间自动安装所需要的Java 2 SE Runtime Environment 6u22及相应的.Net Framework;
2)安装过程说明:
使用Klockwork进行代码分析简单操作流程 - china.ygw - ^_^ china.ygw的博客
  
      该目录存放服务器数据(含License文件)
 
使用Klockwork进行代码分析简单操作流程 - china.ygw - ^_^ china.ygw的博客
 
      缺省的服务器端口为8080,数据库端口为3306,License服务器端口为27000。
3)安装完成后,通过菜单的“Start Klockwork Servers”菜单项进行启动,然后运行Klockwork Management Console进行操作;
4)代码静态分析流程:
使用Klockwork进行代码分析简单操作流程 - china.ygw - ^_^ china.ygw的博客
      a)如上图,通过klockwork management console的File菜单New Project菜单项建立新工程,在新工程窗体中选中C,C++语言。注意:C/C++语言不能与C#语言同时选中。
使用Klockwork进行代码分析简单操作流程 - china.ygw - ^_^ china.ygw的博客
        b)如上图,选择代码工程,选择源代码文件编码格式;
使用Klockwork进行代码分析简单操作流程 - china.ygw - ^_^ china.ygw的博客
       c)如上图,选择所有选项,以保证分析结果更详细;
 
使用Klockwork进行代码分析简单操作流程 - china.ygw - ^_^ china.ygw的博客
       d)如上图, 新建立的工程如上图所示,选中该工程,点击右键菜单的“Build”菜单进行工程的代码静态分析;
使用Klockwork进行代码分析简单操作流程 - china.ygw - ^_^ china.ygw的博客
        e)如上图, 显示Build进度,indow自动将Linux系统中的多个分析步骤集成于一体,只需要简单的Build就完成一切。

当然,klockwork软件有服务端与客户端之分,以上只针对最简单方式进行说明。
 
Klocwork 介绍 Klocwork - 源代码缺陷自动分析工具概述:Klocwork 软件是 Klocwork 公司基于专利技术分析引擎开发的,综合应用了多种近年来 最先进的静态分析技术,是出色的软件静态分析软件。Klocwork 产品与其它同类产品相比, 具有很多突出的特征:Klocwork 支持的语言种类多,能够分析 C、C++和 Java 代码;能够发 现的软件缺陷种类全面,既包括软件质量缺陷,又包括安全漏洞方面的缺陷,还可以分析对软 件架构、编程规则的违反情况;软件分析功能全面,既能分析软件的缺陷,又能进行可视化的 架构分析、优化;能够分析软件的各种度量;能够提供与多种主流 IDE 开发环境的集成;能 够分析超大型软件(上千万代码行)。主要功能: 缺陷检测提供多角度的各种缺陷类型的分析。自动化的缺陷检测功能易于使用,定制灵活,具有图 形化的构建和报表管理图形界面,拥有业界领先的消息过滤器,极具柔性的配置,和强大的学 习调整知识库;Klocwork 能够分析 C/C++和 Java 代码,生成代码问题报告,能够发现的缺陷 类型举例。(详细参见附录): C/C++缺陷类型样例 空指针释放 内存管理问题(如:内存泄漏) 数组越界 未初始化数据使用 编码风格问题(如:在条件中赋值) Java 缺陷类型样例 效率错误(如:空的 finalize 方法) 可维护性问题(如:空的 catch 从句) 可靠性问题(如资源泄漏) 安全漏洞检测Klocwork 确信软件安全性是软件质量中一个重要的、并越来越受重视的方面。同样的, 所有的 Klocwork 安全漏洞分析是基于市场领先的缺陷检测能力,从原来的缺陷检测分离出来 单独的安全漏洞检测和违反推荐的安全代码最佳实践的缺陷检测。 能够检测到的安全漏洞类型 举例(详细参见附录) C/C++安全漏洞分类 访问控制缺陷 缓冲区溢出 DNS 欺骗 忽略返回值 注入缺陷 不安全的存储 未经验证的用户输入 Java 安全漏洞分类 拒绝服务 注入缺陷(如:SQL 注入、进程注入等) 未经验证的输入 移动代码安全 有漏洞的会话管理 跨站点脚本 出错处理不当
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值