首页 > 其他分享 >CodeQL安装及使用

CodeQL安装及使用

时间:2024-08-08 16:52:16浏览次数:6  
标签:CLI codeql CodeQL -- VSCode 使用 安装

一、关于CodeQL

1.CodeQL简介

CodeQL是一种将查询语言的概念引入源代码分析的工具,为开发者提供了全新的方式来发现和理解代码中的潜在问题。自2019年GitHub收购Semmle并将CodeQL集成到其平台以来,CodeQL已成为GitHub Advanced Security功能的一部分,通过GitHub的Code Scanning功能,用户可以轻松地将CodeQL集成到他们的开发流程中,实现持续的代码安全检查。

2.工作原理

CodeQL的整体工作流程基于数据库的建立和查询的执行。首先,CodeQL的Extractor模块会对源代码进行分析和提取,生成一个包含代码信息的数据库(如AST、CFG等)。然后,用户可以使用CodeQL查询语言编写查询语句,这些查询语句会在数据库中搜索特定的代码模式。查询执行后,CodeQL会返回与查询模式匹配的所有实例,并提供修复建议。

3.支持的编程语言

CodeQL支持多种编程语言,包括Java、C/C++、Python、JavaScript、Go等,这使得它成为多语言项目的理想选择。

image

二、安装CodeQL

CodeQL的安装和配置相对简单,用户可以下载CodeQL CLI(命令行界面)和相关的QL规则库,然后按照官方文档进行配置。此外,CodeQL还提供了VS Code插件等集成工具,方便用户在IDE中直接使用。

1.下载CodeQL CLI和CodeQL SDK

(1)访问GitHub的发布页面

(2)选择合适的版本

  • 根据你的操作系统(Windows、Linux、MacOS)选择相应的版本。
  • 注意选择最新或适合你项目需求的版本。

image

image

(3)下载文件

  • 对于国内用户,由于直接从GitHub下载可能会遇到速度较慢或中断的问题,可以考虑使用国内的镜像源或下载工具。

2.安装CodeQL CLI

(1)解压下载的文件

  • 将下载的CodeQL CLI安装包解压到你选择的安装目录,例如C:\Software\codeql(Windows)或/usr/local/codeql(Linux/MacOS)。

(2)设置环境变量

  • 将CodeQL CLI的安装目录添加到你的系统环境变量中,以便在命令行中直接调用codeql命令。
  • 在Windows上,可以通过“系统属性”->“高级”->“环境变量”来设置。
  • 在Linux/MacOS上,可以通过修改~/.bashrc~/.zshrc或类似的shell配置文件,并添加类似export PATH=$PATH:/usr/local/codeql的行来实现。

image

(3)验证安装

  • 打开命令行或终端,输入codeql --version,如果显示CodeQL CLI的版本信息,则表示安装成功。

image

3.安装CodeQL SDK

(1)解压SDK文件

  • 将下载的CodeQL SDK安装包解压到你选择的目录,通常与CodeQL CLI安装在同一目录下或附近。

(2)查看支持的规则集

  • 打开命令行或终端,使用codeql pack ls命令查看当前SDK中支持的规则集。

image

4.配置CodeQL环境(可选)

如果你打算使用Visual Studio Code(VSCode)来开发和调试CodeQL规则,你还需要在VSCode中安装CodeQL插件,并配置CodeQL CLI的路径。

VSCode插件的安装方法:在VSCode的扩展市场中搜索“CodeQL”并安装。

image

配置CodeQL CLI路径:在VSCode的设置中,找到CodeQL插件的相关设置,并指定CodeQL CLI的安装路径。

image

三、使用CodeQL进行代码分析

1.使用CodeQL生成数据库

(1)准备源代码

  • 确保你有需要分析的源代码,并知道源代码的语言类型(如Java、Python等)。

(2)使用CodeQL CLI创建数据库

  • 打开命令行,切换到源代码所在的目录。
  • 执行创建数据库的命令,例如:codeql database create <数据库名> --language=<语言标识符> --source-root=<源码路径>
  • 如果源代码是一个Maven项目,可能需要使用Maven命令来构建项目,并在创建数据库时指定该命令--command="mvn clean install"

Language对应关系如下:

Language Identity
C/C++ cpp
C# csharp
Go go
Java java
javascript/Typescript javascript
Python python

2.VSCode内使用CodeQL

(1)Vscode添加生成的数据库

image

(2) VSCode 打开扫描规则库,也就是sdk的解压后的包

image

(3)执行扫描规则

选择具体语言的规则进行扫描,例如:java语言的规则。

ql后缀的文件是规则扫描文件,比如:\codeql-main\java\ql\src\Security\CWE

