Pretius: strategiczna fuzja jako odpowiedź na współczesne wyzwania
Pretius. Budujemy mądrzej:
strategiczna fuzja jako odpowiedź na współczesne wyzwania

Samouczek GitHub Copilot: przetestowaliśmy go z wykorzystaniem języka Java i oto jak możesz to zrobić samodzielnie.

Default author image
Karol Świder

Senior Java Developer

  • 30 kwietnia, 2024

Spis

[Uwaga] Ten artykuł został pierwotnie przygotowany w języku angielskim i został przetłumaczony na język polski.

Ten artykuł opisuje narzędzie GitHub Copilot oraz główne wytyczne i założenia dotyczące jego wykorzystania w projektach programistycznych. Wytyczne dotyczą zarówno konfiguracji narzędzia, jak i jego zastosowania w codziennej pracy, zakładając, że czytelnik będzie używał GitHub Copilot z IntelliJ IDEA (poprzez dedykowany plugin).

GitHub Copilot – co to jest?

GitHub Copilot to asystent programisty AI, który wykorzystuje model generative AI wytrenowany na wszystkich językach programowania dostępnych w repozytoriach GitHub. Pełny opis i dokumentacja narzędzia są dostępne tutaj.

Na rynku istnieją inne podobne narzędzia, takie jak OpenAI Codex, JetBrains AI Assistant czy Tabnine, ale GitHub Copilot wyróżnia się następującymi cechami:

  • Największy i najbardziej zróżnicowany zbiór danych do trenowania modelu AI – repozytoria GitHub
  • Szacowany udział w rynku – obecnie ok. 40-50% (według artykułu Abhaya Mishry opartego na nieujawnionych danych branżowych), jednak rynek jest bardzo dynamiczny
  • Wsparcie dla popularnych technologii – przetestowaliśmy go z językami Java, Scala, Kotlin, Groovy, SQL, Spring, Dockerfile, OpenShift, Bash
  • Bardzo dobra integracja z IDE JetBrains IntelliJ IDEA
  • Niski próg wejścia dzięki szybkiej i łatwej konfiguracji, ogólnej prostocie obsługi, przejrzystej dokumentacji i wielu przykładom użycia w internecie
  • Szeroki zakres funkcjonalności, w tym:
    • Sugestie podczas pisania kodu
    • Generowanie kodu na podstawie komentarzy w języku naturalnym
    • Uwzględnianie istniejącego kodu przy generowaniu nowych fragmentów (code snippets)
    • Tworzenie testów jednostkowych (unit tests)
    • Chat – pozwala zadawać pytania dotyczące kodu, języka i technologii, a także sugeruje poprawki w celu uproszczenia kodu
    • CLI – wsparcie dla pracy w konsoli i tworzenia skryptów bash

Nasze cele

Naszym głównym celem przy korzystaniu z GitHub Copilot była poprawa efektywności pisania kodu oraz jego jakości. Ponadto chcieliśmy, aby wspierał nas w pracy, w której programistom brakuje wiedzy i doświadczenia. Oto konkretne cele, które chcieliśmy osiągnąć w naszym zespole programistycznym dzięki GitHub Copilot:

  1. Przyspieszenie developmentu:
  • Generowanie fragmentów kodu
  • Generowanie zapytań SQL
  • Podpowiedzi przy tworzeniu i modyfikacji plików konfiguracyjnych OpenShift oraz Dockerfile
  • Szybsze wyszukiwanie rozwiązań za pomocą funkcji chatu, np. objaśnianie wyrażeń regularnych (regex), działania bibliotek czy mechanizmów frameworków
  1. Poprawa jakości kodu:
  • Generowanie testów jednostkowych z przypadkami brzegowymi (edge cases) – zarówno w języku Java, jak i Groovy
  • Sugerowanie poprawek i uproszczeń we własnym kodzie
  1. Praca z rzadziej używanymi technologiami:
  • Objaśnianie i generowanie kodu (w tym testów jednostkowych) w językach Scala i Kotlin
  • Wsparcie przy korzystaniu z rozwiązań typu „legacy”, takich jak Activiti itp.
  • Pomoc w tworzeniu i rozumieniu plików konfiguracyjnych
  1. Bardziej efektywna praca administracyjna w konsoli przy użyciu funkcji CLI

