linux cpu占用率如何看
336
2022-10-10
5 款阿里常用代码检测工具,免费用!
作者 | 喻阳
面临问题
在日常研发过程中,我们通常面临的代码资产问题主要分为两大类:代码质量问题和代码安全漏洞。
1、代码质量问题
代码质量其实是一个老生常谈的话题,但问题是大家都知道它很重要,却又不知道如何去提升和维护这一团队的共同财产。一方面开发人员可能为了功能及时上线,疏忽了对质量的把控,另一方面开发人员编码习惯和程序理解风格各异。
长期下来代码质量下降通常会自成因果,因为业务压力大而趋于下降,又因此开发效率下降,进一步加大业务压力,导致恶性循环。
2、代码安全问题
安全类问题往往隐藏在缺乏安全意识的编码逻辑和未经检测或维护的开源依赖组件中,难以在日常开发和代码评审中被及时察觉。
代码安全问题也可以分两个方面进行分析:
编码安全问题,即:安全规范类问题,通过避免不符合规范的代码进入企业代码库,减少隐私数据泄露、注入类风险、安全策略漏洞的出现。 依赖安全问题,即:开源依赖三方组件引入的安全漏洞。根据 Synopsys 2020 开源安全报告显示,99%以上的组织使用了开源技术。使用开源组件本身带来的技术交流和站在巨人肩膀上协作、降低开发成本、加快迭代周期、提高软件质量等优势已经不必赘述,但是,开源软件带来一系列便利的同时,也暗藏大量安全风险,据审计,75%的代码库存在安全漏洞,其中 49%包含高危问题,另外 82%的代码库仍在使用超过 4 年的 outdated 组件。
代码安全类问题,一方面也需要进行准入性检查,根据业务场景和规范配置安全编码规范检测和卡点。另一方面需要定期维护,对于新爆发出的安全漏洞进行及时察觉并修复。
5 款阿里常用代码监测工具推荐
1、代码质量检测
Java 代码规约检测
阿里巴巴在实践过程中,各个组织由于历史隔阂和业务风格差异,工程结构差别很大,代码风格迥异,规范不一,沟通成本大,合作效率低,维护成本高。集团发展到现在的规模,需要专业化的技术集团军迭代式、集约式发展,而不是动辄重复造轮,而真正专业化的团队一定会有统一的开发规约,这代表效率、共鸣、情怀、可持续。
基于上述背景,阿里制定了《阿里巴巴 Java 开发手册》,作为阿里内部 Java 工程师所遵循的开发规范,涵盖编程规约、单元测试规约、异常日志规约、MySQL 规约、工程规约、安全规约等。这是近万名阿里 Java 技术精英的经验总结,并经历了多次大规模一线实战检验及完善。
制订交通法规表面上是要限制行车权,实际上是保障公众的人身安全。试想如果没有限速,没有红绿灯,没有靠右行驶条款,谁还敢上路。同理,对软件来说,开发规约绝不是消灭代码内容的创造性、优雅性,而是限制过度个性化,推行相对标准化,以一种普遍认可的方式一起做事。
因此,代码规约的目标是:1、码出高效:标准统一,提升沟通效率和研发效能。2、码出质量:防患未然,提升质量意识和系统可维护性,降低故障率。3、码出情怀:工匠精神,追求极致的卓越精神,打磨精品代码。
代码规约通过 IDE 检测插件、流水线集成测试、代码评审集成等工具手段,深度融入了阿里巴巴的各种开发活动中。与此同时,在云效代码托管平台 Codeup 中,也内置集成了 Java 代码规约检测能力,为开发人员在代码提交和代码评审阶段提供更为方便的快速检查。
代码智能补丁推荐
2、从这些修复型 commit 中以文件级别提取删除内容和新增内容,即 Defect and Patch pairs(DP Pair),这一步难免会有很大的噪声。
3、利用改进的 DBSCAN 方法对 buggy 和 patch 对同时聚类,将相似的缺陷和补丁代码聚在一起。(也可以做片段级的聚类)通过将相似的缺陷和修复做聚类,减少了上一步留下的大量噪声,同时历史代码提交中大家共同犯过的错具有很强的借鉴意义。
4、利用自研的模板提取方法总结缺陷代码和补丁代码,并根据不同的变量来适配上下文。
代码补丁推荐服务目前应用于合并请求的代码自动扫描场景,在代码评审过程中检测可优化代码片段并给出优化建议,将历史评审中的人工经验沉淀下来持续提升企业代码质量。
2、代码安全检测
敏感信息检测
近年来,业内发生多起敏感信息(API Key、Database credential、OAuth token 等)通过某些站点被无意识地泄露出去的事件,给企业带来了安全风险,甚至直接的经济损失。
敏感信息检测工具不止服务我们内部开发同学,在云效平台上也支持了超过 2 万代码库、3 千家企业,帮助开发者解决了超过 9 万硬编码问题。
源码漏洞检测
阿里巴巴采用 Sourcebrella Pinpoint 源伞检测引擎,进行源码漏洞检测,主要涉及到注入类风险和安全策略类风险检测。
「源码漏洞检测」集成了源伞检测引擎的安全分析能力,能够在分析精度、速度、深度等方面均衡得到较好的分析结果,具备的核心优势:
依赖包漏洞检测
**无论是代码质量检测还是代码安全检测,以上 5 款阿里代码自动检测工具,开发者们都可以在云效 Codeup 内免费体验。
检测服务应用
1、代码提交
检测服务的最直接的应用便是在代码提交场景中,企业可以根据业务场景和规范,制定和配置不同项目的检查方案。当开发者将代码变更推送至服务端,自动触发当前代码库配置的检测服务,可以为开发者检查当前 commit 版本中的全量问题,帮助开发者及早发现新增问题,并确认存量问题的解决情况。通过接入上述检测服务,可以从代码规范、代码质量、代码安全等多个维度进行测试左移,在开发人员刚完成编码时就进行快速检测和反馈。
2、代码评审
在企业项目协同中,开发者多以合并请求的方式将特性分支代码合入主干分支,合并请求过程需要项目开发负责人或模块负责人进行代码评审和人工检查。一方面人工审查代码需要投入较大精力,另一方面人工审查难以覆盖代码各个维度的潜在问题。因此,通过合理配置检测服务,可以极大地减少人工评审的工作量,加速代码评审的工作过程。同时,通过丰富、筛选、沉淀检测规则集和人工经验,检测服务可以更加贴合企业的业务场景进行卡点,避免不符合规范或存在风险的代码进入企业代码库。
3、代码度量
检测服务除了在代码提交和代码评审阶段帮助开发者及早发现问题并解决问题,还可以帮助管理者进行企业代码质量度量和风险可视化。通过建设企业级报表服务和项目任务管理,可以更为直观地度量项目演进过程中的安全问题和质量问题。
扩展阅读
Pinpoint: Fast and Precise Sparse Value Flow Analysis for Million Lines of Code
/>
SMOKE: Scalable Path-Sensitive Memory Leak Detection for Millions of Lines of Code
/>
Pipelining Bottom-up Data Flow Analysis
/>
Conquering the Extensional Scalability Problem for Value-Flow Analysis Frameworks
/>
活动推荐
大厂每年数百万采购的扫描软件,都在采购什么?如何不花钱白嫖?
落地 DevOps 的第 2 步是什么?
什么是接入成本最低的质量和安全提升工具?
云效 DevOps 实验室特推出【1 分钟代码自动捉虫】活动
1-3 分钟,给你的代码做个全身体检吧。**
体验完成,还可抽 Cherry 机械键盘、阿里云定制 GIt 命令鼠标垫、积木星球等,1000 分礼品,100%中奖!
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~