JavaRush /Blog Java /Random-PL /Wyszukiwanie kodu GitHub: Znajdź więcej, szukaj mniej — G...
Roman Beekeeper
Poziom 35

Wyszukiwanie kodu GitHub: Znajdź więcej, szukaj mniej — GitHub uruchomił wyszukiwarkę

Opublikowano w grupie Random-PL
Witam wszystkich, drodzy przyjaciele! Jako miłośnik nowych funkcji na GitHubie, bardzo mnie zainteresowała informacja, że ​​już niedługo wszyscy będziemy mogli szybko i sprawnie przeszukiwać bazę kodu GitHuba. Może to być bardzo wygodne, zwłaszcza jeśli trzeba znaleźć wyrafinowany sposób użycia narzędzia. „Wyszukiwanie kodu GitHub: znajdź więcej, szukaj mniej” – GitHub uruchomił wyszukiwarkę – 1Szczególnie współgra to z faktem, że w Rosji otwarto przyszłego konkurenta GitHuba. Dlatego GitHub zdecydowanie nie powinien spocząć na laurach, mimo że jest niewątpliwie liderem na rynku. Musimy iść dalej i się rozwijać, bo inaczej nie minie nawet godzina, a konkurenci dogonią i zamiatają. I niech to nie wydaje się takie niewiarygodne. Na przykład: ile osób nadal korzysta z telefonów Nokia? Kto w ogóle wie, że robili telefony? Kiedyś byli po prostu nieosiągalnymi, niekwestionowanymi liderami rynku... A teraz pojawiają się gdzieś w sferze błędu statystycznego.

Pierwsze wrażenie

GitHub stworzył projekt, w którym możesz wyszukiwać, nawigować i analizować swój kod oraz miliardy wierszy kodu opublikowanego w GitHub. Co ważne, wyszukiwanie jest skalowalne, szybkie i dokładne. Został stworzony od podstaw specjalnie do wyszukiwania kodów. Nawigacja działa dla 10 głównych języków programowania bez ustawień (mamy nadzieję, że w przyszłości lista będzie się powiększać). Możesz wyszukiwać za pomocą wyrażeń regularnych, co jest bardzo fajne. Dostępne są również inne filtry:
  • według organizacji;
  • przez języki programowania;
  • przez konkretnego właściciela;
  • według rozszerzenia pliku;
  • za pomocą wyrażenia regularnego.
Lista już robi wrażenie! Okazuje się, że wyszukiwarka daje nam możliwość tworzenia złożonych zapytań wyszukiwania, w których możemy jasno określić granice, wzdłuż których potrzebne jest wyszukiwanie. Drugą ważną częścią silnika jest nawigacja po kodzie 😳 Do czego wygodne są środowiska deweloperskie i dlaczego ludzie płacą za nie pieniądze? Ponieważ ułatwiają nam życie, pomagają nam poruszać się po kodzie, dzięki czemu wzrasta szybkość tworzenia i czytania kodu. GitHub oferuje nam teraz tę fajną funkcję. To jest niesamowite. Tak, wiem, że w tej chwili w GitHubie jest już coś na wzór nawigacji, jednak funkcjonalność jest nadal bardzo krótka i prymitywna. Oznacza to, że bez środowiska programistycznego można wyszukiwać, gdzie zastosowano określone metody i gdzie zostały one zdefiniowane. To po prostu cudowne. GitHub, uszczęśliwiasz mnie. Dostępna jest również nawigacja dotycząca importu w klasach. Rozwiązuje to wiele problemów związanych ze znalezieniem i studiowaniem konkretnej biblioteki na GitHubie. Teraz proces ten uległ wielokrotnie przyspieszeniu. I to wszystko za darmo. Po prostu doskonałe. Czy będzie poszukiwany? Jestem pewien, że tak!

Porozmawiajmy bardziej szczegółowo o wyszukiwaniu

