JavaRush /Blog Java /Random-FR /Recherche de code GitHub : trouvez plus, cherchez moins -...
Roman Beekeeper
Niveau 35

Recherche de code GitHub : trouvez plus, cherchez moins - GitHub a lancé un moteur de recherche

Publié dans le groupe Random-FR
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. « Recherche de code GitHub : trouvez plus, cherchez moins » - GitHub a lancé un moteur de recherche - 1Cela 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.
La liste est déjà impressionnante ! Il s'avère que le moteur de recherche nous donne la possibilité de créer des requêtes de recherche complexes dans lesquelles nous pouvons définir clairement les limites le long desquelles la recherche est nécessaire. La deuxième partie importante du moteur est la navigation dans le code 😳 À quoi servent les environnements de développement et pourquoi les gens paient-ils de l'argent pour eux ? Parce qu'ils nous facilitent la vie, ils nous aident à naviguer dans le code, afin que la vitesse de développement et de lecture du code augmente. Et GitHub nous propose désormais cette fonctionnalité intéressante. C'est incroyable. Oui, je sais qu'à l'heure actuelle, il existe déjà quelque chose de similaire à la navigation dans GitHub, mais la fonctionnalité est encore très courte et rudimentaire. Autrement dit, sans environnement de développement, vous pouvez rechercher où certaines méthodes sont utilisées, où elles ont été définies. C'est tout simplement merveilleux. GitHub, tu me rends heureux. La navigation pour les importations dans les classes est également disponible. Cela résout de nombreux problèmes liés à la recherche et à l'étude d'une bibliothèque particulière sur GitHub. Aujourd’hui, ce processus est plusieurs fois accéléré. Et tout est gratuit. Juste excellent. Sera-t-il sollicité ? Je suis sûr que oui !

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 : « Recherche de code GitHub : trouvez plus, cherchez moins » - GitHub a lancé un moteur de recherche - 2il 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.

Une petite retraite

Même si notre joie n'est pas encore calmée, j'aimerais revenir en 2018 et me souvenir de quelque chose... Vous vous souvenez, quand tout le monde a découvert que Microsoft achetait GitHub, tout le monde pensait que le projet serait enterré ? Que son destin est le chemin du deuxième Skype ? Comment tout le monde a-t-il commencé à déplacer ses projets vers GitLab ? Mais soyons honnêtes, à la suite de ce battage médiatique, j’ai créé et subi quelque chose. Mais pour être honnête, je n’ai plus jamais visité l’endroit où j’avais déplacé les projets. Et d’une manière ou d’une autre, je ne veux pas. Et pourquoi? Il y a aussi des réflexions à ce sujet. Permettez-moi de vous rappeler qu'après la vente de GitHub à Bill Gates, le projet a ajouté la possibilité d'avoir des référentiels privés gratuitement, des actions GitHub ont été publiées pour le processus CI/CD, et bien plus encore. Et maintenant aussi un puissant moteur de recherche. Cela ne ressemble pas à une volonté de faire échouer le projet. C'est plutôt comme si Microsoft ne voulait pas payer d'impôts sur les bénéfices et a réussi un achat à la fin de l'année pour plus de 9 milliards de dollars 😁 Et puis après tout cela, ils ont décidé de développer ce projet. Et c’est vrai que pour un développeur open source, c’est un excellent endroit pour stocker son code. Vous pouvez développer entièrement votre produit sans quitter GitHub.

À la fin

J'ai écrit l'article en une seule fois. J'aime vraiment quand les mots et les émotions coulent comme un geyser. C’est ce qui fait avancer la technologie. Nous restons donc à l’écoute et ne lâchons pas la situation. Je suis sûr que chacun de nous devrait apprendre à l'utiliser. Pour tous ceux qui ne se sont pas inscrits sur GitHub, je recommande fortement de le faire. Ça en vaut la peine. Comme toujours, mes amis, n'oubliez pas de vous abonner à ma chaîne de télégrammes , dans laquelle je regroupe toutes mes activités publiques. En plus des articles que je publie ici, j'y écris des billets plus courts dans lesquels j'aborde des sujets qui m'intéressent du monde du développement et de l'informatique en général. Il y a déjà plus de 800 abonnés ! Et, bien sûr, mon compte GitHub , où je publie tous les projets de démonstration d'articles, mets à jour mes bibliothèques et développe des organisations open source. C'est tout, merci à tous d'avoir lu, ne nous disons pas au revoir 👌
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION