惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
M
MIT News - Artificial intelligence
MyScale Blog
MyScale Blog
博客园_首页
G
Google Developers Blog
博客园 - 【当耐特】
美团技术团队
博客园 - 聂微东
Stack Overflow Blog
Stack Overflow Blog
Vercel News
Vercel News
小众软件
小众软件
博客园 - 司徒正美
雷峰网
雷峰网
T
Tailwind CSS Blog
V
V2EX
博客园 - 三生石上(FineUI控件)
F
Fortinet All Blogs
罗磊的独立博客
量子位
P
Proofpoint News Feed
Microsoft Azure Blog
Microsoft Azure Blog
月光博客
月光博客
A
About on SuperTechFans
Hugging Face - Blog
Hugging Face - Blog

Gitee 官方博客

花几千块报志愿之前,先把这 7 个问题问清楚 Gitee 618 年中盛典开启:企业版新购最高送一年,PocketClaw 首次限时折扣 Gitee 成为首批「供应链安全号」成员单位,携手共建国产工业软件生态 七大赛道 TOP 10 公布!Gitee 年度开源项目评选结果正式揭晓 GLM-Image 上线模力方舟:首个国产芯片训练的多模态图像生成模型 「开源技术」正式纳入国家职教体系,Gitee 已为开源教育落地做好准备 Gitee 软件工厂:以密级管理为底座,构建符合国家保密资质的安全研发体系 Claude Code 的代码安全困境:插件机制齐全,却绕不开模型幻觉 北京中关村学院入驻 Gitee:打造 AI for Science 教学新范式 Gitee 移动软件工厂:突破网络限制的开发新模式 从依赖到可控:开源基础设施的国家命题 模力方舟 MCP Server 上线:在 Cursor 里玩 AI 生图+语音 【国内首家】 Gitee Repo 通过信通院《可信制品管理能力分级要求》先进级(最高级)评估 Gitee Repo 助力关键领域 DevSecOps落地:构建安全可控的制品管理体系 会翻译、懂产品、还能画头像:Gitee 智能三连上线! Gitee Pipe:关键领域 DevSecOps 的核心引擎 时代命题下的民营科技担当:从备份战略看 Gitee 的国家定位 没人喜欢写 README?Gitee:现在你不用写了 关键领域软件工厂的安全中枢:Gitee Scan 全面升级供应链检测能力 Gitee MCP 现已支持远程访问:无需本地部署,AI 助手即插即用 Gitee 企业版效能度量全面升级:构建可衡量、可洞察、可优化的研发体系 高标准+安全可控:关键领域研发为什么选择 Gitee Code? 河南农担 x Gitee:以数字化赋能「三农」信贷服务新范式 Gitee Test:驱动软件工厂DevSecOps 落地,保障关键领域安全稳定 马建仓 AI 助手全流程升级:更聪明的研发搭子,更专业的协作助手 从公益初心到商业化探索,开源中国助推中国开源生态之路 以知识管理赋能 DevSecOps,Gitee Wiki 加速关键领域软件自主演进 Gitee 企业版测试管理全面升级:流程更顺畅,交付更可靠 Gitee 企业版 AI 队友邀测开启:程序员的贴身助理来了 Gitee 构件治理实践:CBB 分布式管理助力软件工厂建设
深度解读静态代码扫描,如何更低成本提升代码质量
Gitee · 2021-07-05 · via Gitee 官方博客

从代码的质量左移讲起

所谓质量左移是指代码在测试之前,在编码阶段就已经介入了代码的质量检测,提前发现并修复代码问题,有效减少测试时间,提高研发效率,发现BUG越晚,修复的成本越大。

源代码作为软件的最初原始形态,其安全缺陷是导致软件漏洞的直接根源。因此,通过静态方法分析发现源代码中的安全缺陷是降低软件潜在漏洞的重要方法。

代码保障,保障的是什么?

代码保障的三个核心:代码缺陷,代码安全,代码规范

