Sourcegraph: uniwersalne wyszukiwanie kodu i inteligencja

Ilość kodu na świecie eksploduje. Ponieważ oprogramowanie staje się podstawowym motorem innowacji w prawie każdej branży, programiści muszą mieć do czynienia z większymi, bardziej współzależnymi bazami kodów. Większość organizacji każdego dnia ustanawia nowe rekordy dotyczące rozmiaru swojej bazy kodów.

W tym świecie tradycyjne narzędzia programistyczne, takie jak edytory i środowiska IDE, nie spełniają wymagań. Zostały zaprojektowane dla indywidualnych programistów pracujących nad pojedynczymi fragmentami kodu, a nie dla zespołów programistycznych opracowujących duże bazy kodu na dużą skalę. W nowoczesnych organizacjach zajmujących się oprogramowaniem przeszukiwanie ogromnych baz kodów, rozumienie nieznanego kodu i dzielenie się wiedzą instytucjonalną stają się kwestiami pierwszego rzędu. Zespoły programistyczne potrzebują narzędzia, które umożliwia tę uniwersalną inteligencję kodu.

Wyszukiwanie kodu musi być uniwersalne, aby było skuteczne - musi obejmować wszystkie języki, wszystkie repozytoria, wszystkie hosty kodu i wszystkie pliki konfiguracyjne. Wyszukiwanie ograniczone tylko do języka Python lub tylko GitHub przypomina indeksowanie przez Google tylko witryn internetowych zbudowanych w Ruby on Rails lub Apache HTTP Server - nie jest to początkowe rozwiązanie dla zespołów programistycznych pracujących we współczesnym świecie kodu.

Wiodące firmy technologiczne, takie jak Uber, Lyft i Yelp, używają Sourcegraph do zmagania się z tym wszechświatem kodu. Firmy takie jak Google i Facebook wydały setki milionów dolarów na zbudowanie wewnętrznych narzędzi podobnych do Sourcegraph. GitLab, firma zajmująca się hostingiem i programowaniem kodu, niedawno ogłosiła partnerstwo z Sourcegraph w celu natywnej integracji niektórych funkcji Sourcegraph z interfejsem użytkownika GitLab.

Najważniejsze powody, dla których warto używać Sourcegraph

Sourcegraph to platforma programistyczna zaprojektowana do rozwiązywania problemów, z którymi borykają się nowoczesne zespoły programistyczne. Sourcegraph rozwiązuje krytyczne problemy odczuwane przez inżynierów oprogramowania i liderów technicznych.

Oto główne powody, dla których warto używać Sourcegraph dla indywidualnych programistów:

  1. Pozostań w ruchu, unikaj śmierci dzięki tysiącom przełączników kontekstu
  2. Znajdź igłę w stogu siana z kodem
  3. Spraw, by przeglądy kodu były szybkie, dokładne i mniej bolesne - koniec z TL; DR
  4. Ucz się na przykładzie zamiast słabej lub nieistniejącej dokumentacji
  5. Spraw, aby duże refaktory i zmiany w kodzie były wykonalne
  6. Łatwo udostępniaj i omawiaj kod, zwłaszcza ze współpracownikami zdalnymi
  7. To open source

A oto najczęstsze powody, dla których liderzy inżynierii wprowadzają Sourcegraph do swojej organizacji:

  1. Zwiększ codzienną produktywność zespołu
  2. Zachęcaj do dzielenia się wiedzą
  3. Zachęcaj do przyjęcia nowych narzędzi w całej organizacji
  4. Przyspiesz wdrażanie nowych inżynierów
  5. Skróć czas reakcji na incydent
  6. Utrzymuj i rozpowszechniaj standardy jakości kodu
  7. Twórz lepsze wewnętrzne narzędzia programistyczne za pomocą interfejsu API kodu jako danych
  8. Jest łatwy do wdrożenia i skalowania wraz z zespołem i bazą kodu

Pozostań w ruchu

Programowanie produktywności często kończy się śmiercią przez tysiąc przełączeń kontekstu. Znany scenariusz to taki, w którym programista jest w trakcie wdrażania funkcji lub poprawki błędu, ale nagle musi wskoczyć do innej części bazy kodu. Być może muszą znaleźć jakąś funkcję w bibliotece lub dowiedzieć się, jak jej używać. Być może kolega ma pytanie dotyczące innego fragmentu kodu. Teraz programista musi otworzyć te pliki w swoim IDE i tym samym zniszczyć ich obecny stan pracy, który będzie musiał być później boleśnie przywrócony i zrekonstruowany.

