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

2023-05-16

  前一段时间公司试用了一下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的博客

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

当然,klockwork软件有服务端与客户端之分,以上只针对最简单方式进行说明。
 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用Klockwork进行代码分析简单操作流程 的相关文章

随机推荐

  • 一次通过jvm排查堆内存不断增大最后导致docker容器自动重启的问题

    1 事件背景 xff1a 生产有个定时任务 xff0c 经常跑不出数据 xff0c 通过监控发现对应的那台机器内存一跑这个定时任务就会陡增 由于应用部署在容器中 xff0c 当内存跑满后会自动重启 xff0c 所以导致定时任务无法执行完毕
  • jvm 中的一些命令,方便排查jvm的一些状况

    1 ps ef grep xxx 找到应用的进程号 jmap heap pid 查看对应进程的jvm占用内存情况 命令 xff1a jmap histo live pid 描述 xff1a 显示堆中对象的统计信息 jmap histo pi
  • session如何在多用户中区分

    1 会话 客户端向服务端发送请求 xff0c 服务端接受请求并响应这样一次连续的过程 xff0c 称为一个会话 session 2 可实现登录访问控制功能 login jsp doLogin jsp index jsp 1 进入登录页面lo
  • 关于springboot 从controller返回到html页面

    一 不用模板引擎的时候 这里列出以下几种情况进行分析 1 yml配置 controller 静态文件目录 xff1a 结果 xff1a 结论 xff1a 此时访问的error12 html是static目录下的 spring配置视图为的时候
  • 【Kali_014】Kconsole虚拟终端设置半透明

    打开终端菜单 gt Settings gt Edit Current Profile gt Appearance gt Edit gt Background transparency
  • 用fastboot烧录system.img 出现remote: data too large解决办法

    用fastboot命令烧录 xff0c 提示如下错误信息 xff1a target reported max download size of 536870912 bytes erasing 39 system 39 OKAY 0 016s
  • MTK Android为某个APP单独添加selinux配置文件

    需求 MTK Android 11 test是一个system APP 涉及到许多个selinux的权限 xff0c 不想影响所有的system APP的权限 xff0c 需要单独为test设定selinux 方法 domain devic
  • 2012年展望

    由于各种原因 xff0c 客观的 主观的 不过归根结底还是主观的多一些 xff0c 2011年整体过的很颓废 xff0c 上班大多在上网 xff0c 工作上几乎没有一点成绩 xff0c 自己也是很不满意 2012年世界末日都快来了 xff0
  • http和ftp协议的区别

    项目中应用到ftp xff0c 将ftp的笔记上传一下 简单的说 xff1a HTTP是超文本传输协议 xff1b 面向网页的 FTP是File Transfer Protocol 文件传输协议 xff1b 面向文件的 1 FTP 1 FT
  • Python爬虫(4)获得所有Top250部电影的信息并存入数据库

    上次我们完成了单页电影的获取并保存到了Excel文件中 xff0c 不知道小伙伴们都完成了没 xff1f 有没有把Top250部电影都保存下来的 xff1f 在编写这些代码过程中遇到什么问题了没 xff1f 如果遇到但是没有解决 xff0c
  • c#笔记-模式匹配

    模式匹配 模式匹配可以判断一个值的类型和内容 可以判断嵌套的属性 xff0c 但只能和常量进行比较 模式匹配使用is表达式 xff0c 或是在switch选择 xff0c 和switch表达式的分支块中启用 模式匹配使用专有的关键字或运算符
  • typeScript+egg.js+node.js后台项目搭建(一)

    typeScript egg js node js后台项目搭建 一 1 安装node js 地址 https nodejs org en 下载安装后 打开控制台cmd 输入 node v 在安装ts 可以参考typeScript中文官网 n
  • CGroup 介绍、应用实例及原理描述(已发表于IBM开发者论坛)

    插播小广告 xff0c 本人的 大话 Java性能优化 一书已经在亚马逊 京东 当当 天猫出售 xff0c 提前谢谢大家支持 原文请查看 xff1a http www ibm com developerworks cn linux 1506
  • python + celery简例

    在网上找了半天 xff0c 也没找到完整的例子 xff0c 自己写吧 1 一个队列 自定义10个优先级 xff0c 修改默认celery队列名称 1 testcelery py from celery import Celery impor
  • java+selenium获取动态下拉列表元素

    做自动化的时候 xff0c 遇到这么一个闹心问题 xff1a 研发用html里的 lt div input gt 方式 xff0c 所以无法使用select获取列表元素 原本使用Robot也可以定位 xff0c 但是headless模式 x
  • Redis安装和配置

    网上有海量的Redis文章 xff0c 写的都很详细 这里就是简单记录一下自己查aof问题过程中遇到的问题 xff0c 主要是aof文件所在目录在redis conf里的位置 1 在ubuntu16上安装Redis sudo apt get
  • mysql 主从部署

    在ubuntu 16上 xff0c 配置mysql 主从服务器 查看mysql主从命令 show variables like 39 server id 39 show variables like 39 log bin 39 show m
  • 编写的windows程序,崩溃时产生crash dump文件的办法 .

    一 引言 dump文件是C 43 43 程序发生异常时 xff0c 保存当时程序运行状态的文件 xff0c 是调试异常程序重要的方法 xff0c 所以程序崩溃时 xff0c 除了日志文件 xff0c dump文件便成了我们查找错误的最后一根
  • 网络性能测试工具iperf详细使用图文教程

    Iperf是一个网络性能测试工具 Iperf可以测试TCP和UDP带宽质量 Iperf可以测量最大TCP带宽 xff0c 具有多种参数和UDP特性 Iperf可以报告带宽 xff0c 延迟抖动和数据包丢失 利用Iperf这一特性 xff0c
  • 使用Klockwork进行代码分析简单操作流程

    前一段时间公司试用了一下klockwork公司的klockwork代码静态分析软件 xff0c 我所在项目组进行了试点 xff0c 试用后感觉不错 xff0c 有几大亮点 xff1a 1 xff09 对代码进行静态分析 xff0c 无需改动