image

3.命令行方式使用CodeQL

使用 VSCode 图形化工具如上,也可也直接使用命令,快捷、方便

执行扫描规则:

codeql database analyze <项目生成的数据库名路径> <规则库路径> --format=csv --output=result.csv

--format:结果输出格式

--output:结果文件输出路径

codeql命令的详细使用方法可查看:About the CodeQL CLI - GitHub Docs

标签:CLI,codeql,CodeQL,--,VSCode,使用,安装
From: https://www.cnblogs.com/you-fish/p/18349266

相关文章

  • [VBA]使用VBA在Excel中 操作 形状shape 对象
            excel已关闭地图插件,对于想做地图可视化的,用形状来操作是一种办法,就是要自行找到合适的地图形状,修改形状颜色等就可以用于可视化展示不同省市销量、人口等数据。引言在Excel中,通过VBA(VisualBasicforApplications)可以极大地增强数据可视化和报告自动化......
  • 在PhpStudy中安装joomla5.1
    joomla5.1对环境要求是PHP8.1以上;mysql8.0.13以上本地使用的phpstudy安装环境,phpstudyphp版本可以到8.2,但mysql版本只有8.0.12,刚好离要求的版本低一点,经过一番折腾终于安装成功,下面记录下安装过程中出现的问题。一、安装PHP8.21、如果PhpStudy没有安装PHP8.2,需要在控制......
  • 使用dynamic debug帮助调试
    你一定在kernelsourcecode中看过很多pr_debug()/dev_dbg()/print_hex_dump_debug()吧,这些debug语句提供更多的信息帮助我们了解内核运行流程或是定位问题,可以在运行时按per-callsite单独开启/关闭。那我们来看一下它是如何实现和使用的吧。一、kernel configuration在编译时,......
  • Ollama 与 RAG 一起用于本地使用以与 pdf 聊天
    我正在尝试通过使用RAG在本地计算机上与pdf聊天来构建ollama用法。我遵循了这个GitHub存储库:https://github.com/tonykipkemboi/ollama_pdf_rag/tree/main问题是当我运行代码时,没有错误,但代码将在嵌入时停止并会之后停止。我已附上所有可能的日志以及ollama......
  • Ubuntu22.04上安装esp-idf
    一、安装准备建议使用Ubuntu20.04或Ubuntu22.04操作系统为了在ESP32-C3中使用ESP-IDF,需要安装一些依赖包sudoapt-getinstallgitwgetflexbisongperfpython3python3-pippython3-venvcmakeninja-buildccachelibffi-devlibssl-devdfu-utillibusb-1.0-0......
  • python3如何使用‘pexpect’自动与串口交互?
    如何在Windows中使用python'pexpect'自动与串口(例如:COM3)交互并在开机时通过串口登录嵌入式开发板时输入用户密码?ser=serial.Serial(port=serial_port,baudrate=baudrate,bytesize=bytesize,parity=parity,stopbits=stopbits,timeout=timeout)channel=pexpect.fdpexp......
  • 使用wx制作一个桌面软件
    前面因为抓取数据,为了方便期间做了各界面,用到了wx,觉得很好用,所以最近几天专门看了一下wx的使用,并练习了一下。代码:importos,sys,re,timeimportwx,wx.xrc,wx.adv,wx.gridimportjson,math,randomimportsubprocess,threadingfromwin32apiimportGetSystemMetricsfromf......
  • Java使用POI导入excel记录
    1.controller:@PostMapping("/import-excel")@TransactionalpublicAjaxResultimportExcel(@RequestPart(value="file")MultipartFilefile)throwsException{Stringresult=manufacturerService.importExcel(file);returnAjaxResult.......
  • 都2024年了,不会还有人不知道怎么安装最新版Android studio吧?
    目录JDK安装与配置一、下载JDK二、JDK安装三、JDK的环境配置四、JDK的配置验证Androidstudio安装Androidstudio连接手机真机调试(以华为鸿蒙为例)一、新建一个android项目二、进入项目面板三、配置AndroidStudio四、安装手机驱动程序五、连接手机六、运行程序......
  • 2024最新版IntelliJ IDEA安装教程(非常详细)从零基础入门到精通,看完这一篇就够了_idea20
    IDEA的使用IDEA的简单介绍IDEA的主要优势IDEA的卸载IDEA的安装第一个程序:HelloWorld结束语IDEA的简单介绍IDEA全称IntelliJIDEA,是Java语言对的集成开发环境,IDEA在业界被认为是公认最好的Java开发工具。IDEA的主要优势✅功能强大①强大的整合能力。比如:GitMavenSp......