Wytyczne dotyczące ograniczeń narzędzia

Ponieważ GitHub Copilot opiera się na generative AI, zawsze należy pamiętać, że może generować niepoprawny kod lub odpowiedzi. Dlatego korzystając z narzędzia, trzeba być świadomym potencjalnych ograniczeń i stosować zasadę ograniczonego zaufania oraz weryfikacji. Główne ograniczenia przedstawiono w poniższej tabeli.

Ograniczenie Opis
Ograniczony zakres wiedzy Narzędzie bazuje na kodzie znalezionym w repozytoriach GitHub. Niektóre problemy, złożone struktury, języki lub notacje danych mają słabą reprezentację w zbiorach treningowych.
Dynamiczny rozwój i funkcje w fazie beta Narzędzie rozwija się bardzo dynamicznie. Poprawki i aktualizacje pojawiają się co tydzień lub co kilka tygodni, co wskazuje na to, że wiele elementów narzędzia może nie działać jeszcze idealnie. Niektóre funkcjonalności, jak GitHub Copilot CLI, wciąż są w fazie beta.
Niedokładny kod Dostawca narzędzia informuje, że generowany kod może nie spełniać oczekiwań użytkownika, może nie rozwiązywać rzeczywistego problemu i może zawierać błędy.
Niedokładne odpowiedzi chatu W przypadku korzystania z chatu celność odpowiedzi zależy w dużej mierze od sformułowanego pytania lub polecenia. Dokumentacja mówi, że „Copilot Chat nie jest zaprojektowany do odpowiadania na pytania niezwiązane z kodowaniem”, więc możliwe są odpowiedzi, zwłaszcza w obszarach nieściśle związanych z kodem (projektowanie itp.), które nie będą odpowiednie lub sensowne.
Niebezpieczny kod Zbiór treningowy (repozytoria) może zawierać elementy kodu naruszające zasady bezpieczeństwa (security i safety), takie jak klucze API, skanowanie sieci, adresy IP, kod przeciążający zasoby lub powodujący wycieki pamięci (memory leaks) itp.


Aby zminimalizować negatywny wpływ zidentyfikowanych ograniczeń GitHub Copilot, należy zawsze:

  • Sprawdzać alternatywne sugestie (używając Ctrl+[ i Ctrl+], itp.) i wybierać te, które najlepiej pasują do danej sytuacji
  • Czytać i analizować poprawność generowanego kodu
  • Testować i uruchamiać kod w środowiskach przedprodukcyjnych – przede wszystkim lokalnie i w środowisku deweloperskim
  • Poddawać wygenerowany kod procesowi code review

Ważne: Nigdy nie wdrażaj kodu wygenerowanego przez GitHub Copilot na środowiska produkcyjne bez przeprowadzenia powyższych weryfikacji.

Wytyczne dotyczące konfiguracji

W tej sekcji przedstawimy podstawowe informacje dotyczące planów cenowych (z zaletami i wadami każdej opcji z perspektywy naszych celów) oraz konfiguracji konta osobistego (zarówno dla GitHub Copilot, jak i pluginu IntelliJ IDEA).

Plany cenowe (Pricing plans)

GitHub Copilot oferuje trzy plany subskrypcyjne o różnym zakresie funkcjonalności i kosztach. W naszym przypadku warto było rozważyć dwa plany: Copilot Individual lub Copilot Business. Plan Copilot Enterprise dodatkowo oferuje dostęp do chatu przez stronę github.com oraz generowanie podsumowań dla pull requests, co nie było istotne dla naszych założeń (ale może być inne w Twoim przypadku). Główne zalety i wady obu planów przedstawiono w poniższej tabeli.

Plan Zalety Wady
GitHub Copilot Individual Niższy koszt: 10 USD/miesiąc/użytkownik