Bardzo ciekawie jest rzucić okiem i spróbować poszukać samemu: czy jest to tak wygodne, jak mówią? Na razie ta funkcja nie jest dostępna publicznie i możesz dodać się do listy oczekujących za pomocą linku . Tam wypełniamy wszystkie punkty, pytania są proste, nie będę ich tutaj opisywać. W efekcie zostajemy wpisani na listę oczekujących i ruszamy dalej. W rezultacie odpowiedź będzie następująca: „Wyszukiwanie kodu GitHub: znajdź więcej, szukaj mniej” – GitHub uruchomił wyszukiwarkę – 2musisz po prostu poczekać. Jak tylko zostanę dodany, na pewno wszystko Wam pokażę. Nie zwlekaj, dodaj siebie, żeby później to rozgryźć i wykorzystać ku swojej radości) No i oczywiście szkoda, że ​​nowego narzędzia nie można od razu wypróbować, więc przeanalizujmy ich dokumentację i opiszmy w więcej szczegółów, w jaki sposób możemy wykorzystać to narzędzie w naszej pracy. Teraz o poszukiwaniach. Będzie używać klas i konstrukcji, które mają sens w bibliotece , którą piszę. Dzięki temu będzie to dla mnie jaśniejsze i łatwiejsze, mam nadzieję, że dla Was również.

Podstawowe szukanie

ImageComparison to najprostsza wyszukiwarka, która wyszukuje dokładnie zgodnie z zapytaniem w nazwach plików i ich zawartości. Tutaj wszystko wydaje się bardzo proste. Jeśli chcemy jasno znaleźć po nazwie klasy, gdzie jest ona zadeklarowana i gdzie jest używana, takie wyszukiwanie nam w tym pomoże. Jeśli wpiszesz wiele słów oddzielonych spacjami, wynikiem będzie wyszukiwanie każdego z nich osobno: Image Comparison , co oznacza, że ​​znajdzie pliki i kod zarówno dla Image , jak i Comparison . Jeśli chcesz wyszukać ciąg zawierający spacje, wystarczy użyć cudzysłowów. Na przykład: „Porównanie ImageComparison = new ImageComparison()” , a następnie wyszukiwanie obejmie cały ciąg. Do ucieczki używamy jak zawsze „\”. Na razie wszystko jest intuicyjne i często tak właśnie się dzieje. Co więcej, do tego podstawowego wyszukiwania możemy dodać filtry. Dlatego porozmawiajmy o każdym z nich. Będą to logiczne „ORAZ” do utworzonego już filtra.

Filtruj według repozytorium

Gdy nasz podstawowy filtr będzie już gotowy, możemy zawęzić poszukiwania i przeszukiwać według konkretnego repozytorium, co jest bardzo wygodne. Nie musisz szukać folderu, w którym znajduje się klasa, możesz po prostu napisać:
repo:romankh3/image-comparison ImageComparisonResult
Gdzie musimy określić repo:${user_name}/${repo_name} . Możesz także przeszukiwać wiele repozytoriów, po prostu dodając OR:
repo:romankh3/image-comparison LUB repo:romankh3/usage-image-comparison ImageComparisonResult
Jak podano na GitHubie, w tej chwili nie obsługują wyszukiwania w repozytoriach, gdzie nazwa jest podana w formie wyrażenia regularnego... Oznacza to, że planują dodać taką funkcję i oznacza to, że projekt nie zatrzyma się na zadeklarowanym funkcjonalność i będzie się dalej rozwijać.

Filtruj według organizacji

Wyszukiwanie według organizacji lub użytkownika odbywa się w taki sam sposób, jak wyszukiwanie według repozytorium, z tą różnicą, że słowem kluczowym nie będzie repo , ale org :
org:romankh3 Porównanie obrazów
Następnie wyszukiwanie zostanie przeprowadzone po wszystkich repozytoriach użytkownika/organizacji.

Filtruj według języków programowania

Można także określić wyszukiwanie plików w określonym języku programowania. Tutaj konstrukcja jest taka sama jak w przypadku repozytorium i organizacji, tylko słowem kluczowym jest język :
język:Java ImageComparison
Podobnie jak w przypadku repozytorium umożliwia wyszukiwanie w kilku językach jednocześnie za pomocą słowa kluczowego OR:
język:Java LUB język:Ruby ImageComparison
Pełną listę języków obsługiwanych przez GitHub znajdziesz tutaj . Zastanawiam się, czy BrainFuck tam jest? 😂

Filtruj według ścieżki pliku

