ControlFlag 基于机器学习的代码检测工具开源项目

我要开发同款
匿名用户2021年10月21日
126阅读
开发技术C/C++
所属分类管理和监控、漏洞检测扫描和评估
授权协议MIT

作品详情

ControlFlag是一个自监督的特殊模式检测系统,它通过从开源存储库(在GitHub和其他版本控制系统上)挖掘这些模式来学习高级编程语言(如C/C++)控制结构中出现的典型模式。然后应用学习到的模式来检测用户代码中的异常模式。

简要技术说明

ControlFlag的模式异常检测系统可用于解决各种问题,例如排版错误检测、标记缺失的NULL检查等等。

下图显示了ControlFlag的两个主要阶段:(1)模式挖掘阶段,以及(2)异常模式扫描阶段。模式挖掘阶段是一个“训练阶段”,它在用户提供的GitHub仓库中挖掘典型模式,然后从挖掘的模式中构建决策树。另一方面,扫描阶段应用挖掘的模式来标记用户指定的目标仓库中的异常表达式。

目录结构(不断发展)src:用于排版错误检测系统的ControlFlag的源代码scripts:用于模式挖掘和扫描异常的脚本quick_start:运行快速启动测试的脚本github:用于下载GitHub仓库的脚本和数据。它还包含预处理的训练数据,其中包含使用C作为主要语言从6000个GitHub仓库中挖掘的模式。tests:单元测试安装

ControlFlag可以在Linux和MacOS上构建。

要求CMake3.4.3或以上C++17兼容编译器Tree-sitter 解析器(作为cmake的一部分自动下载)GNUparallel(可选,如果您想生成自己的训练数据)

在基于Linux的系统上测试构建配置

CentOS-7.6/Ubuntu-20.04withg++-v10.2.0forx86_64

在MacOS上测试构建配置

MacOSMojavev10.14.6withclang-1001.0.46.4(AppleLLVMversion10.0.1)forx86_64(从命令行工具包获得)构建$cdcontrolflag$cmake.$make-j$maketest

所有测试都maketest应该通过,但目前Verilog的测试由于版本不匹配问题而失败。Verilog支持是WIP。

 

 

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论