Oferuje kluczowe funkcjonalności wymagane do osiągnięcia zamierzonych celów

Brak kontroli organizacji nad konfiguracją narzędzia i dostępem użytkowników
GitHub Copilot Business Oferuje kluczowe funkcjonalności wymagane do osiągnięcia zamierzonych celów

Kontrola organizacji nad konfiguracją narzędzia i dostępem użytkowników

Wyższy koszt: 19 USD/miesiąc/użytkownik


W naszym przypadku Copilot Business był lepszą opcją, zwłaszcza że pozwala na pełną kontrolę nad konfiguracją i dostępem do narzędzia dla programistów w zespole. Jeśli pracujesz samodzielnie, plan Copilot Individual może być wystarczający.

Konfiguracja konta

GitHub Copilot można skonfigurować podczas zakupu subskrypcji, a ustawienia można również zmienić po aktywacji konta w ustawieniach konta organizacji na GitHub. Na poziomie konta istniały dwa kluczowe parametry do skonfigurowania dla naszego przypadku użycia, opisane w poniższej tabeli.

Nazwa opcji Opis Zalecane ustawienia
Suggestions matching public code Dostępne opcje:

Allowed (Dozwolone) oraz Blocked (Zablokowane)

Określa, czy pokazywać, czy blokować sugestie kodu, które pokrywają się w około 150 liniach z kodem publicznym

Blocked

Ta opcja zmniejsza ryzyko powielania kodu z publicznych repozytoriów, redukując tym samym niepewność co do praw autorskich do kodu

Allow GitHub to use my code snippets for product improvements Dostępne opcje: Yes (Tak) oraz No (Nie)

Określa, czy GitHub, jego podmioty stowarzyszone i strony trzecie mogą używać fragmentów kodu użytkownika do badania i ulepszania sugestii GitHub Copilot oraz powiązanych modeli i funkcji

No

Jeśli planujesz używać GitHub Copilot do celów komercyjnych, GitHub i powiązane z nim podmioty nie powinny używać kodu użytkownika ze względu na kwestie praw autorskich

Tutaj znajduje się szczegółowy opis i instrukcje dotyczące zmiany opcji konfiguracyjnych na Twoim koncie GitHub.

Konfiguracja pluginu IntelliJ IDEA

Aby włączyć GitHub Copilot w IDE IntelliJ IDEA, musisz zainstalować rozszerzenie GitHub Copilot z marketplace Visual Studio Code. Instalacja odbywa się bezpośrednio w IDE w ustawieniach pluginów. Po instalacji zaloguj się do swojego konta GitHub za pomocą kodu urządzenia (device code). Szczegółowe instrukcje dotyczące instalacji i aktualizacji pluginu znajdziesz tutaj.

Plugin GitHub Copilot dla IntelliJ IDEA oferuje możliwość skonfigurowania następujących elementów:

  • Automatyczne podpowiadanie sugestii
  • Sposób wyświetlania sugestii
  • Automatyczne aktualizacje pluginu
  • Wspierane języki
  • Skróty klawiszowe (Keyboard shortcuts)

W naszym przypadku zalecane było korzystanie z domyślnych ustawień pluginu, ponieważ zapewniają one wysoki komfort pracy i są zgodne z istniejącą dokumentacją narzędzia. Wszelkie zmiany w konfiguracji mogą być wprowadzane przez każdego użytkownika zgodnie z jego własnymi preferencjami.

Zrzut ekranu pokazujący ustawienia.

Nasze ustawienia pluginu GitHub Copilot w IntelliJ IDEA

Zrzut ekranu pokazujący ustawienia.

Nasze ustawienia keymap dla GitHub Copilot w IntelliJ IDEA

Jak używać GitHub Copilot w IntelliJ

Oto kilka wskazówek dotyczących korzystania z kluczowych funkcjonalności, które pomogą Ci optymalnie wykorzystać narzędzie GitHub Copilot.

Generowanie kodu aplikacji

Kiedy używać:

  • Tworzenie klas
  • Tworzenie pól, metod, konstruktorów
  • Pisanie fragmentów kodu (code snippets) wewnątrz metod

