首页 > 其他分享 >代码检查规则运营需关注的10大指标

代码检查规则运营需关注的10大指标

时间:2024-01-03 10:06:31浏览次数:52  
标签:10 检查 代码 运营 用户 规则 看板

本文分享自华为云社区《代码检查规则运营一般会关注什么指标?》,作者: gentle_zhou。

代码检查服务的度量运营看板,除了告警运营模块,必定还会存在的一个模块是规则运营。这个模块关注于对代码检查的规则进行分析、处理和汇报,对于团队项目管理者来说,可以监控和管理到规则的整体状况。

往下再细化一点,在看板内的规则运营模块里,用户一般会关注哪些指标呢?大致可以分为规则本身维度的数据:规则名称,规则版本,规则内容,相关语言,相关工具及类别,告警类别,适用范围;以及规则关联维度的数据:规则相关联的维护责任人信息,规则相关联的被引用情况,规则相关联的规则集。

规则本身维度

规则名称

规则名称,可以让用户从字面上大致了解到规则的含义和作用,方便用户识别和管理规则。作为规则运营里最基本的几个指标之一,其可以支撑用户快速了解识别公司、产业线、部门下都有哪些规则,不同的部门都更偏向于使用哪些规则。

我们以华为云CodeArts Check代码检查服务为例,规则名称的设计就是要以清晰、简单为基准:

代码检查规则运营需关注的10大指标_看板

规则版本

规则随着演进,必定会有多种版本,包括各种大版本(可能是全年或则半年一个迭代)、小版本(不定期的小优化改进)。版本一般也是版本号的代替叫法,而版本号一般也会带有时间日期(代表其创建时间/修改时间/上线时间等),反映出规则的更新情况。

代码检查服务的运营看板上,在规则运营模块里,必定有对规则版本的记录。规则版本指标不仅可以帮助用户区分不同版本下的规则,也可以帮助管理者了解规则的演进过程,评估规则在不同版本底下对业务的影响,规则优化的演进历史以及规则的稳定性。

规则内容

如果说规则名称可以帮助用户大致了解规则的含义,那么规则内容就是为了让用户清晰明白的了解规则到底是什么,规则产生的背景,规则可以用在哪,规则的正确及错误示例,规则参考了什么规范等等。

规则内容可以说是帮助用户理解规则的一个非常重要的指标,协助用户掌握规则的检查方法和标准。因此一条规则是否具备了完整详尽的内容,且里面内容是否准确详实,就是运营看板用户所关注的。

以华为云CodeArts Check代码检查服务为例,概览里分为描述、正确实例、错误示例、修复建议、参见对规则内容进行细致的介绍:

代码检查规则运营需关注的10大指标_CodeArts_02

相关语言

规则开发人员针对相关的编程语言,针对其语言特点,会设计开发适配的规则。尤其是一些主流语言,如Java,C,C++,Python等,一个成熟完善的代码检查服务里的规则都应该覆盖住。

在运营看板里,对规则根据语言进行分类,可以提高规则的可读性和可维护性,让用户根据语言筛选出贴合项目特性、符合开发人员语言习惯的规则,选择规则相配套的引擎工具,更加有针对性的对业务项目进行检测扫描。

相关工具及类别

规则若想要在代码检查服务里运作起来,除了规则本身之外,还需要配套的引擎工具来执行。规则由哪些引擎来执行,这些引擎属于自研的,开源的,还是商用的,都属于规则使用方所关心的。比如一个比较常见的场景是,一批规则本身是得到了部门和专家的认可,但在实际应用过程中发现产生的效果差别却很大;那这其中的一种可能就是这些规则配套的引擎差异所造成的,一些引擎效果好,将规则的效果执行到位,那么检查扫描的效果就出来了;但如果配套的引擎本身效率性能一般,那扫描的效果就有可能大打折扣。

我们还是以华为云CodeArts Check代码检查服务来举例,不同的规则会对应着不同的引擎工具,这些都会在规则详情界面的label里展示出来:

代码检查规则运营需关注的10大指标_CodeArts_03

代码检查规则运营需关注的10大指标_规则集_04

告警类别

就像我在《代码静态检查为什么需要对规则去做运营?》一文中所说的,规则类似于法律法条,那么违反的这条规则是属于民事类,交通类还是刑事类呢?这时候,就需要告警类别来展示了。

通常来说,告警类别可以分为三大类来展示:安全类,质量类,风格类(当然也可以把质量类和风格类结合在一起来展示)。如果公司质量部门对三大类的分法觉得粗颗粒度了些,也可以再继续细分。