Przerwy te są destrukcyjne, ponieważ wyprowadzają dewelopera ze stanu przepływu, a negatywny wpływ na produktywność jest znaczący. Interfejs wyszukiwania i eksploracji kodu oparty na przeglądarce Sourcegraph pozwala programistom zachować stan edytora podczas eksploracji innych części kodu. To zachowanie stanu roboczego sprawia, że ​​przełączanie kontekstu jest znacznie mniej kosztowne, pozwalając indywidualnym programistom zrobić więcej przy mniejszym obciążeniu.

Sourcegraph

Znajdź igły w stogu siana

Typowym zadaniem w codziennej inżynierii oprogramowania jest wyszukanie określonego ciągu lub wzorca w kodzie. Może to być komunikat o błędzie, który pojawia się w dziennikach produkcyjnych, anty-wzorzec, który powinien zostać usunięty, lub po prostu jakiś unikalny ciąg, który programista kojarzy z konkretnym punktem zainteresowania w kodzie źródłowym.

Sourcegraph

Znalezienie tych igieł jest często bolesne. IDE mają możliwości wyszukiwania, ale dany kod może istnieć poza tym, co zostało otwarte. Narzędzia wiersza poleceń również nie mają dostępu do kodu poza lokalnym systemem plików i mogą być niewygodne w użyciu. Hosty kodu przeszukują tylko kod, który obsługują, i często to wyszukiwanie jest powolne lub niskiej jakości. Wyszukiwanie kodu musi być uniwersalne, aby było skuteczne.

Dzięki Sourcegraph programiści mogą wyszukiwać kod, który obejmuje cały świat kodu, z pełną obsługą wyrażeń regularnych i bardziej zaawansowanym dopasowywaniem wzorców, takich jak składnia Comby. Wyszukiwarka Sourcegraph jest zoptymalizowana pod kątem kodu źródłowego, więc jest niesamowicie szybka. Został również zaprojektowany od podstaw z myślą o dużych bazach kodu i organizacjach. Niektóre organizacje mają setki tysięcy repozytoriów, a Sourcegraph stawia je wszystkie na wyciągnięcie ręki każdego programisty.

Ekspresyjna i wydajna składnia wyszukiwania pozwala użytkownikowi filtrować wyniki według pliku, języka, repozytorium i niezliczonych innych atrybutów. Sourcegraph jest również świadomy semantyki kodu i umożliwia bezpośrednie wyszukiwanie symboli.

Sourcegraph

Ucz się na przykładzie

„Jak tego używać?” to pytanie, które programiści zadają dziesiątki razy dziennie. Najczęściej najlepszą dokumentacją jest przykład użycia. Globalna funkcja znajdowania odniesień firmy Sourcegraph umożliwia programistom wyszukiwanie przykładów użycia w całym świecie kodu, nawet jeśli idealny przykład użycia istnieje w innym repozytorium. Jest to szczególnie przydatne w przypadku baz kodów, które są stare, nieznane lub słabo udokumentowane.

Spraw, by przeglądy kodu były szybkie i dokładne

Typowy żart dotyczący przeglądu kodu mówi, że jeśli prześlesz 10-wierszowy zestaw zmian, otrzymasz 10 komentarzy, ale jeśli prześlesz tysiąc-wierszowy zestaw zmian, żadnych komentarzy - i automatyczne zatwierdzenie.

Przeglądy kodu jakości są często bolesne i powolne, ponieważ tradycyjnym narzędziom brakuje wielu niezbędnych funkcji, które mogłyby pomóc recenzentowi szybko zrozumieć zmiany kodu. Sourcegraph dodaje nawigację po kodzie i podpowiedzi podobne do IDE do istniejącego przepływu pracy przeglądu kodu przez deweloperów.

Etykietki narzędzi Sourcegraph pozwalają recenzentowi szybko zajrzeć do definicji funkcji i dokumentacji bez konieczności ściągania zestawu zmian do lokalnego środowiska IDE. Bez opuszczania interfejsu przeglądu kodu, Sourcegraph pozwala przejść do definicji, aby w pełni zrozumieć, jak działa fragment kodu, do którego istnieją odwołania.

Sourcegraph

