如何分析Golang依赖包的各项指标能力

2022-11-21 21:06:26 浏览数 (1)

文章导读

在日常开发中,我们在自己的代码库中难免都会引入外部的包,或者公司内部的私有包。在引入这些包时,我们一般都不会直接引入,而是会去思考这么几个问题。

  1. 该包是否符合自己的功能需求?
  2. 该包是否存在安全漏洞、bug等问题?
  3. 该包是否有持续的维护、更新、完善等文档和良好的生态?
  4. ......

等等上述的问题,在引入给包时,都是我们需要考虑的。而不是直接盲目的引入。既然谈到了这个问题,那我们该怎么去分析这些问题呢?今天给大家分享Google一个开源的工具(Open Source),能够很好的帮助我们解决这个问题。

Open Source

什么是Open Source

Open Source是由 Google 开发和托管的实验性服务,旨在帮助开发人员更好地了解开源软件包的结构、安全性和构造。该服务检查每个包,构造其依赖项及其属性的完整、详细的图形,并将结果提供给可以从中受益的任何人。

依赖关系图使用版本控制和许可信息、已知漏洞以及代码健康和安全的其他重要信号进行修饰。

数据不仅为项目自己的代码提供,还为项目所有依赖项的完全构造图中的所有包提供,甚至包括每个依赖项的各个版本。这意味着,例如,如果软件依赖于具有漏洞的依赖包的版本,则该漏洞将在顶层的项目的 Insights Web 视图中可见。

显示整个依赖项关系图中使用的许可证,可用于查找冲突或其他许可证问题。

它还提供了交互式工具来可视化依赖关系图、比较版本、筛选依赖关系等。最后,还会显示版本历史记录和其他相关信息。

Open Source开发目的

希望每个人都有一个高效、安全、可靠和值得信赖的开源软件环境。了解项目的依赖关系是实现该目标的关键部分。不明智地选择的依赖项可能会引入许可或安全问题,而仅仅拥有太多的依赖项可能会使维护具有挑战性。世界各地的开发人员每天都在更新他们的代码,这可能会意外地影响您自己的软件。可能很难跟上。

项目旨在通过集成有关其所有依赖项的信息并提供一种查看它们如何组合在一起的方法,为开发人员和项目所有者提供有关其软件运行状况的见解来提供帮助。当然,现有的工具和包装系统可以做到这一些,但还不够,也不统一。

希望获得有关开源软件项目的高质量信息和分析,这将使构建和维护高质量软件变得更加容易。

差异对比

Open Source并不是试图取代标准工具集,而是通过对每个打包模型的整个生态系统的全新集成视图来增强它。

Open Source一个关键的区别在于,Insights数据是从第一性原理派生出来的,即查看软件及其打包定义。结果可能与例如打包“锁定”文件的声明依赖项大不相同或更完整。此外,Insights提供的数据会定期重新评估,以使其保持最新状态,这在快速发展的开源开发世界中非常重要。

支持的包类型

Open Source当前支持Cargo (Rust), Go’s module system, Maven (Java), npm (Node.js), and PyPI (Python)。

信息正确性

Open Source团队具有解析算法的独立实现,用于计算包的依赖项。这些已经针对“本机”实现进行了测试,并且给定相同的输入,结果非常接近:99%或更高,通常要高得多。由于版本偏差、打包模型的未记录或模糊功能、来自构建系统的输入(我们无法使用)以及其他因素,可能会产生差异。

另请注意,包的依赖项关系图并不总是唯一的项,因为它可能取决于是否包含测试或其他依赖项、启用哪些功能等。由于图形计算是可传递的,因此即使依赖项规范的任何细节的微小变化也会影响整个图形。

如何使用

首先浏览器打开https://deps.dev/,通过搜索框输入你想查询的包名。

点击你想查找的包,进入包详情页面。会看到如下的界面信息。

通过点击上面的几个选项卡,选择你想查找的信息即可。

0 人点赞