以华为云CodeArts Check代码检查服务的分类来示例(分类栏里提到的“安全增强特性包”属于安全类的一个拓展分支,对一些安全问题场景提供更深度的扫描):

代码检查规则运营需关注的10大指标_看板_05

适用范围

提到适用范围,那我们就得先额外简单介绍下代码检查工具的使用方式。除了常见的云端服务里,配合代码仓提供的门禁级扫描,配合流水线提供/手动触发的版本级扫描之外,研发人员在本地IDE中开发代码所需要的IDE插件扫描也是至关重要的。我们暂且将这三种使用方式称呼为版本级,门禁级,IDE插件级吧,那这三种方式也就可以说是服务的适用范围了。

对于规则来说,适用范围也是生效的。结合规则本身的特点,是否需要编译,配套的引擎扫描是否需要大量的计算资源,是否需要污点分析等等,来对规则的适用范围进行划分。一些占用计算资源少,不需要编译的规则就可以被选作IDE插件的扫描范围。在运营看板的规则运营模块里,针对适用范围对规则的分类就可以让用户了解到不同范围内都可以选哪些规则来应用。

规则关联维度

规则相关联的维护责任人信息

规则是会随着业务发展,行业内对漏洞感知的更新而不断更新优化的,因此需要有专门的维护部门和维护责任人来负责规则的上下线,修改,发布和管理。

在运营看板内展示规则相关联的维护责任人信息,大致上来说有以下2种原因:

  • 一般来说规则是谁设计开发的,后续就应该由谁来维护;因此在看板内展示维护责任人信息,可以方便用户了解规则的来源和背景,提高规则的可信度和权威性。
  • 方便用户在看板内发现一些规则相关问题或则建议时,能够快速联系到相关责任人,降低用户和开发者之间的沟通成本。

规则相关联的被引用情况

规则被开发出来,只要它合理且有效,一定会被公司内不同的产品线,部门,工程所采纳使用,理论上被引用的越多,越能代表规则的普适应,有效性和影响力。

在运营看板内展示规则相关联的被引用情况信息,大致上来说有以下3种原因:

  • 帮助规则的使用者和潜在使用者了解规则的适用场景和使用对象,支撑它们选择合适的规则,提高代码检查的效果。
  • 提供规则的维护责任人一个了解其开发规则适用范围的平台,可以和其内心预想效果做个对比;同时也可以通过和这些使用部门相关干系人的交流反馈,及时发现规则的问题和不足。
  • 方便代码检查服务的管理人员和监督者了解规则的价值和影响力,对比和评估不同规则的差异。

规则相关联的规则集

代码检查服务的用户在使用规则的时候,并非直接选用规则去做扫描,而是会结合其业务特点,需要遵守的代码规范、安全标准或则说质量要求,选择一些规则合并成为一个集合去使用。这个集合我们一般称为规则集,可以方便用户去做增删查的管理。

在运营看板内展示规则都被那些规则集所使用,可以帮助用户了解:

  • 规则的来源和依据,让规则的使用者明白为什么这个规则会出现在我们部门、工程中,来源于哪个规则集,被当前工程所引用是否合适。
  • 规则的归属和分类,让规则的维护责任人了解规则会被哪些规则集所收集,这样的使用方式是否和初衷一致,是否可以根据这个场景对规则做补充和优化。
  • 规则的分布和覆盖,支持代码检查服务的管理人员和监督者评估规则的价值和影响力,对比和评估规则在不同规则集内的效果和可信度。

延伸开来讲,公司业务量一大,工程数多了之后,必定会导致规则集数量也不可控的暴增。那么一味的展示规则被哪些规则集所采纳使用,也不是个很好的方式。我们可以选用一些典型的受到大家认可的规则集来评估,比如规则是否被公司层面的规则集所采纳;当一条规则的影响力和效果得到了整个公司层面的认可的时候,必定会被收录进公司级的规则集中。因此摒弃展示所有采用的规则集的方式,我们可以试着展示这条规则是否被公司层面的规则集所采纳,这样的效果可能更让用户接受,促进规则维护责任人改进的动力。

总结一下

通过关注如上这些指标信息,可以让相关人员获取规则相关的关键数据,帮助用户了解和评估规则的有效性、合理性、可维护性和适应性。用户也可以从中避免不必要的时间和资源浪费,帮助从运维的角度识别不可靠不一致的规则,避免不清晰和混乱,以达到提高规则的执行效果,当然最终目的也是为了保障用户的满意度。

