ControlFlag

基于机器学习的代码检测工具
授权协议 MIT
开发语言 C/C++
所属分类 管理和监控、 漏洞检测扫描和评估
软件类型 开源软件
地区 不详
投 递 者 谭裕
操作系统 Linux
开源组织 Intel
适用人群 未知
 软件概览

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

简要技术说明

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

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

目录结构(不断发展)

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

安装

ControlFlag 可以在 Linux 和 MacOS 上构建。

要求

  • CMake 3.4.3 或以上
  • C++17 兼容编译器
  • Tree-sitter 解析器(作为 cmake 的一部分自动下载)
  • GNU parallel(可选,如果您想生成自己的训练数据)

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

  • CentOS-7.6/Ubuntu-20.04 with g++-v10.2.0 for x86_64

在 MacOS 上测试构建配置

  • MacOS Mojave v10.14.6 with clang-1001.0.46.4 (Apple LLVM version 10.0.1) for x86_64(从命令行工具包获得)

构建

$ cd controlflag
$ cmake .
$ make -j
$ make test

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

 

 

 相关资料
  • 偏差与方差 《机器学习》 2.5 偏差与方差 - 周志华 偏差与方差分别是用于衡量一个模型泛化误差的两个方面; 模型的偏差,指的是模型预测的期望值与真实值之间的差; 模型的方差,指的是模型预测的期望值与预测值之间的差平方和; 在监督学习中,模型的泛化误差可分解为偏差、方差与噪声之和。 偏差用于描述模型的拟合能力; 方差用于描述模型的稳定性。 导致偏差和方差的原因 偏差通常是由于我们对学习算法做了错

  • 机器学习 概述 机器学习(Machine Learning,ML) 是使用计算机来彰显数据背后的真实含义,它为了把无序的数据转换成有用的信息。是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。 它是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及

  • 机器学习(Machine Learning,ML) 是使用计算机来彰显数据背后的真实含义,它为了把无序的数据转换成有用的信息。

  • 本文向大家介绍基于Python和Scikit-Learn的机器学习探索,包括了基于Python和Scikit-Learn的机器学习探索的使用技巧和注意事项,需要的朋友参考一下 你好,%用户名%! 我叫Alex,我在机器学习和网络图分析(主要是理论)有所涉猎。我同时在为一家俄罗斯移动运营商开发大数据产品。这是我第一次在网上写文章,不喜勿喷。 现在,很多人想开发高效的算法以及参加机器学习的竞赛。所以他

  • 随着 AlphaGo 在人机大战中一举成名,关于机器学习的研究开始广受关注,数据科学家也一跃成为 21世纪最性感的职业。关于机器学习和神经网络的广泛应用虽然兴起不久,但是对这两个密切关联的领域的研究其实已经持续了好几十年,早已形成了系统化的知识体系。对于想要踏入机器学习领域的初学者而言,理论知识的获取并非难事。

  • 机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。

  • 机器学习即Machine Learning,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。目的是让计算机模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断完善自身的性能。简单来讲,机器学习就是人们通过提供大量的相关数据来训练机器。

  • 本文向大家介绍关于机器学习中的强化学习,什么是Q学习?,包括了关于机器学习中的强化学习,什么是Q学习?的使用技巧和注意事项,需要的朋友参考一下 Q学习是一种强化学习算法,其中包含一个“代理”,它采取达到最佳解决方案所需的行动。 强化学习是“半监督”机器学习算法的一部分。将输入数据集提供给强化学习算法时,它会从此类数据集学习,否则会从其经验和环境中学习。 当“强化代理人”执行某项操作时,将根据其是否