Bonjour à tous, chers amis ! En tant qu'amateur de nouvelles fonctionnalités sur GitHub, j'étais très intéressé de savoir que bientôt nous pourrons tous effectuer des recherches rapides et efficaces dans la base de code GitHub. Cela peut être très pratique, surtout si vous avez besoin de trouver une manière sophistiquée d’utiliser un outil. Cela reflète particulièrement le fait qu'un futur concurrent de GitHub a été ouvert en Russie. Par conséquent, GitHub ne devrait certainement pas se reposer sur ses lauriers, même s’il est sans aucun doute le leader du marché. Il faut avancer et se développer, sinon ce n’est même pas une heure et les concurrents rattraperont et balayeront. Et que cela ne paraisse pas si incroyable. A titre d'exemple : combien de personnes utilisent encore des téléphones Nokia ? Qui sait qu’ils fabriquaient des téléphones ? À une certaine époque, ils étaient tout simplement des leaders incontestés et inaccessibles du marché... Et maintenant, ils apparaissent quelque part dans le domaine de l'erreur statistique.
Première impression
GitHub a créé un projet dans lequel vous pouvez rechercher, naviguer et analyser votre code et les milliards de lignes de code publiées sur GitHub. Il est important de noter que la recherche est évolutive, rapide et précise. Il a été créé à partir de zéro spécifiquement pour la recherche de code. La navigation fonctionne pour 10 principaux langages de programmation sans paramètres (nous espérons que la liste s'allongera à l'avenir). Vous pouvez effectuer une recherche en utilisant une expression régulière, ce qui est très cool. D'autres filtres sont également disponibles :- par organisation ;
- par langages de programmation ;
- par propriétaire spécifique ;
- par extension de fichier ;
- par expression régulière.
Parlons plus en détail de la recherche
C'est très intéressant d'y jeter un œil et d'essayer de chercher par soi-même : est-ce aussi pratique qu'on le dit ? Pour l'instant, cette fonctionnalité n'est pas accessible au public et vous pouvez vous ajouter à la liste d'attente en utilisant le lien . On y remplit tous les points, les questions sont simples, je ne les décrirai pas ici. En conséquence, nous sommes ajoutés à la liste d’attente et passons à autre chose. En conséquence, la réponse sera la suivante : il suffit d’attendre. Dès que je serai ajouté, je vous montrerai certainement tout. Ne tardez pas, ajoutez-vous pour pouvoir le comprendre plus tard et l'utiliser pour votre plus grand plaisir) Et bien sûr, c'est dommage que vous ne puissiez pas essayer le nouvel outil tout de suite, alors analysons leur documentation et décrivons-le dans plus en détail comment nous pouvons utiliser cet outil pour notre travail. Parlons maintenant de la recherche. Il utilisera des classes et des constructions qui ont du sens dans la bibliothèque que j'écris. Cela rendra les choses plus claires et plus faciles pour moi, et j'espère que ce sera plus facile pour vous aussi.Recherche de base
ImageComparison est la recherche la plus simple qui recherche exactement la requête dans les noms de fichiers et dans leur contenu. Tout semble très simple ici. Si nous voulons trouver clairement par nom de classe, où il est déclaré et où il est utilisé, une telle recherche nous y aidera. Lorsque vous entrez plusieurs mots séparés par des espaces, le résultat sera une recherche pour chacun d'eux séparément : Image Comparison , ce qui signifie qu'il trouvera les fichiers et le code pour Image et Comparison . Si vous devez rechercher une chaîne contenant des espaces, il vous suffit d'utiliser des guillemets. Par exemple : « Comparaison ImageComparison = new ImageComparison() » , puis la recherche correspondra à la chaîne entière. Pour nous échapper, nous utilisons « \ » comme toujours. Jusqu’à présent, tout est intuitif et c’est souvent ainsi que cela se passe. De plus, nous pouvons ajouter des filtres à cette recherche de base. Parlons donc de chacun d’eux. Ce seront des « ET » logiques au filtre que nous avons déjà créé.Filtrer par référentiel
Une fois notre filtre de base prêt, nous pouvons affiner notre recherche et rechercher par référentiel spécifique, ce qui est très pratique. Vous n’avez pas besoin de chercher dans quel dossier se trouve la classe, vous pouvez simplement écrire :
dépôt:romankh3/image-comparison ImageComparisonResult
Où nous devons spécifier repo:${user_name}/${repo_name} . Vous pouvez également effectuer une recherche dans plusieurs référentiels en ajoutant simplement un OU :
repo:romankh3/image-comparison OU repo:romankh3/usage-image-comparison ImageComparisonResult
Comme indiqué sur GitHub, pour le moment, ils ne prennent pas en charge la recherche dans les référentiels où le nom est spécifié comme expression régulière... Cela signifie qu'ils envisagent d'ajouter une telle fonctionnalité et cela signifie que le projet ne s'arrêtera pas au déclaré fonctionnalité et continuera à se développer.
Filtrer par organisation
La recherche par organisation ou utilisateur se fait exactement de la même manière que la recherche par référentiel, seul le mot-clé ne sera pas repo , mais org :
org:romankh3 Comparaison d'images
Et puis la recherche parcourra tous les référentiels de l'utilisateur/de l'organisation.
Filtrer par langages de programmation
Vous pouvez également spécifier une recherche de fichiers dans un langage de programmation spécifique. Ici la construction est la même que pour le référentiel et l'organisation, seul le mot clé est langage :
langue: java Comparaison d'images
Tout comme pour le référentiel, il prend en charge la recherche dans plusieurs langues à la fois à l'aide du mot-clé OR :
langue: java OU langue: ruby ImageComparison
Une liste complète des langues prises en charge par GitHub peut être trouvée ici . Je me demande si BrainFuck est là ? 😂
Filtrer par chemin de fichier
Chaque fichier du projet a son propre chemin et vous pouvez également le parcourir en ajoutant un filtre. Par exemple, il existe un fichier ImageComparisonResult , il a le chemin :
src/main/java/com/github/romankh3/image/comparison/model/ImageComparisonResult.java
Ainsi, pour trouver toutes les classes dont le chemin commence par src/main/java/com/github/romankh3/image , vous avez besoin de :
chemin : src/main/java/com/github/romankh3/image
Peut être utile dans les cas où nous ne voulons pas que les classes de test soient exclues de nos résultats de recherche. Ou vice versa, uniquement des tests. Cela rend votre recherche plus flexible. Un filtre par chemin de fichier peut être spécifié à l'aide d'une expression régulière. Par exemple, nous devons trouver
chemin :src/*/*.js
Opérations booléennes
Et bien sûr, le point culminant de toute construction de filtres est la combinaison de ces éléments à l’aide d’opérations booléennes. Pour cela, nous avons ET, OU ET NON. Je pense que cela devrait nous suffire. Par exemple, créons une requête de recherche complexe : code issu d'une production Java ou Kotlin pour un utilisateur/une organisation spécifique :
repo:romankh3 AND (langue:java OU langue:kotlin) ET NON chemin :*/test/*
Et cela, je vous le dis, est tout simplement incroyable. La demande de recherche est rédigée de manière si simple, rapide, concise et claire qu'il n'y aura aucun problème de recherche et de lecture de la demande.
GO TO FULL VERSION