GitLab SAST:如何将Klocwork与GitLab一起使用

2023-11-16

GitLab SAST是GitLab和Klocwork的结合,GitLab是一种覆盖了整个DevOps生命周期的集成解决方案,Klocwork是一个静态代码分析和应用安全静态测试(SAST)工具。当将这两个工具一起使用时,可以为软件开发团队提供一个强大的GitLab SAST解决方案。这里,我们将阐明GitLab SAST的优势。

本文将包含如下几个部分:

  • GitLab是什么?
  • 为什么GitLab用户应该使用Klocwork
  • 如何使用GitLab和Klocwork
  • 如何设置GitLab SAST
  • GitLab SAST看起来怎么样

GitLab是什么?

GitLab是一个基于web的DevOps生命周期工具,它为wiki、问题跟踪和CI/CD Pipeline功能提供了一个Git存储库管理器。它由Gitlab Inc.开发,于2011年发布。

软件开发团队已经使用GitLab来统一开发人员的工作流程,并缩短DevOps周期时间——这使他们能够开发出更高质量的软件。

GitLab被来自各行各业的软件开发团队所使用,这些行业包括航空航天和国防、汽车、医疗设备以及视频游戏开发等。

为什么GitLab用户应该使用Klocwork

GitLab是一个流行的DevOps生命周期工具,因为它缩短了周期时间,降低了工程风险,帮助确保了应用程序更安全,并连接了缓冲器和工作台。因此,许多开发人员也使用像Klocwork这样的静态应用程序安全测试(SAST)工具来对GitLab进行补充是有道理的。

Klocwork如何对GitLab进行补充

Klocwork是一个静态代码分析和SAST工具,它被设计用来优化诸如CI/CD Pipeline之类的DevSecOps流程。

差异分析

通过使用来自服务器的系统上下文数据,Klocwork能够只分析已更改的文件,同时提供差异分析(Differential Analysis)结果,就像对整个系统进行了分析一样。这尽可能地缩短了您分析新代码和已更改代码的时间。

集成分析

通过使用来自服务器的系统上下文数据,Klocwork能够对您软件项目当前的健康状况进行快照。在每次集成分析(Integrated Analysis)之后,Klocwork会提供一个列表(列出检测到的编码问题),以及关于代码的其他报告。通过定期运行集成分析(Integrated Analysis),您能够提高代码的质量,确保代码库的一致性。

如何使用GitLab和Klocwork

由于Klocwork提供了一个命令行界面和灵活的工具来适应大多数工作流程,因此有很多方法可以将Klocwork的静态分析工具集成到像GitLab这样的持续集成系统中。这里列举的一个例子是如何使用开发人员的代码版本分支,将Klocwork集成到DevSecOps工作流程中。

 

上图设计的工作流程简单地展示了:开发人员如何创建各自的代码版本分支,以开发新的功能或解决已知的缺陷。一旦解决了新功能或bug,代码就会合并到主分支中,准备发布。

通过Klocwork的工具,您可以使用集成分析(Integration Analysis)工具在代码库中创建已知问题的基线。然后,这些结果通过web门户对所有人可见,并可以推迟到更晚的日期或被分配去修复。这个集成分析还提供了差异分析所用的完整的项目上下文和现有的问题数据。

有了差异分析(Differential Analysis),现在可以在服务器端检查开发人员是否提交了新的缺陷,并且如果代码版本分支被合并,是否会增加项目的技术债务。

然后,对其进行配置,可以通过GitLab向开发人员提供反馈:他们的提交包含了新的缺陷,因为他们新开发的代码不符合预设的质量检验标准(比如,无新的缺陷)。

如何设置GitLab SAST

下面是关于如何设置GitLab SAST的详细步骤说明:

1.安装GitLab

首先,您需要安装GitLab。如果您已经安装了,请跳到下一步。

安装GitLab:

  1. about.gitlab.com上点击安装GitLab
  2. 选择您喜欢的GitLab Omnibus包。
  3. 安装和配置必要的依赖项。
  4. 添加GitLab包存储库并安装该包。
  5. 浏览主机名并登录。
  6. 设置您的沟通偏好。
  7. 发布GitLab。

2. 安装Klocwork

接下来,您将下载Klocwork

如果您还没有使用Klocwork,您可以开始免费试用。

如果您已经是Klocwork的用户,请下载最新版本。

3. 配置GitLab运行脚本

运行脚本需要配置Klocwork分析将在哪里进行,可以通过ssh连接到现有的机器,也可以通过配置Klocwork的docker镜像来实现。

Klocwork为差异分析和集成分析提供了分析工具包,这意味着通过复制和解压缩工具包可以很容易地将其部署到机器上。