所谓代码缺陷,即为代码中存在的某种破坏正常运行能力的问题、错误,或者隐藏的功能缺陷。IEEE729-1983对缺陷有一个标准的定义:从产品内部看,缺陷是软件产品开发或维护过程中存在的错误、毛病等各种问题;从产品外部看,缺陷是系统所需要实现的某种功能的失效或违背。

代码安全方面,当今互联网安全形势严峻,2020年上半年,国家信息中心安全漏洞共享平台(CNNVD)所收录的漏洞总数为7780,较2019年上半年增加1377个,同比增长17.7%,收录总数达到历史新高。其中包括高危漏洞高达2609个(占33.7%,同比增长8.9%)。

代码规范方面,团队统一代码规范,有助于提升代码可读性以及工作效率,但是现实中研发团队缺乏工具审核规范,缺乏整改规范的示范用例,造成管理代码规范执行起来效果往往是事倍功半。

质量左移最佳方案-静态代码扫描

现如今,日常业务的代码保障工作在生产环节中已经变得越来越重要。一旦出现资损故障更容易引发重大损失。就目前来说,有效的防控手段一般有:

  1. 项目上线前 Code Review,提前发现问题,解决问题;
  2. 线上实时监控,出现问题时执行预案,及时修复。

由上可以看出,上线后的修复只能减小资产损失规模,要想真正避免资产损失还得靠人工 Code Review 在项目上线之前发现问题。然而,一方面 Code Review 需要额外的人工介入,且其质量参差不齐,无法得到保障;另一方面,高质量的 Code Review 也会花费较多时间,成本较高。

那么有没有一种两全其美的方法,以一种低成本的方式,自动发现代码中存在的资损风险,从而保障代码质量?答案是:代码扫描

代码扫描根据编译状态又分为静态扫描和动态扫描。而根据质量左移的理念,在代码编译前的就进行代码扫描,尽早发现代码问题是最好的方式,这里就对最常用的静态扫描进行说明。

静态代码扫描的主要原理有 3 种:AST(抽象语法树)扫描、正则匹配扫描,分析源文件扫描。

什么是抽象语法树扫描呢?简单说就是以树状的形式表现编程语言的语法结构,树上的每个节点都表示源代码中的一种结构,找出用户可控变量的使用过程是否流入到了危险函数,从而定位出漏洞。

什么是正则匹配扫描呢?这种方式比较简单,就是匹配程序中是否出现了哪些敏感字符。

静态代码扫描一般作为插件存在于 DevOps 研发体系中,是 DevOps 中质量左移的重要实现方式。因为扫描的节点左移能够大幅度的降低开发以及修复的成本,能够帮助开发人减轻开发和修复的负担,在推行静态代码扫描阻力主要来自于开发人员,由于工具能力的有限性,会产生大量的误报,这就导致了开发人员很可能在做 Bug 确认的工作时花费了大量的无用时间。因此选择一款合适的静态代码分析工具变得尤为重要,合适的工具能够真正达到降低开发成本的效果。

静态代码扫描 Scan

国内领先的研发协作平台 Gitee 企业版,已经为超过 18 万家企业提供了高效的静态代码扫描服务,帮助他们提升代码质量,降低开发成本,而其中的奥秘便是静态代码扫描引擎 Scan。

Scan 静态代码扫描在三个方面帮助开发者在研发环节,准入环节,测试环节能够快速准确的查找、定位和修复代码中存在的风险。

深度解读静态代码扫描,如何更低成本提升代码质量-Gitee 官方博客

Scan产品功能简介:

1.Scan现在支持C/C++、Java、PHP、Python、Go、JavaScript、Objective-C、COBOL等13门主流编程语言。

2.在七个扫描维度上提供支持,截至到 2020 年底 Scan 总计 4600 余条规则,在缺陷、规范等维度基本覆盖了国际标准规则,在安全维度覆盖了CWE Top 25、OWASP Top 10。具备丰富的扫描语言和扫描维度,满足用户对代码质量进行全方位的分析和度量,同时 Scan 拥有自主核心技术的自研扫描引擎BCA系列,该扫描具备检出高,误报低,速度快的优点

深度解读静态代码扫描,如何更低成本提升代码质量-Gitee 官方博客

