PowerShell ISE na sterydach (2.0), część 3

ISESteroids2-3W poprzednim odcinku cyklu skupiłem się na tych elementach ISESteroids, które ułatwiają modyfikowanie skryptu już istniejącego. Dziś skupię się na tych funkcjach, które ułatwiają stworzenie skryptu od podstaw. Część z nich (jak menedżer skrawków kodu) wykorzystuje narzędzia, które istnieją w samym ISE, wzbogacając je o funkcjonalności w wersji podstawowej niedostępne. Część zaś (zaznaczanie grupy elementów z uwzględnieniem logiki) daje możliwości niedostępne w innych edytorach. Wszystkie one sprawiają, że pisanie skryptu pochłania zdecydowanie mniej czasu i pozwalają uniknąć błędów, literówek i konieczności ustawicznego sprawdzania składni czy to w dokumentacji, czy też przy pomocy ulubionej wyszukiwarki.

Połatane

Wraz z pojawieniem się drugiej wersji ISE (dostępnej z PowerShell 3) pojawiła się też możliwości używania skrawków kodu. Funkcjonalności tej daleko do bardziej zaawansowanych edytorów, w których wyodrębnić można kilka łatwo dostępnych “kotwic”. Dostęp do skrawków kodu możliwy jest przy pomocy odpowiedniej pozycji w menu (Edit –> Start Snippets) albo przy pomocy skrótu CTRL+J. Następnie możemy wprowadzić fragment tytułu skrawka, ograniczając tym samym listę tylko do tych pozycji, które nas interesują. Problem polega na tym, że wszelkie zmiany skrawków, a także ich tworzenie, nie jest trywialne. Wymaga albo modyfikowania plików XML (modyfikacje), lub korzystania z polecenia New-IseSnippet (stosunkowo proste, pomijając sytuację gdy chcemy wymusić ustawienie kursora w wybranej pozycji). ISESteroids ułatwia tworzenie i modyfikację skrawków przy pomocy odpowiedniego narzędzie do zarządzania. Interesujący nas skrawek możemy wybrać z listy. Możemy też wybrać opcję utworzenia nowego:

ISESteroids-Menedzer-Skrawkow

Skrawki zostały też rozbudowane o dodatkowe opcje, w wersji podstawowej niedostępne. Każdej “łatce” przypisać możemy odpowiedni skrót. Jest to ciąg znaków, którego wpisanie umożliwi nam bardzo szybkie skorzystanie z danego fragmentu kodu. Zachowaniem tym sterujemy na dwa sposoby: po pierwsze definiując sam skrót (uwaga na kolizje!), a następnie określając zakres jego działania. Kombinacja ta powoduje, że możemy zadbać, by pewnego fragmenty mające sens tylko w bardzo ograniczonym zakresie, nie pojawiały się poza tym obszarem. Dla przykładu: opcja IgnoreCase dostępna jest w przypadku korzystania z ValidateSet. Nie możemy co prawda określić, że skrawek dodający ten fragment powinien być dostępny jedynie w tym konkretnym elemencie języka. Wybranie jednak opcji “Attribute” i “Editor” sprawia, że opcję tą z całą pewnością łatwiej będzie “zaaplikować”:

ISESteroids-Skrawki-W-Dzialania

Jeśli dla danej kombinacji dostępny jest skrawek, kod zostaje oznaczony zielonym tłem. Wciśniecie tabulatora rozwinie cały skrawek i ustawi kursor tam, gdzie wybraliśmy w menedżerze. Jak widać ten sam “skrót” może nie wywoływać żadnych reakcji poza założonym kontekstem. Z mojego doświadczenia istnieje jeszcze jedno ograniczenie: skrót musi być poprawnym elementem składni w danym kontekście (dla tego np. skrót “cred” do pierwszego skrawka nie zadziałałby wewnątrz bloku parametrów).

Linii kodu wędrówka…