还应该为该运行脚本配置一个标记,以确定该运行脚本能够进行Klocwork分析,然后可以在工作步骤中使用该标记。在本文的这些示例中,已经使用了‘klocwork’标记。

4. Klocwork集成分析

集成分析提供了现有问题的基线、完整的项目上下文、web门户的健康状况概述以及趋势。它是Klocwork分析的主干,在这个例子中,我们将它配置为只在提交到主分支上运行,假定工作流程应该来自于提交触发。

为项目编辑“.gitlab-ci.yml” :

Klocwork服务器和相关项目的文件中引入变量可以简化配置。

集成分析(Integration Analysis)是基于命令行的,这里它被过滤了,只作为测试阶段的一部分在主分支上运行。使用的捕获、分析和加载流程与往常一样,但是有一个更改:使用提交引用作为Klocwork基线构建的名称。这在之后的差异分析中也会被用作参考。

5. Klocwork差异分析

随着集成分析的执行,而且项目中至少有一个可用的基线,现在不需要先前的本地分析数据就可以快速地对代码变更进行分析。

在项目的同一个yml文件中,还可以配置差异分析(Differential Analysis)。这一次在除了主分支(即任何开发人员的代码版本分支)之外的所有分支上运行,配置差异分析以运行Klocwork差异工具‘kwciagent’。所采取的步骤如下:

  1. 使用Klocwork的工具捕获构建数据。
  2. 生成一个文本文件,该文件应该包含这个提交中已更改文件的列表,不需要任何格式(每行一个文件)。显示的是一个git diff命令生成的示例,它需要引用diff,我们可以使用最后的基线构建名称。
  3. 使用‘kwciagent create’为Klocwork创建一个本地工作区。
  4. 运行分析,但是它被过滤只在更改的文件上运行,绕过作为参数的diff列表文本文件。
  5. 还可以为检测到的‘新’问题(如果有的话)创建一个工件,这里是创建一个xml。
  6. 通过检查工件的问题阈值,也可能导致CI运行失败。在这个例子中,如果存在任何新问题,就会导致CI运行失败。

GitLab SAST看起来怎么样

随着代码版本分支的创建和拉取请求的提交,您将可以获得分析运行的概况:

在上述的差异分析(Differential Analysis)中,请注意:由于与基线相关的代码引入了新的问题,运行被标记为失败。它还通过打勾和交叉显示:它在第二阶段失败了,这在当前的例子中意味着构建是成功的,但测试阶段失败了。

在拉取请求中,现在可以查看在开发功能分支中的构建测试过程是否成功,并提供关于合并的警告。

还请注意:在配置过程中,它被配置为存档diff结果文件和更改列表,可以从管道运行中下载。

GitLab SAST——完整的循环

随着拉取请求可以对合并显示警告,使得解决缺陷并重新提交成为了可能。GitLab将自动地对新的提交运行差异分析,并更新拉取请求的状态。

一旦合并到主分支中,一个完整的集成就会再次执行,以创建新的基线,捕获合并所做的更改,显示如下图。

开始使用GitLab SAST

今天就开始使用GitLab和Klocwork优化您的DevSecOps流程吧。

                                                                                                            “原创内容,转载请标明出处”

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GitLab SAST:如何将Klocwork与GitLab一起使用 的相关文章