3. 基于缺陷的唯一标识技术,实现代码缺陷的增量管理,多工具并行扫描,实现缺陷检出更全面。4. 基于缺陷修复记录的特征相似性计算的智能修复案例推荐,帮助工程师快速修复代码。5. 更有灵活的规则集、扫描配置等个性化配置,满足不同类型的项目需求。

深度解读静态代码扫描,如何更低成本提升代码质量-Gitee 官方博客

平台能力对比

深度解读静态代码扫描,如何更低成本提升代码质量-Gitee 官方博客

Scan 的独创特色

1.代码增量计算基于Scan缺陷特征提取算法(已申请专利)准确识别出每个缺陷的唯一标识,通过唯一标识对比某个项目前后两次扫描结果,分析出后一次扫描比前一次扫描新增了多少问题、修复了多少问题。

2.采用自研扫描引擎独创的代码执行链分析技术,结合平台海量代码缺陷数据,融合个开源工具,开发系列自研代码分析引擎 BCA,特色是具备检出高,误报低,速度快,持续优化的特点,当前已有1个软件著作权和7个发明专利

深度解读静态代码扫描,如何更低成本提升代码质量-Gitee 官方博客

3.代码误报过滤 对于误报的 Bug,可以在报告页面标记为误报,这样下次扫描会将这个 Bug 过滤掉不再显示(只过滤掉这个误报 Bug,不会把这类 Bug 都过滤掉)。误报率高,会影响代码的修复速度,对代码质量管理提出严峻挑战。

4.可分析 .git 文件 提取每个 Bug 的提交人,即写这个 Bug 的人,便于开发者认领自己的 Bug。

5.智能修复样例推荐 根据智能修复样例可以根据实际问题情况给出针对性的修复建议,拥有更高的参考价值,快速正确的修复 Bug。对整个代码的质量提升有一个非常好的支持。

深度解读静态代码扫描,如何更低成本提升代码质量-Gitee 官方博客

Scan 技术指标

  1. 支持多并发的代码静态扫描,系统响应速度不超过 120ms,代码量在 1W 行以内的代码完整扫描周期不超过 5 分钟。并发扫描是 Scan 的一大亮点,相较于其他行内竞品,速度提升50%
  2. 支持生成包含多个角度数据统计以及全面而丰富的统计分析代码静态报告,无须人工干预,包含的主要功能有:
深度解读静态代码扫描,如何更低成本提升代码质量-Gitee 官方博客
  1. Scan 服务单节点时,任务并发量为10,平台主要接口 QPS>100 A. 主要页面(模块页,任务列表页,扫描报告页等)响应时间<2s。B. 扫描任务成功率大于 99.8%。C. 扫描时长,每10万行代码耗时1~3分钟。
  2. 代码扫描的平均误报率低于为4%。
深度解读静态代码扫描,如何更低成本提升代码质量-Gitee 官方博客
对10000+代码仓库做误报分析,最终平均误报率为3.87%。(行内的平均误报率是5-9%)

Scan 产品的成绩

Scan 在 Gitee 上已经累计为102000个代码库进行了代码扫描,开源社区的代码累计发现数以亿计的安全问题包括远程代码执行(RCE)、SQL 注入和跨站脚本(XSS)的漏洞,根据数据对比我们发现开源社区的代码质量距离一线大厂还是有不小的距离。通过 Scan 的智能修复样例推荐的功能,开发者和维护人员在一个月内修复了 72% 的已报告安全问题,比例远高于业内统计的 32% 的 30 天内修复率。

深度解读静态代码扫描,如何更低成本提升代码质量-Gitee 官方博客

截止 2021 年 4 月,除了众多开源项目外,Scan 已经为山东城商银行、海关总署、宁波银行、光大银行、太极药业、山东科技大学等企事业单位和机构提供了服务。

如果你也想和他们一起享受功能强大且高效的静态代码扫描服务,可以点击链接或拨打专属客服电话:400-606-0201,前往 Gitee 企业版免费体验,同时也可以将 Scan 部署于企业的私有服务器上,助力企业有效提升研发效能。

深度解读静态代码扫描,如何更低成本提升代码质量-Gitee 官方博客