IntelliCode – Sprytne IntelliSense

Wprowadzenie

Jeśli zapytalibyśmy programistów oraz programistki o funkcjonalność, którą powinno mieć każde IDE, to prawdopodobnie większość osób wymieniłaby IntelliSense. Ba, myślę, że chyba nikt nie chciałby pracować bez niego. Microsoft podczas pracy nad Visual Studio 2019 zaczął się zastanawiać, w jaki sposób można usprawnić działanie IntelliSense. Tak powstało IntelliCode, czyli IntelliSense „na sterydach” wspierane przez sztuczną inteligencję.

Microsoft ostatnio zmienił nieco podejście do dodawania niektórych nowych funkcjonalności do Visual Studio. Podobnie jak Live Share, tak i IntelliCode zostało dołączone do Visual Studio w formie dodatku. Co fajne, IntelliCode możemy również zainstalować w wersji 2017 (dokładnie od wersji 15.8) oraz w Visual Studio Code. Brawo, Microsofcie!

Visual Studio IntelliCode

Tak jak wspomniałem wyżej, aby skorzystać z IntelliCode, należy w pierwszej kolejności zainstalować dodatek do Visual Studio – https://marketplace.visualstudio.com/items?itemName=VisualStudioExptTeam.VSIntelliCode. Na dzień pisania tego wpisu, czyli 4 kwietnia 2019, dwa dni po premierze Visual Studio 2019, IntelliCode nadal jest w wersji Preview. Microsoft jeszcze nad nim pracuje i jego cykl wydawniczy jest odseparowany od samego Visual Studio.

Po zainstalowaniu dodatku możemy zobaczyć, że Intellisense wygląda trochę inaczej. Zamiast alfabetycznej kolejności nazw elementów możliwych do wykorzystania na samej górze pojawia się kilka opcji poprzedzonych symbolem gwiazdy. To właśnie są podpowiedzi IntelliCode:

intellisense string format

Na powyższym zrzucie ekranu widać, że dwie pierwsze podpowiedzi (metoda Format oraz pole Empty) są zaznaczone gwiazdką. Microsoft przeanalizował 2000 projektów open source i na ich podstawie za pomocą uczenia maszynowego przygotował najczęściej używane opcje, które podpowiada w InteliSense. Jak widać na zrzucie, podpowiada nie tylko same elementy, ale również przeciążenia (w tym przypadku wywołanie metody Format z dwoma parametrami).

Co fajne, IntelliCode działa kontekstowo, czyli pokazuje różne podpowiedzi w zależności od tego, gdzie aktualnie znajdujemy się w kodzie. Powyżej przekazywaliśmy parametr do metody Failure, która oczekuje stringa, dlatego IntelliCode podpowiedziało metodę Format. Natomiast w ifie zobaczymy zupełnie inne podpowiedzi:

intellicode string if

Tym razem na pierwszym miejscu jest metoda IsNullOrEmpty. Co jest fajne. 🙂

Przez dłuższy czas korzystałem testowo z IntelliCode podczas pracy, aby sprawdzić, jak się sprawuje, i wielu miejscach podpowiadało to, czego chciałem użyć.

Darmowy kurs Visual Studio

Pracując z setkami programistów, zauważyłem, że większość osób nie pracuje efektywnie w Visual Studio. W skrajnych przypadkach korzystali z kopiowania z wykorzystaniem menu Edit. Wiem, że to dziwne, ale naprawdę niektórzy tak pracują. Dlatego postanowiłem stworzyć kurs Visual Studio – aby pomóc koleżankom i kolegom w efektywniejszej pracy.

Przygotowałem 30 lekcji e-mail, w których pokażę Ci, w jaki sposób pracować efektywniej i szybciej w Visual Studio. Poznasz dodatki, bez których nie wyobrażam sobie pracy w tym IDE.

Po więcej informacji zapraszam na dedykowaną stronę kursu: Darmowy Kurs Visual Studio.

Quiz C#

Ostatnio przygotowałem również quiz C#, w którym możesz sprawdzić swoją wiedzę. Podejmiesz wyzwanie?

Własny model IntelliCode

Z racji tego, że IntelliCode bazuje na projektach open source, to podpowiedzi będziemy mieli tylko dla ogólnie dostępnych rzeczy. Nie zobaczymy domyślnie podpowiedzi do naszego kodu, ale nic straconego.

IntelliCode umożliwia również wygenerowanie podpowiedzi na podstawie naszego solution. Aby to zrobić, najlepiej skorzystać z Search Visual Studio (Crtl + Q), wpisać tam IntelliCode i wybrać pierwszą opcję (IntelliCode Model Management):

intellicode visual studio search

Wtedy zobaczymy taki widok:

intellicode model management train on my codeModel możemy wygenerować za pomocą przycisku Train on my code (zaznaczonym wyżej). Po jakimś czasie model zostanie wygenerowany. Na tę chwilę do wygenerowania modelu potrzebny jest dostęp do Internetu. IntelliCode na podstawie naszego kodu przygotowuje metadane, które następnie przesyła do Azure, gdzie odbywa się nauka modelu. Gdy model zostanie wygenerowany, zobaczymy coś takiego:

intellicode model management summary

Możemy w każdej chwili usunąć wygenerowany model, udostępnić go innym oraz zaktualizować go (opcja Retrain). W momencie, gdy ktoś wygenerował model, możemy go zaimportować, korzystając z przycisku Add model.

Mając już taki model, możemy cieszyć się podpowiedziami dla naszych klas:

intellisense resultPodsumowanie

Za każdym razem z niecierpliwością czekam na nową wersję Visual Studio. Zastanawiam się, co ciekawego Microsoft doda w nowym wydaniu. W 2019  dwiema najciekawszymi funkcjami jest opisany jakiś czas temu Live Share oraz dzisiejszy temat, czyli IntelliCode. Zachęcam do wypróbowania tych dwóch narzędzi, szczególnie że działają one w Visual Studio 2017 oraz Visual Studio Code.

Oczywiście Visual Studio 2019 wprowadza wiele innych ciekawych funkcjonalności. Jakbyś chciał(-ła) dowiedzieć się więcej, zapraszam na jedną z moich prezentacji o Visual Studio 2019. Dwie najbliższe odbędą się 17 kwietnia 2019 (grupa .NET w Białymstoku) oraz 13 czerwca 2019 (grupa .NET w Gdańsku). Planuję również prezentacje w kilku innych miejscach. Po aktualną listę wydarzeń zapraszam na dedykowaną stronę – prezentacje Daniel Plawgo.

Szkolenie C# i .NET 5

Szkolenie C# i .NET 5

Zainteresował Ciebie ten temat? A może chcesz więcej? Jak tak to zapraszam na moje autorskie szkolenie o C# oraz .NET.

3 thoughts on “IntelliCode – Sprytne IntelliSense

  • Pingback: dotnetomaniak.pl
  • Czy wiesz moze jak przestawic Visual Studio z Resharprem, zeby uzywal IntelliSense od IntelliCode zamiast tego od Resharpera?

    • W ustawieniach Resharpera (IntelliSense -> General) wybierasz, aby używać IntelliSense z Visual Studio, wtedy będzie działo IntelliCode – ctrl + alt + spacja – wtedy będziesz mógł wywołać IntelliSense z Resharpera.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.