随机推荐

  • qt day1

    实现图形化登录界面 include myhomework h include
  • CUDA 动态链接库与静态链接库

    参考 CUDA C BEST PRACTICES GUIDE chapter 15 PREPARING FOR DEPLOYMENT 关于部署CUDA加速的程序时 往往对CUDA加速的程序编译为动态链接库或者静态链接库 这两者导致的区别是
  • python 8行代码搞定 AES加解密

    python 实现AES加解密相关的知识 可以参考以下文章 python实现AES加密解密 但该文章中 对于加密前数据的补全 及解密后去掉多余数据 由作者自己进行了封装 导致代码较为复杂 实际可以使用库中pad和unpad来解决该问题 而使
  • vue中实现高德地图上打点,并添加点击事件,

    文章目录 1 在地图上打点 并定义 click 事件 2 数据由websocket订阅 后台实时推送 3 实时失效 1 在地图上打点 并定义 click 事件 地图上打点 并定义click事件 param map map对象 param i
  • iviewui中表格控件中render的使用示例

    示例了如何在表格中显示按钮 如何将代码转化为文字 iviewui新版本中 如果内容转化输出时 如果不使用render函数 会显示不正常 老版本不存在这个问题
  • 阿里分布式事务框架-seata源码分析

    详细可参考 AT下流程图 TCC下流程图 基于该流程图可大致了解seata中TC TM RM这3个角色在seata框架中的作用 以及两种模式的优缺点
  • 数学建模常用模型(六):时间序列预测

    数学建模常用模型 六 时间序列预测 时间序列预测是数学建模中的一个重要领域 用于预测时间序列数据中未来的趋势和模式 时间序列预测可以帮助我们了解数据的演变规律 做出合理的决策和规划 这是我自己总结的一些代码和资料 本文中的代码以及参考书籍等
  • 移动Web应用的性能及其未来趋势

    在一篇深入的实质性文章中 某iOS开发公司的老板Drew Crawford表示他认为目前移动Web应用运行迟缓 而且并不指望能在不久的将来看到重大改善 并列出了以上观点的全部原因 该文章是此前某篇博客文章的后续之作 在那篇文章中 他指出 与
  • el-select 点击输入框不弹出选项的下拉框

    el select 点击输入框不弹出选项的下拉框 重点是绑定click事件 用它的event判断点击的是输入框还是下拉箭头 如果是输入框 就让它失去焦点 就不会弹出选项的下拉框
  • JSTL在JSP页面上的使用

    1 JSTL标准标签库 JSTL JSP标准标签库 JSTL 是一个JSP标签集合 它封装了JSP应用的通用核心功能 JSTL支持通用的 结构化的任务 比如迭代 条件判断 XML文档操作 国际化标签 SQL标签 除了这些 它还提供了一个框架
  • QNX的应用移植迁移到Linux

    如果你认为本系列文章对你有所帮助 请大家有钱的捧个钱场 点击此处赞助 赞助额1元起步 多少随意 author 锋影 e mail 174176320 qq com 近年来许多嵌入式产品将是公司从自营到开放源代码平台为他们提供更多灵活性和成本
  • 基于微信小程序的manster云音乐小程序

    代码地址 https gitee com manster1231 master cloud music 介绍 基于网易云音乐真实接口开发的音乐小程序 软件架构 Nodejs作为后端 跨站请求伪造 CSRF 伪造请求头 调用官方 API 网易
  • 基于TCP的服务器端/客户端

    TCP服务器端默认函数调用顺序 socket 创建socket bind 分配socket地址 listen 等待连接请求状态 accept 允许连接 read write 数据交换 close 断开连接 等待连接请求状态 int list
  • 数据挖掘-数据清理-噪声数据

    数据清理 噪声数据 数据清理例程试图填充缺失的值 光滑噪声并识别离群点 纠正数据中的不一致 噪声数据 噪声 noise 是被测量的变量的随机误差或方差 光滑数据 去除噪声方法如下 1 分箱 binning 分箱方法通过考察数据的近邻 即周围
  • Linux内核中断之获取中断号

    目录 一 调用流程 二 应用举例 1 查找中断号 2 dts配置 3 驱动函数 Linux内核中可使用platform get irq 函数获取dts文件中设置的中断号 函数原型 int platform get irq struct pl
  • 保姆级Pythpn连载讲义:第五篇注释相关

    注释 目标 注释的作用 单行注释 行注释 多行注释 块注释 01 注释的作用 使用用自己熟悉的语言 在程序中对某些代码进行标注说明 增强程序的可读性 外链图片转存失败 源站可能有防盗链机制 建议将图片保存下来直接上传 img caIBaVK
  • 2012,这一年我该做些啥

    这一年 我应该完成2011年没有完成的事情 让自己在2012没有遗憾 这一年 我应该想想未来的路 给自己一个职业规划 这一年 我应该提升一下自己的技术 让自己更加专业 这一年 我应该提升一下自己的思想 让自己的头脑更加丰富 这一年 我应该养
  • 元素出栈、入栈顺序的合法性(判断一个字符串是否按照出栈顺序)

    假设入栈的序列 1 2 3 4 5 出栈序列为 4 5 3 2 1 判断出栈序列是否合法 实现思路 总的来说就是模拟元素的出入栈过程 并进行判断 首先 判断出栈序列和入栈序列的元素个数是否相等 若不相等 则不合法 若相等 则继续进行判断 其
  • pyqt 打开并显示excel表单

    参考链接 Python PyQt5 图形可视化界面 7 打开表格并显示内容 简书 from PyQt5 import QtCore QtGui QtWidgets from PyQt5 QtGui import QIcon from PyQ
  • GitLab SAST:如何将Klocwork与GitLab一起使用

    GitLab SAST是GitLab和Klocwork的结合 GitLab是一种覆盖了整个DevOps生命周期的集成解决方案 Klocwork是一个静态代码分析和应用安全静态测试 SAST 工具 当将这两个工具一起使用时 可以为软件开发团队