Sourcegraph integruje te funkcje nawigacji w kodzie bezpośrednio z interfejsem użytkownika popularnych narzędzi do przeglądu kodu, takich jak GitHub Pull Requests, GitLab Merge Requests i Phabricator, dzięki czemu środowisko programistyczne poprawia się bez żadnych kosztów przełączania.

Lepsze przeglądy kodu zmniejszają liczbę błędów, utrzymują standardy jakości kodu i zwiększają rozpowszechnianie wiedzy instytucjonalnej w całej organizacji inżynierskiej.

Sourcegraph Sourcegraph

Spraw, aby duże refaktory były podatne na działanie

Wraz ze wzrostem bazy kodów, refaktory na dużą skalę stają się nieuniknionym wąskim gardłem w poprawianiu jakości kodu i wdrażaniu nowych funkcji. Na przykład interfejs API udostępnionej biblioteki może wymagać aktualizacji w celu obsługi nowej funkcji, ale może to wymagać aktualizacji dziesiątek lub nawet setek podrzędnych osób zależnych. Liczba miejsc w kodzie, które muszą ulec zmianie w wyniku aktualizacji jednej współdzielonej zależności, może łatwo zwiększyć się do tysięcy punktów rozmieszczonych w różnych komponentach należących do różnych zespołów.

Sourcegraph nie tylko pomaga programistom w zrozumieniu wpływu refaktora (umożliwiając im przeszukiwanie i odkrywanie wszystkich miejsc, w których używana jest dana funkcja biblioteki), ale także zapewnia urządzenie do wykonywania refaktora i zarządzania kampanią zestawów zmian i przeglądów kodu. Sourcegraph Campaigns to pierwsze tego rodzaju narzędzie dostępne dla wszystkich przedsiębiorstw programistycznych. Podobnie jak wyszukiwanie kodu Sourcegraph, Campaigns obsługuje nową składnię dopasowywania wzorców Comby, która jest bardziej przyjazna dla użytkownika i bardziej wyrazista niż wyrażenia regularne.

Sourcegraph

Zachęcaj do dzielenia się wiedzą w całej organizacji

Nowoczesne zespoły programistyczne współpracują, aby dzielić się instytucjonalną wiedzą o kodzie. Jednak omawianie kodu jest często trudne z następujących powodów:

  • Nie możesz udostępniać hiperłączy do plików otwartych w swoim IDE
  • Tradycyjne narzędzia do przeglądania kodu przeglądarki nie mają dobrej nawigacji po kodzie

Sourcegraph oferuje to, co najlepsze z obu światów: precyzyjną i dokładną nawigację po kodzie w interfejsie internetowym. Ułatwia to zarówno udostępnianie linków, jak i odbiorcy natychmiastowe rozpoczęcie eksploracji i zrozumienia powiązanego kodu, bez kłopotów i tarć związanych z pobieraniem go w lokalnym środowisku IDE.

Sourcegraph

Udostępnianie łącza kodu staje się jeszcze ważniejsze dla zdalnych zespołów inżynierów. Linki Sourcegraph są udostępniane setki razy dziennie na czacie, w trackerach problemów oraz w oficjalnej dokumentacji i stronach wiki. Stają się one niezbędnymi kanałami wiedzy, zwłaszcza gdy nie można wezwać współpracownika do swojego biurka.

To open source

Sourcegraph jest oprogramowaniem open source. Narzędzie do śledzenia problemów jest publiczne, a zespół bardzo szybko reaguje na zgłoszenia błędów i prośby o dodanie funkcji. Współcześni programiści powinni preferować otwarte narzędzia z tych samych powodów, dla których preferują biblioteki open source: podstawowa wiedza, na której zbudowane jest oprogramowanie i zespół, powinna być otwarta dla wszystkich, aby wszyscy mogli zrozumieć, jak to działa i wszyscy mogą pomóc w jego ulepszaniu.

Zwiększ ogólną produktywność swojego zespołu

W jaki sposób projekt oprogramowania zostaje opóźniony o rok? Jeden dzień na raz. Sourcegraph pomaga Twojemu zespołowi wyprzedzać terminy, usprawniając codzienne zadania. Pozwala programistom zminimalizować wpływ zmiany kontekstu, pozostać na bieżąco, szybciej przeglądać kod i znajdować odpowiedzi na pytania typu „Jak z tego korzystać?” o które są zadawane dziesiątki razy dziennie. Te wzrosty wydajności szybko się sumują. 

Zachęcaj do przyjęcia nowych narzędzi w całej organizacji