Jak używać:

  • Poprzez pisanie kodu i korzystanie z automatycznych sugestii – zawsze warto sprawdzić inne propozycje za pomocą klawiszy Ctrl+] / Ctrl+[

Zrzut ekranu pokazujący przykład.

  • Poprzez pisanie zwięzłych i precyzyjnych komentarzy w naturalnym języku angielskim

Zrzut ekranu pokazujący przykład.

  • Korzystając z funkcji chatu – chat może wygenerować fragment kodu w odpowiedzi na zapytanie (zobacz przykłady w sekcji „Korzystanie z GitHub Copilot Chat” poniżej) i pozwala na szybkie wstawienie kodu za pomocą przycisków Copy Code Block lub Insert Code Block at Cursor, które pojawiają się przy sekcji z kodem w oknie chatu

Zrzut ekranu pokazujący przykład.

Pisanie testów jednostkowych (unit tests)

Kiedy używać:

  • Tworzenie nowych klas i metod, które chcemy pokryć testami jednostkowymi
  • Pokrywanie istniejących klas i metod testami jednostkowymi

Jak używać:

  • Poprzez napisanie komentarza w klasie testowej. Na przykład, jeśli wpiszesz // Unit test in JUnit for CurrencyService, otrzymasz następujący wynik:

Zrzut ekranu pokazujący przykład.

  • Możliwe jest generowanie pojedynczych metod testowych poprzez wpisanie w komentarzu przypadku testowego (test case), który metoda ma sprawdzić. Podobnie można generować moki (mocks) w klasie testowej.
  • Korzystając z chatu – możesz wybrać opcję GitHub Copilot > Generate Test z menu kontekstowego, wpisać komendę /tests lub napisać instrukcję w języku naturalnym, np. Generate unit test for class CurrencyService. W odpowiedzi otrzymasz opisowy opis struktury testu oraz kod całej klasy testowej:

Generowanie zapytań SQL i procedur składowanych

Kiedy używać:

  • Podczas pisania zapytań DDL, DML i DQL, które będą używane w aplikacji
  • Podczas analizy danych i błędów związanych z danymi w bazie
  • Podczas pisania skryptów i procedur składowanych (stored procedures)

Jak używać:

  • WAŻNE: musisz mieć skonfigurowane połączenie z bazą danych w IntelliJ IDEA lub DataGrip
  • Poprzez pisanie zapytań i korzystanie z automatycznych sugestii
  • Poprzez napisanie komentarza, np. jeśli wpiszesz – – get party data for account, otrzymasz następujący wynik:

Zrzut ekranu pokazujący przykład.

Tworzenie konfiguracji OpenShift lub innych plików konfiguracyjnych

Kiedy używać:

  • Tworzenie lub modyfikowanie plików konfiguracyjnych
  • Analiza dyrektyw, ich opcji i wartości oraz mechanizmów konfiguracji

Jak używać:

  • Poprzez pisanie dyrektyw i korzystanie z automatycznych sugestii

Zrzut ekranu pokazujący przykład.

  • Korzystając z chatu – możesz zaznaczyć dyrektywę i wybrać GitHub Copilot > Explain This z menu kontekstowego, wpisać komendę /explain lub napisać zapytanie w języku naturalnym o dany element konfiguracji

Zrzut ekranu pokazujący przykład.

Korzystanie z konsoli BASH

Kiedy używać:

  • Gdy próbujesz użyć rzadziej spotykanych komend konsolowych
  • W celu wyjaśnienia działania komendy i jej opcji
  • Aby znaleźć odpowiednią komendę do wykonania zadania
  • Podczas pisania skryptów BASH

Jak używać:

  • WAŻNE: aby używać narzędzia CLI, zainstaluj GitHub CLI z rozszerzeniem gh-copilot zgodnie z instrukcją
  • Obecnie narzędzie oferuje dwie komendy, podsumowane w poniższej tabeli
Komenda Przykład Wynik
gh copilot suggest # gh copilot suggest „find IP number in text file” grep -E -o '([0-9]{1,3}.){3}[0-9]{1,3}’ <filename>
gh copilot explain # gh copilot explain „curl -k” curl służy do wysyłania żądań sieciowych, np. pobierania stron internetowych                                                                         

k lub –insecure pozwala curl na wykonywanie niezabezpieczonych połączeń i transferów SSL

Jak używać GitHub Copilot Chat

GitHub Copilot Chat opisaliśmy w osobnym rozdziale – ponieważ istnieje kilka przypadków użycia wartych omówienia. Przejdźmy przez nie indywidualnie i omówmy konkretne wytyczne dla każdego z nich.

Tworzenie nowych funkcjonalności

Kiedy używać:

  • Gdy szukasz rozwiązania problemu, takiego jak stworzenie strony internetowej, metody wykonującej określone zadanie, obsługi błędów dla danego bloku kodu/metody/klasy itp.

Jak używać:

  • Wpisz zapytanie w naturalnym języku angielskim dotyczące funkcjonalności, której szukasz. Powinno ono dotyczyć tematów związanych z programowaniem – kodu, frameworków/bibliotek, usług, architektury itp. Poniżej znajduje się przykład dla zapytania: How to get currency exchange data?

Zrzut ekranu pokazujący przykład.

Korzystanie z wyrażeń regularnych (regex)

Kiedy używać:

  • Gdy potrzebujesz stworzyć i zweryfikować wyrażenie regularne

Jak używać:

  • Wpisz zapytanie w naturalnym języku angielskim dotyczące wzorca, którego szukasz. Poniższy przykład pokazuje wygenerowaną metodę z błędnym wzorcem, zapytanie oraz odpowiedź z wyjaśnieniem i poprawionym kodem

Zrzut ekranu pokazujący przykład.

Znajdowanie błędów w kodzie

Kiedy używać:

  • Gdy tworzysz nowe klasy lub metody
  • Podczas analizy klasy lub metody, która powoduje błędy

Jak używać:

  • Możesz zaznaczyć kod i wybrać GitHub Copilot > Fix This z menu kontekstowego, wpisać komendę /fix lub napisać instrukcję w naturalnym języku angielskim, np. Find possible errors in this class. Możesz sprecyzować polecenie podając nazwę metody lub typ błędu. Na przykład, dla prostej klasy uzyskano wyjaśnienia potencjalnych błędów, a chat wygenerował kod obsługujący te błędy:

Zrzut ekranu pokazujący przykład.

Zrzut ekranu pokazujący przykład.

Wyjaśnianie istniejącego kodu

Kiedy używać:

  • Gdy nie rozumiesz, co dokładnie robi moduł, klasa, metoda, fragment kodu, wyrażenie regularne itp.
  • Gdy nie znasz użytego mechanizmu frameworka lub biblioteki

Jak używać:

  • W klasie lub metodzie możesz wybrać GitHub Copilot > Explain this z menu kontekstowego, wpisać komendę /explain lub napisać zapytanie w języku naturalnym o problematyczny element kodu, np. Explain what is this class doing. Poniższy przykład prezentuje wyjaśnienie klasy i jej metod. Dotyczy to klasy wygenerowanej w przykładzie ze znajdowaniem błędów

Zrzut ekranu pokazujący przykład.

Upraszczanie istniejącego kodu

Kiedy używać:

  • Gdy kod jest skomplikowany, trudny do zrozumienia lub niepotrzebnie rozbudowany
  • Podczas refaktoryzacji (refactoring) kodu

Jak używać:

  • W klasie, wybranej metodzie lub fragmencie kodu możesz wybrać GitHub Copilot > Simplify This z menu kontekstowego, wpisać komendę /simplify lub napisać zapytanie w języku naturalnym. Przykład prostej refaktoryzacji metody dla klasy znajduje się poniżej:

Zrzut ekranu pokazujący przykład.

Wynik:

Zrzut ekranu pokazujący przykład.

Podsumowanie: Potężne narzędzie, o ile zachowasz ostrożność

Jak widzisz, GitHub Copilot może być potężnym narzędziem w arsenałe programisty. Może przyspieszyć i uprościć różne procesy oraz codzienne zadania. Jednak, jak w przypadku wszystkiego, co wiąże się z generative AI, nigdy nie można w pełni ufać temu narzędziu – dlatego kluczową zasadą jest zawsze czytanie, przeglądanie i testowanie tego, co ono tworzy.

Jeśli interesuje Cię AI, radzimy sprawdzić kilka innych artykułów na naszym blogu dotyczących możliwości oferowanych przez tę technologię:

  1. AI code review – We’ve tried OpenAI at our company, and here’s what we’ve learned
  2. Biscuits+ChatGPT: Using AI to generate Oracle APEX Theme Roller Styles
  3. AI in software testing: Can Pretius OpenAI Reviewer help you with test automation?

Chcesz wykorzystać AI do ulepszenia swoich projektów programistycznych?

Pretius ma bogate doświadczenie z narzędziami i technologiami AI – wypróbowaliśmy je do pisania i przeglądu kodu oraz przeanalizowaliśmy, czy mogą być przydatne w automatyzacji testów. Co więcej, zbudowaliśmy już kilka rozwiązań opartych na AI dla naszych klientów. Chętnie Ci pomożemy. Skontaktuj się z nami pod adresem hello@pretius.com lub skorzystaj z poniższego formularza kontaktowego. Możesz spodziewać się odpowiedzi w ciągu 48 godzin.

GitHub Copilot FAQ

Oto odpowiedzi na kilka powszechnych pytań dotyczących GitHub Copilot.

Czym jest GitHub Copilot?

GitHub Copilot to narzędzie AI pair programmer zaprojektowane, aby pomagać programistom w ich pracy. Sugeruje szybkie uzupełnienia kodu. Możliwe jest również używanie GitHub Copilot do generowania kodu za pomocą promptów w języku naturalnym.

Ile kosztuje GitHub Copilot?

Płatne subskrypcje zaczynają się od 10 USD miesięcznie.

Jak otrzymać GitHub Copilot za darmo?

Dostępny jest 30-dniowy okres próbny dla każdego, a darmowa subskrypcja GitHub Copilot jest dostępna dla zweryfikowanych nauczycieli, studentów oraz użytkowników utrzymujących popularne repozytoria open-source na GitHubie.

Jakie języki wspiera GitHub Copilot?

Rozwiązanie współpracuje z różnymi frameworkami, ale zgodnie z dokumentacją, najlepsze wyniki uzyskasz w JavaScript, TypeScript, Ruby, Go, C# i C++.

Jak sprawdzić, czy GitHub Copilot działa?

Jeśli używasz VSC, stwórz nowy plik JavaScript (z rozszerzeniem .js) i wpisz nagłówek funkcji calculateDaysBetweenDates(begin, end) { . Jeśli narzędzie działa poprawnie, powinieneś otrzymać sugestię całego ciała funkcji, którą możesz zaakceptować naciskając klawisz Tab.

Jak używać GitHub Copilot w Visual Studio Code?

To dość proste – wystarczy otworzyć Visual Studio Code Marketplace, odwiedzić stronę rozszerzenia Copilot i kliknąć przycisk instalacji. Następnie kliknij ikonę GitHub Copilot w dolnym panelu okna Visual Studio.

Szukasz firmy tworzącej oprogramowanie?

Pracuj z zespołem, który pomógł już dziesiątkom rynkowych liderów. Umów spotkanie, by dowiedzieć się:

  • Jak działają nasze produkty
  • Jak możesz oszczędzić czas i pieniądze
  • Czym nasze rozwiązania różnią się od konkurencji

Przebieg kontaktu z Pretius

Dbamy o bezpieczeństwo Twoich danych: Certyfikat ISO

Działamy zgodnie z normą ISO 27001, zapewniając najwyższy poziom bezpieczeństwa Twoich danych.
certified dekra 27001
© 2026 Pretius. All right reserved.