点击关注,第一时间了解华为云新鲜技术~

标签:10,检查,代码,运营,用户,规则,看板
From: https://blog.51cto.com/u_15214399/9078035

相关文章

  • 一行代码也不写,拿Github Copliot + DallE3做一个小游戏是什么体验?
    我全程没写一句代码...   乡村爱情15看完了,晚上也没什么事,就寻思折腾点事做,儿子问我小时候最爱玩什么游戏,我毫不犹豫的说1945,正好这个事情给了我一个brainstorming,那我自己写一个简单的1945可不可以?   说干就干,但是我也没写过游戏,于是我开启了GitHubCopliot...  ......
  • 贪吃蛇login.wxss代码
    /* pages/login/login.wxss *//**app.wxss**/.box1 {  height: 100%;  display: flex;  flex-direction: column;  align-items: center;  justify-content: space-between;  padding: 100rpx 0;  box-sizing: border-box;} image{  width: 150rpx; ......
  • 朋友圈运营要怎么做?内容营销要如何规划?
    现在博主越来越多了,做知识付费的人也越来越多了,相较于立马成单,目前大部分的消费者会更倾向于先对IP进行一个周期性的观察,去翻看他的内容来逐步加深对这个人的了解与信任大多数人会选择将潜在客户引流进私域,然后通过内容营销的方式来完成背书与专业度的信息传递朋友圈就是一个重要的......
  • 安卓期末大作业(AndroidStudio开发),垃圾分类app,代码有注释,能正常运行
    1 项目基本信息1.1 项目名称垃圾分类助手APP的设计与实现1.2开发运行环境开发语言:Java开发工具:AndroidStudio模拟器:雷电模拟器9数据库:SQLite  1.3使用的核心类及组件Activity:作为实现界面的窗体类BaseAdapter:适配器类SqliteOpenHelper:数据库类Intent:页面跳转传值Fragmen......
  • 安卓期末大作业(AndroidStudio开发),日记本app,代码注释详细,能正常运行
    安卓期末大作业-日记本app(附下载链接)压缩包内包含源代码,运行各个界面截图,一条日记可以记录2000字符以下的文本、最多8张配图和最多8个视频。每条日记都可以以评论的形式或转发引用的形式追更,评论的最大长度也是2000字符。日记还可以同时记录所处位置和当时的天气情况(当然,现在并......
  • 亚信安慧AntDB数据库——通信运营商核心系统的全面演进
    AntDB数据库源自通信运营商核心系统,经过15年的平稳运行和不断演进,成功跟随通信技术的升级步伐,逐步迈向5G时代,并且在这期间完成了8次大版本的迭代,为行业树立了技术领先的典范。其独特之处在于具备超融合架构,这一架构不仅支持结构化数据,还能有效管理非结构化数据,从而降低了系统维护的......
  • LeetCode-10 正则表达式匹配
    LeetCode-10正则表达式匹配给你一个字符串s和一个字符规律p,请你来实现一个支持'.'和'*'的正则表达式匹配。'.'匹配任意单个字符'*'匹配零个或多个前面的那一个元素所谓匹配,是要涵盖整个字符串s的,而不是部分字符串。示例1:输入:s="aa",p="a"输出:false解释:"a"......
  • 轻松转换,一键搞定:JVS低代码平台的日期格式转换功能详解!
    日期和时间在我们的日常生活中起着至关重要的作用,无论是计划日程、管理项目还是执行其他任务,都需要精确的时间信息。在JVS低代码平台上,日期格式转换主要依赖于逻辑引擎中的函数公式。这些函数为我们的用户提供了一种强大且灵活的方式来处理和转换日期时间数据。我们的时间函数旨在......
  • STM32F103C8T6移植RT_Thread nane过程记录
    一、创建基于官方库的裸机工程(这教程很多,每个人创建的工程风格也不一样,就不多赘述了) 二、下载RT-ThreadNano源代码(https://github.com/RT-Thread/rtthread-nano/archive/refs/heads/master.zip)  三、RT-ThreadNano源码目录结构 四、将核心文件添加到裸机工程中 ......
  • 2K1000开发板虚拟机 ubuntu 更换下载源
    Ubuntu系统软件的下载安装我们通常使用命令“apt-get”,该命令可以实现软件自动下载,安装,配置。该命令采用客户端/服务器的模式,我们的Ubuntu系统作为客户端,当需要下载软件的时候就向服务器发起请求,因此我们需要配置下服务器的地址,也就是更换ubuntu系统的下载源,首先打开......