[FR] Автоматически подставлять vcs на основе других полей
Есть некоторые пакеты, которые явно не содержат vcs в мета информации. Примеры:
- pkg:nuget/Microsoft.Bcl.AsyncInterfaces@1.1.1
Текущие значения
"externalReferences": [ { "url": "https://github.com/dotnet/corefx", "type": "website" } ],
Сейчас это не проходит проверку т.к. имеется ссылка только с типом website, но фактически она указывает на репозиторий с кодом
- pkg:nuget/Microsoft.Data.SqlClient.SNI.runtime@5.2.0
Текущие значения
"externalReferences": [ { "url": "https://aka.ms/sqlclientproject", "type": "website" } ],
Сейчас это не проходит проверку т.к. имеется ссылка только с типом website, но фактически она указывает на репозиторий с кодом
- pkg:nuget/Microsoft.OpenApi@1.2.3
Текущие значения
"externalReferences": [ { "url": "https://github.com/Microsoft/OpenAPI.NET", "type": "website" } ],
Сейчас это не проходит проверку т.к. имеется ссылка только с типом website, но фактически она указывает на репозиторий с кодом
- pkg:nuget/System.Numerics.Vectors@4.5.0
Текущие значения
"externalReferences": [ { "url": "https://dot.net/", "type": "website" } ],
Сейчас это не проходит проверку т.к. имеется ссылка только с типом website, но фактически она условно указывает на репозиторий с кодом т.е. https://github.com/dotnet/runtime
- pkg:nuget/System.Threading.Tasks.Extensions@4.5.4
Текущие значения
"externalReferences": [ { "url": "https://dot.net/", "type": "website" } ],
Сейчас это не проходит проверку т.к. имеется ссылка только с типом website, но фактически она условно указывает на репозиторий с кодом т.е. https://github.com/dotnet/runtime
Эти проблемы появились из-за отсутствия полной информации в источнике, но было бы полезно решить эту проблему совместно. Примерные алгоритмы (реализация):
- Поиск vcs в соседних версиях пакета
- Определение с помощью другой мета информации (пакет Microsoft с ссылкой на https://dot.net => https://github.com/dotnet/runtime )
- Поиск по базе знаний (постепенно совместно собирать информацию для автоматического сопоставления в дальнейшем)
- Если имеется ссылка на github/gitlab репозиторий с другим типом (website), то использовать его в качестве vcs
Пример SBoM'a, который содержит данные библиотеки. problematic-sbom-updated.json