中文

面向开源代码的高效先前发表识别

软件工程 2022-07-25 v1

摘要

自由/开源软件(FOSS)实现了对已有软件组件的大规模复用。其主要缺点是增加了软件供应链管理的复杂性。驯服此种复杂性的一种常见方法是自动化开源合规,即自动化验证对各类开源管理最佳实践(关于许可证义务履行、漏洞追踪、软件成分分析及相近问题)的遵守。我们考虑审计一个源代码库以确定其中哪些部分此前已发表的问题,这是自动化开源合规工具链的一个重要构建模块。确实,如果声称内部开发的源代码被识别为先前已在别处发表,则应发出警报以调查其来源,以及这是否意味着在产品发布前须履行额外义务。我们提出了一种高效的先前发表识别方法,该方法依赖于一个已知源代码构件的知识库,这些构件在全局 Merkle 有向无环图中相互关联,并依赖于一个专用的发现协议。我们介绍了 swh-scanner,一种使用作为知识库的 Software Heritage(最大的源代码构件公共归档)实际实现所提方法的源代码扫描器。我们通过实验验证了所提方法,在抽象(查询数量)和具体(墙上时钟时间)层面展示了其效率,并对 16845 个从小到大的真实世界公共代码库进行了基准测试。

关键词

引用

@article{arxiv.2207.11057,
  title  = {Efficient Prior Publication Identification for Open Source Code},
  author = {Daniele Serafini and Stefano Zacchiroli},
  journal= {arXiv preprint arXiv:2207.11057},
  year   = {2022}
}