Każdy plik w projekcie ma swoją ścieżkę, można ją także przeszukiwać dodając filtr. Przykładowo istnieje plik ImageComparisonResult , ma on ścieżkę:
src/main/Java/com/github/romankh3/image/comparison/model/ImageComparisonResult.java
Aby więc znaleźć wszystkie klasy, których ścieżka zaczyna się od src/main/Java/com/github/romankh3/image , potrzebujesz:
ścieżka: src/main/Java/com/github/romankh3/image
Może być przydatny w przypadkach, gdy nie chcemy, aby klasy testowe zostały pominięte w wynikach wyszukiwania. Lub odwrotnie, tylko testy. Dzięki temu Twoje wyszukiwanie będzie bardziej elastyczne. Filtr według ścieżki pliku można określić za pomocą wyrażenia regularnego. Na przykład musimy znaleźć
ścieżka:src/*/*.js

Operacje logiczne

I oczywiście kulminacją całego budowania filtrów jest połączenie tej materii za pomocą operacji boolowskich. Do tego mamy AND, OR i NOT. Myślę, że to powinno nam wystarczyć. Przykładowo utwórzmy złożone zapytanie: kod z produkcji Java lub Kotlin dla konkretnego użytkownika/organizacji:
repo:romankh3 ORAZ (język:Java LUB język:kotlin) ORAZ NIE ścieżka:*/test/*
I to, mówię wam, jest po prostu niewiarygodne. Zapytanie jest napisane tak prosto, szybko, zwięźle i przejrzyście, że nie będzie problemów z wyszukaniem i odczytaniem zapytania.

Mały odwrót

Choć nasz zachwyt jeszcze nie ostygł, chcę wrócić do 2018 roku i coś sobie przypomnieć… Pamiętacie, kiedy wszyscy dowiedzieli się, że Microsoft kupuje GitHuba, wszyscy myśleli, że projekt zostanie pogrzebany? Że jego przeznaczeniem jest droga drugiego Skype'a? Jak wszyscy zaczęli przenosić swoje projekty do GitLaba? Ale bądźmy szczerzy, w obliczu tego szumu stworzyłem coś i cierpiałem. Ale szczerze mówiąc, nigdy więcej nie odwiedziłem miejsca, w którym przenosiłem projekty. I jakoś nie chcę. I dlaczego? Są też przemyślenia na ten temat. Przypomnę, że po sprzedaży GitHuba Billowi Gatesowi w projekcie dodano możliwość darmowego posiadania prywatnych repozytoriów, udostępniono GitHub Actions dla procesu CI/CD i wiele więcej. A teraz dostępna jest także potężna wyszukiwarka. Nie brzmi to jak chęć zatopienia projektu. To raczej tak, jakby Microsoft nie chciał płacić podatku od zysków i pod koniec roku dokonał udanego zakupu za ponad 9 miliardów dolarów 😁 A potem po tym wszystkim postanowili rozwinąć ten projekt. I prawdą jest, że dla programisty open source jest to świetne miejsce do przechowywania kodu. Możesz w pełni rozwijać swój produkt bez opuszczania GitHuba.

Na końcu

Artykuł napisałem za jednym razem. Naprawdę uwielbiam, kiedy słowa i emocje płyną jak gejzer. To właśnie popycha technologię do przodu. Trzymamy więc rękę na pulsie i nie odpuszczamy sytuacji. Jestem pewna, że ​​każdy z nas powinien nauczyć się z niego korzystać. Każdemu, kto nie zarejestrował się w GitHub, gorąco polecam to zrobić. To jest tego warte. Jak zawsze, przyjaciele, nie zapomnijcie zasubskrybować mojego kanału telegramowego , w którym łączę wszystkie moje działania publiczne. Oprócz artykułów, które tu publikuję, piszę tam krótsze posty, w których poruszam interesujące mnie tematy ze świata developmentu i IT w ogóle. Jest tam już ponad 800 subskrybentów! I oczywiście moje konto GitHub , gdzie publikuję wszystkie projekty demonstracyjne artykułów, aktualizuję moje biblioteki i rozwijam organizacje open source. To wszystko, dziękuję wszystkim za przeczytanie, nie żegnajmy się 👌
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION