Skip to main content

Criticality Score

本评估模型参考了OpenSSF Criticality Score项目的实现,用于生成每个开源项目的关键性评分,创建关键项目列表,并利用这些数据主动改善这些关键项目的安全状况。

评估模型中的指标

创建时间

  • 定义:项目创建至今的时间(以月为单位)
  • 权重:9.523%
  • 阈值:120

较老的项目有更高的机会被广泛使用或被其他项目依赖。

更新时间

  • 定义:项目最后更新时间至今的时间(以月为单位)
  • 权重:-9.523%
  • 阈值:120

没有最近提交的未维护项目被依赖的可能性较低。

贡献者数量

  • 定义:项目贡献者数量(有提交记录的)
  • 权重: 19.047%
  • 阈值:5000

不同贡献者的参与表明项目的重要性。

组织数量

  • 定义:贡献者所属的不同组织的数量
  • 权重:9.523%
  • 阈值:10

表明跨组织依赖关系。

提交频率

  • 定义:过去一年中平均每周提交次数
  • 权重:9.523%
  • 阈值:1000

更高的代码变更率略微表明项目的重要性。同时,也更容易受到漏洞影响。

最近发布数量

  • 定义:过去一年中的发布次数
  • 权重:4.761%
  • 阈值:26

频繁发布表明用户依赖。权重较低,因为这不总是被使用。

关闭问题数量

  • 定义:过去90天内关闭的问题数量
  • 权重:4.761%
  • 阈值:5000

表明高贡献者参与度和对关闭用户问题的关注。权重较低,因为它依赖于项目贡献者。

更新问题数量

  • 定义:过去90天内更新的问题数量
  • 权重:4.761%
  • 阈值:5000

表明高贡献者参与度。权重较低,因为它依赖于项目贡献者。

评论频率

  • 定义:过去90天内每个问题的平均评论数
  • 权重:9.523%
  • 阈值:15

表明用户活动和依赖关系。

依赖者数量

  • 定义:提交消息中该项目被其他项目提及的次数
  • 权重:19.047%
  • 阈值:50

表明仓库使用情况,通常在版本更新中。此参数适用于所有语言。

评估模型算法

模型权重和阈值

我们使用以下参数来计算开源项目的关键性评分:

指标名称 (Si)权重 (αi)阈值 (Ti)定义
创建时间9.523%120项目创建至今的时间(以月为单位)
更新时间-9.523%120项目最后更新时间至今的时间(以月为单位)
贡献者数量19.047%5000项目贡献者数量(有提交记录的)
组织数量9.523%10贡献者所属的不同组织的数量
提交频率9.523%1000过去一年中平均每周提交次数
最近发布数量4.761%26过去一年中的发布次数
关闭问题数量4.761%5000过去90天内关闭的问题数量
更新问题数量4.761%5000过去90天内更新的问题数量
评论频率9.523%15过去90天内每个问题的平均评论数
依赖者数量19.047%50提交消息中该项目被其他项目提及的次数

评分计算

开源项目的关键性评分定义了项目的影响力和重要性。它是一个介于0(最不关键)和1(最关键)之间的数字。该评分基于Rob Pike提出的算法

其中:

  • αi 是每个指标的权重
  • Si 是每个指标的实际值
  • Ti 是每个指标的最大阈值

参考文献

贡献者

后端

  • Yehui Wang
  • Shengbao Li

评估模型

  • Yehui Wang
  • Guoqiang Qi
  • Shengbao Li

Copyright © 2022 开源指南针。保留所有权利。