¡Hola a todos, queridos amigos! Como amante de las nuevas funciones de GitHub, me interesaba mucho saber que pronto todos podremos buscar de forma rápida y eficiente en el código base de GitHub. Esto puede resultar muy conveniente, especialmente si necesita encontrar una forma sofisticada de utilizar una herramienta.
Esto resuena especialmente con el hecho de que en Rusia se abrió un futuro competidor de GitHub. Por lo tanto, GitHub definitivamente no debería dormirse en los laureles, a pesar de que son sin duda los líderes del mercado. Necesitamos seguir adelante y desarrollarnos, de lo contrario, en menos de una hora los competidores nos alcanzarán y arrasarán. Y que no parezca tan increíble. A modo de ejemplo: ¿cuántas personas siguen utilizando teléfonos Nokia? ¿Quién sabe siquiera que fabricaron teléfonos? Hubo un tiempo en que eran simplemente inalcanzables, líderes indiscutibles del mercado... Y ahora aparecen en algún lugar del ámbito del error estadístico.
sólo hay que esperar. Tan pronto como me agreguen, definitivamente les mostraré todo. No tardes, agrégalo para que puedas descubrirlo más tarde y usarlo a tu gusto) Y por supuesto, es una pena que no puedas probar la nueva herramienta de inmediato, así que analicemos su documentación y describámosla en Más detalle de cómo podemos utilizar esta herramienta para nuestro trabajo. Ahora sobre la búsqueda. Utilizará clases y construcciones que tengan sentido en la biblioteca que estoy escribiendo. Esto lo hará más claro y fácil para mí, y espero que también lo sea para ti.
Primera impresión
GitHub ha creado un proyecto donde puedes buscar, navegar y analizar tu código y los miles de millones de líneas de código publicadas en GitHub. Es importante destacar que la búsqueda es escalable, rápida y precisa. Fue creado desde cero específicamente para la búsqueda de códigos. La navegación funciona para 10 lenguajes de programación principales sin configuración (esperamos que la lista crezca en el futuro). Puedes buscar usando una expresión regular, lo cual es genial. Otros filtros también están disponibles:- por organización;
- por lenguajes de programación;
- por propietario específico;
- por extensión de archivo;
- por expresión regular.
Hablemos más detalladamente sobre la búsqueda.
Es muy interesante echarle un vistazo e intentar comprobarlo tú mismo: ¿es tan cómodo como dicen? Por ahora, esta función no está disponible públicamente y puedes agregarte a la lista de espera usando el enlace . Allí completamos todos los puntos, las preguntas son simples, no las describiré aquí. Como resultado, nos agregan a la lista de espera y seguimos adelante. Como resultado, la respuesta será ésta:
Búsqueda básica
ImageComparison es la búsqueda más simple que busca exactamente con la consulta en los nombres de archivos y en sus contenidos. Aquí todo parece muy sencillo. Si queremos encontrar claramente por nombre de clase, dónde se declara y dónde se usa, dicha búsqueda nos ayudará con esto. Cuando ingresa varias palabras separadas por espacios, el resultado será una búsqueda para todas ellas por separado: Comparación de imágenes , lo que significa que encontrará archivos y código tanto para Imagen como para Comparación . Si necesita buscar una cadena que contenga espacios, solo necesita usar comillas. Por ejemplo: “Comparación de ImageComparison = nueva ImageComparison()” y luego la búsqueda coincidirá con la cadena completa. Para escapar, usamos "\" como siempre. Hasta ahora, todo es intuitivo y, a menudo, así es como se hace. Además, podemos agregar filtros a esta búsqueda básica. Por tanto, hablemos de cada uno de ellos. Estos serán “AND” lógicos para el filtro que ya hemos creado.Filtrar por repositorio
Una vez que nuestro filtro básico esté listo, podemos limitar nuestra búsqueda y buscar por repositorio específico, lo cual es muy conveniente. No necesitas buscar en qué carpeta se encuentra la clase, simplemente puedes escribir:
repositorio:romankh3/image-comparison ImageComparisonResult
Donde necesitamos especificar repo:${user_name}/${repo_name} . También puedes buscar en varios repositorios simplemente agregando un OR:
repositorio:romankh3/comparison-imagen O repo:romankh3/usage-image-comparison ImageComparisonResult
Como se indica en GitHub, por el momento no admiten la búsqueda en repositorios donde el nombre se especifica como una expresión regular... Esto significa que están planeando agregar dicha característica y significa que el proyecto no se detendrá en el lugar declarado. funcionalidad y se desarrollará aún más.
Filtrar por organización
La búsqueda por organización o usuario se realiza exactamente de la misma manera que la búsqueda por repositorio, solo que la palabra clave no será repo , sino org :
org:romankh3 Comparación de imágenes
Y luego la búsqueda recorrerá todos los repositorios del usuario/organización.
Filtrar por lenguajes de programación
También puede especificar una búsqueda de archivos en un lenguaje de programación específico. Aquí la construcción es la misma que para el repositorio y la organización, solo que la palabra clave es idioma :
idioma: java Comparación de imágenes
Al igual que el repositorio, admite búsquedas en varios idiomas a la vez usando la palabra clave OR:
idioma:java O idioma:ruby ImageComparison
Puede encontrar una lista completa de los idiomas admitidos por GitHub aquí . Me pregunto si BrainFuck está ahí. 😂
Filtrar por ruta de archivo
Cada archivo del proyecto tiene su propia ruta y también puedes buscarlo agregando un filtro. Por ejemplo, hay un archivo ImageComparisonResult , tiene la ruta:
src/main/java/com/github/romankh3/image/comparison/model/ImageComparisonResult.java
Entonces, para encontrar todas las clases cuya ruta comienza con src/main/java/com/github/romankh3/image , necesitas:
ruta:src/main/java/com/github/romankh3/image
Puede resultar útil en los casos en los que no queremos que las clases de prueba queden fuera de nuestros resultados de búsqueda. O viceversa, sólo pruebas. Esto hace que su búsqueda sea más flexible. Se puede especificar un filtro por ruta de archivo mediante una expresión regular. Por ejemplo, necesitamos encontrar
ruta:src/*/*.js
operaciones booleanas
Y, por supuesto, la culminación de toda la construcción del filtro es combinar este asunto mediante operaciones booleanas. Para esto tenemos Y, O, Y NO. Creo que esto debería ser suficiente para nosotros. Por ejemplo, creemos una consulta de búsqueda compleja: código de producción de Java o Kotlin para un usuario/organización específico:
repositorio:romankh3 Y (idioma:java O idioma:kotlin) Y NO ruta:*/test/*
Y esto, os lo digo, es sencillamente increíble. La solicitud de búsqueda está redactada de forma tan sencilla, rápida, concisa y clara que no habrá problemas para buscar y leer la solicitud.
GO TO FULL VERSION