Większość użytkowników Sourcegraph używa go wiele razy dziennie, ale wiele narzędzi programistycznych jest używanych znacznie rzadziej. Wdrażanie nowych narzędzi może stanowić wyzwanie dla dyrektorów ds. Informatyki i dyrektorów ds. Produktywności programistów.

Monitory obserwowalności i wydajności, wskaźniki aplikacji rozproszonych, analizatory pokrycia kodu - to wszystko narzędzia, które mogą być trudne do wykrycia lub niedostępne dla wszystkich członków zespołu.

Sourcegraph

Interfejs API rozszerzeń Sourcegraph pozwala narzędziom innych firm dodawać adnotacje do interfejsu internetowego Sourcegraph i interfejsu użytkownika hostów kodu, takich jak GitHub i GitLab. Istnieją rozszerzenia dla popularnych gotowych narzędzi, takich jak Codecov, Datadog i Sentry, a wewnętrzne zespoły narzędzi programistycznych mogą również tworzyć prywatne rozszerzenia dla narzędzi wewnętrznych.

Przyspiesz wdrażanie nowych inżynierów

Wdrażanie nowych inżynierów może być trudne, zwłaszcza jeśli organizacja inżynieryjna lub baza kodu jest duża. Sourcegraph skraca czas między datą rozpoczęcia a pierwszym zatwierdzeniem, umożliwiając szybsze zrozumienie istniejącego kodu. Nowi pracownicy często spędzają większość czasu na skakaniu po nieznanych częściach bazy kodu, aby zbudować mentalny model kodu organizacji. Uniwersalna nawigacja po kodzie Sourcegraph pozwala im eksplorować całą bazę kodu przy minimalnym przełączaniu kontekstu, a możliwość udostępniania łączy pozwala zadawać konkretne pytania, które nie tracą czasu starszych inżynierów.

Skróć czas reakcji na incydent

Podczas reagowania na incydent produkcyjny liczy się każda minuta. Wyszukiwanie kodu źródłowego skraca czas potrzebny do ustalenia przyczyny problemu, ułatwiając zlokalizowanie komunikatów o błędach w kodzie źródłowym. Często komunikat o błędzie pochodzi z wcześniejszej zależności i dlatego trudno go znaleźć za pomocą IDE lub narzędzia wyszukiwania wiersza polecenia. Sourcegraph indeksuje cały kod związany z Twoją organizacją i umożliwia natychmiastowe znalezienie komunikatów o błędach.

Interfejs API rozszerzenia Sourcegraph umożliwia również integrację narzędzi DevOps z Sourcegraph. Na przykład rozszerzenie Sentry wyświetla liczbę alertów produkcyjnych generowanych przez określony wiersz kodu oprzyrządowania. Zapewnia to cenną wiedzę kontekstową podczas debugowania incydentów.

Sourcegraph

Utrzymuj i rozpowszechniaj standardy jakości kodu

Sourcegraph umożliwia organizacjom utrzymywanie i rozpowszechnianie standardów jakości kodu za pomocą kilku wektorów:

  • Wydajny, ale dokładny przegląd kodu, z nawigacją po kodzie Sourcegraph i etykietami narzędzi, zapobiega scalaniu kodu o niskiej jakości.
  • Zautomatyzowane narzędzia do sprawdzania jakości kodu (np. Codecov) można zintegrować z przeglądaniem kodu za pośrednictwem interfejsu API rozszerzenia Sourcegraph. Sourcegraph dodaje te adnotacje do istniejącego narzędzia do przeglądania kodu.
  • Udostępnianie linków do kodu i nawigacja po kodzie w przeglądarce umożliwiają programistom odwoływanie się do przykładów wzorców do emulacji i zniechęcanie do stosowania anty-wzorców.

Udostępniaj swoją bazę kodu jako zbiór danych za pośrednictwem interfejsu API

Sourcegraph udostępnia potężny interfejs API GraphQL. Interfejs API jest używany przez wewnętrzne zespoły narzędzi programistycznych do tworzenia narzędzi wewnętrznych, które wykorzystują możliwości Sourcegraph, takie jak wyszukiwanie kodu uniwersalnego, nawigacja po kodzie i statystyki kodu. Tokeny dostępu umożliwiają zaufanym narzędziom bezpieczne uwierzytelnianie w Sourcegraph. Sourcegraph jest dostarczany z interaktywnym eksploratorem API, który ułatwia naukę i eksperymentowanie z API.

Sourcegraph