Wielokrotnie w trakcie pisania skryptu zdarza mi się testować pewne pomysły w konsoli, by następnie przekopiować je do edytora (jeśli uzyskany skutek pokrywa się z pożądanym). ISESteroids oferuje bardzo wygodny skrót klawiszowy służący do tego, by bieżącą linię kodu przenieść do edytora. Domyślnie pomiędzy konsolą a edytorem przemieszczać się można przy pomocy skrótów CTRL+I (edytor) i CTRL+D (konsola). Skrót do przenoszenia linii kodu do edytora to CTRL+SHIFT+I, łatwo więc wpasowuje się w “pamięć mięśniową”. Linia kodu zostaje skopiowana, a edytor staje się aktywny:

ISESteroids-Kopiowanie-polecen-do-edytora

Ten sam efekt uzyskamy przyciskając dostępny w dolnej belce przycisk. Linia została skopiowana, ale często znajduje się w innym miejscu niż to, w którym ją sobie wyobrażaliśmy. Na szczęście przesuwanie linii jest równie trywialne. Służy do tego ALT w połączeniu z kursorami:

ISESteroids-Przesuwanie-Linii

Znów: menu (tym razem górne) oferuje podobną funkcjonalność, ale skrót klawiszowy z pewnością przydaje się bardziej w trakcie czynności takich jak edytowanie tekstu. Nasza linia została skopiowana, znajduje się w odpowiednim miejscu, ale nadal czegoś jej brakuje… Wskazane byłoby odpowiednie wcięcie, by uczynić skrypt czytelnym. Możliwości mamy dwie: możemy skorzystać z automatycznego “wcinania” kodu w trakcie pisania skryptu, bądź wymusić ręcznie odpowiednie ułożenie kodu (przyciskiem, bądź korzystając ze skrótu klawiszowego, ALT+I). Tuż obok przycisku włączającego automatyczne wcinanie kodu znajduje się przycisk kontrolujący działanie śledzenia zmian na marginesie. Dzięki temu od razu widzimy zmiany od ostatniej sesji, zarówno zapisane, jak i te, których jeszcze nie zapisaliśmy:

ISESteroids-oznaczanie-formatowanie-kodu

Ulokowane w tej samej belce narzędziowej są inne opcje, które powinny ułatwić pracę z nowotworzonym skryptem: wyświetlanie znaków specjalnych i zawijanie tekstu. Pierwsza opcja pozwoli łatwo ocenić, czy kod wcięty jest tabulatorem, czy spacjami. Zawijanie tekstu pozwala przeglądanie tworzonego skryptu bez konieczności przesuwania ekranu. Tuż obok przycisków przesuwających linie znajduje się grupa opcji zwijających kod (np. regiony). Wreszcie – przycisk umożliwiający utworzenie komentarza wokół obecnie zaznaczonego kodu.

Kupą, panowie!

W trakcie tworzenia skryptu zdarza się, że z jakiegoś powodu potrzebujemy szybko zmienić grupę powiązanych ze sobą elementów. Doskonały przykład takiej sytuacji to zmiana nazwy zmiennej wykorzystywanej w naszym skrypcie/ funkcji. Często zmiany takie prowadzą do problemów: może się zdarzyć, że coś pominiemy, lub zmiany dokonamy tam, gdzie nie była konieczna. I znów ISESteroids służy pomocą. Edytor, analizując Abstract Syntax Tree jest w stanie określić, jakie elementy należy zmienić. Dla przykładu, zmiana nazwy parametru funkcji wymaga wielu poprawek, część z nich zaś zdecydowanie nie należy do oczywistych:

ISESteroids-Grupowa-Zmiana-Kodu

Dzięki takim usprawnieniom wprowadzanie zmian tego rodzaju jest zdecydowanie prostsze. Tym akcentem kończę tą część cyklu. W następnej postaram się przybliżyć te elementy, które pozwolą z każdego skryptu uczynić narzędzie: kompilowanie do pliku exe, zarządzanie przyciskiem cyfrowym, analiza bezpieczeństwa kodu.

~ - autor: Bartek Bielawski w dniu 22 listopada, 2014.

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj /  Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj /  Zmień )

Zdjęcie na Facebooku

Komentujesz korzystając z konta Facebook. Wyloguj /  Zmień )

Połączenie z %s

 
%d blogerów lubi to: