Buscar Repositorios de Paquetes Fedora Usando Sourcegraph

Roseline Bassey, Fedora community

Nuestra colección de paquetes de código abierto crece, hay una necesidad de maneras de hacer la búsqueda de paquetes dentro de nuestro repositorio dist-git mucho más fácil. En 2022, la gente de Sourcegraph se asoció con nuestra comunidad Fedora para integrar su Code Search (Búsqueda de Código), gratuito y avanzado, en nuestros repositorios de paquetes de distribución masiva, los que ahora incluyen sobre 38.000 paquetes. Con Code Search de Sourcegraph nuestro desarrolladores, colaboradores y mantenedores puede buscar en nuestro repositorio dist-git por archivos RPM de especificaciones específicas, definiciones de módulo y contenedor, parches específicos de Fedora, pruebas y mucho más, todo en un sitio, reduciendo en última instancia el tiempo empleado en buscar archivos.

¿Qué es Sourcegraph?

Sourcegraph es una plataforma de inteligencia de código. Puede pensarla como un motor de búsqueda de código. Su puede usar para buscar código en todos los hosts, repositorios y ramas. Sourcegraph tiene muchas funciones excelentes como inteligencia de código, conocimientos de código, cambios por lotes y Cody – un Asistente de Codificación de Inteligencia Artificial, pero en esencia es una herramienta de Búsqueda de Código. En este artículo, exploraremos como usar Code Search para repositorios src.fedoraproject.org, también conocidos como Fedora dist-git.

Code Search es una poderosa capacidad de búsqueda en Sourcegraph para buscar código desde un sencillo interfaz. Admite filtrado de búsqueda por tipo de archivo, repositorio y lenguaje. Esto ayuda a refinar los resultados de la búsqueda.

Sourcegraph proporciona interfaz web app y CLI. Cuando use la web app de Sourcegraph necesitará iniciar cada búsqueda con: repo:^src.fedoraproject.org antes de introducir cualquier consulta de búsqueda.

Interfaz Sourcegraph
Figura 1. Interfaz de búsqueda de código Sourcegraph

Filtro de Búsqueda: Usar la Palabra Clave file para encontrar archivos de especificaciones

La palabra clave file devuelve resultados de archivos que coinciden con la ruta de archivo especificada. La siguiente consulta busca todos los repositorios para los archivos que terminen en .spec que contengan el término dnf5. El uso de la palabra clave file simplifica la tarea de localizar archivos de especificaciones.

repo:^src\.fedoraproject\.org/ file:\.spec$ dnf5
encontrar archivos de especificaciones usando la palabra clave files
Figura 2. Búsqueda por archivos de especificaciones

Use the lang Filter to Find a Fedora Repository to Contribute to

The lang keyword is used to filter search results by programming language.

The following query searches our dist-git repositories for files written in Markdown with instances of the term contributing. This is great for people seeking to assist with projects in need of contributions.

repo:^src\.fedoraproject\.org/ lang:markdown contributing
find projects to contribute to using the lang keyword
Figura 3. Search for files written in Markdown

Search for Specfiles Disabling Debug Packages

By using the query "%global debug_package %{nil}", you can search for specfiles that contain the line where the debug_package macro is set to nil. This line disables the creation of a debug package in the build process.

find files that disable debug package
Figura 4. Search for specfiles disabling debug packages

Find Repositories Using Popular OSI-approved Licenses

The following query will scan all the repositories for software that is compatible with the “Open Source Definition” (OSD).

repo:^src.fedoraproject.org/ lang:"RPM Spec" License: ^.*apache|bsd|gpl|lgpl|mit|mpl|cddl|epl.*$
search for License
Figura 5. License search

Find Files with a Vulnerable Version of Log4j

This query will find any files that are possibly vulnerable to CVE-2021-44228, aka Log4j. Note that false positives can happen, so you should investigate further before making a conclusion on whether a package is actually vulnerable or not. You can also search for other vulnerabilities that can then be reported to project maintainers.

repo:^src.fedoraproject.org/ org.apache.logging.log4j 2.((0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15)(.[0-9]+)) count:all
Search for log4j
Figura 6. Search for log4j

Conclusion

For more search queries, see Sourcegraph official documentation.

Having Sourcegraph Code Search integrated into our dist-git repository is a great addition to our engineering productivity toolkit. With Code Search’s powerful capabilities, our contributors and users can efficiently search across our entire universe of open source repositories from a single place.