Rozszerzenie Visual Studio dla developerów C++
ReSharper C++ wnosi do Visual Studio wiele ulepszeń, włączając w to ciągłą analizę kodu, możliwość błyskawicznej i automatycznej naprawy, potężne narzędzia wyszukiwania i nawigacji, inteligentne uzupełnianie kodu, refaktoryzację, różnorakie opcje generowania kodu, i wiele innych narzędzi, które zwiększają Twoją produktywność.
Analiza kodu
ReSharper C++ zaczyna analizować Twój kod jak tylko otworzysz swój projekt w edytorze Visual Studio, i podąża za wszelkimi zmianami w miarę edycji plików, wykrywając błędy i możliwe problemy jeszcze przed kompilowaniem.
Automatyczna naprawa
Dostępnych jest ponad 40 opcji szybkiej naprawy, aby natychmiastowo rozwiązać wiele z wykrytych problemów w kodzie. Kiedykolwiek widzisz ikonę żarówki po lewej stronie kodu, wciśnij Alt+Enter
aby zastosować sugerowaną poprawkę.
Przykładowo, kiedy jest wykryta niezainicjalizowana zmienna, możesz błyskawicznie zainicjalizować ją z wartością domyślną. Inne opcje naprawy pozwalają na wstawianie brakujących dyrektyw #include, lub usuwać zbędne elementy z wyrażeń, nawet w obrębie całego pliku lub projektu.
Tworzenie już po użyciu
Jednym z dobrodziejstw płynących z opcji automatycznej naprawy jest możliwość wykorzystywania klas, metod, zmiennych, właściwości, cech i pól jeszcze zanim zostaną zadeklarowane. Kiedy ReSharper C++ wykryje niezadeklarowany symbol od razu zasugeruje automatyczną poprawkę, czyli utworzenie odpowiedniego symbolu na podstawie jego użycia.
Znajdź problemy z kodem
Dla każdego podanego zasięgu, takiego jak plik, projekt lub rozwiązanie, możesz wyświetlić w dedykowanym oknie narzędziowym za pomocą narzędzia ReSharper C++ wszelkie znalezione problemy z kodem.
Wyszukiwanie problemów z kodem działa w tle, dzięki czemu nie musisz przerywać pracy, ani tym bardziej IDE nie musi jej przerywać, aby zrobić to proste zadanie. Gdy tylko wyniki inspekcji są gotowe, możesz je grupować wykorzystując różnorakie kryteria, lub wyszukiwać w nich konkretnych rodzajów problemów. Możesz także zapisywać i wczytywać raporty na temat znalezionych problemów.
Refaktoryzacje
ReSharper C++ zapewnia kilka pełnowymiarowych refaktoryzacji, takich jak zmiana nazwy, wyciąganie metody i zmiana sygnatury. Dodatkowo oferuje tuziny działań kontekstowych, które są lokalnymi przekształceniami kodu dostępnymi za pomocą prostego skrótu klawiszowego.
Zmiana nazw
Ręczna zmiana nazwy klasy lub makra może przysporzyć wielu problemów. Właśnie dlatego, kiedy uruchamia się narzędzie do refaktoryzacji, jaką jest zmiana nazwy, ReSharper C++ dokonuje niezbędnych sprawdzeń.
Wszystkie modyfikacje mogą być przeprowadzone automatycznie, lub możesz zobaczyć listę konfliktów, aby osobiście je rozwiązać i mieć pewność, że mają miejsce tylko potrzebne i odpowiednie zmiany.
Oprócz zastosowania w symbolach w kodzie, zmianę nazwy można zastosować do odpowiednich plików (zarówno nagłówkowych jak i źródłowych), tekst w komentarzach i dokumentacji, oraz do aktualizacji dyrektyw #include.
Wyciąganie metody
Refaktoryzacja polegająca na wyciąganiu metody pozwala na stworzenie nowej metody na podstawie zaznaczonego fragmentu kodu. ReSharper C++ analizuje podany fragment i wykrywa w nim zmienne, które mogą być przekonwertowane do parametrów metody, lub reprezentują wartość zwracaną.
Zmiana sygnatury
Zmiana sygnatury pozwala na wprowadzanie zmian do sygnatury funkcji. Wszystkie przypadki użycia i implementacje funkcji zostaną odpowiednio uaktualnione.
Wprowadzanie zmiennej
Refaktoryzacja, jaką jest wprowadzanie zmiennej, pozwala na stworzenie nowej zmiennej lokalnej na podstawie zaznaczonego wyrażenia, i wreszcie zastąpienie wszystkich wystąpień wyrażenia w kodzie odniesieniami do nowej zmiennej.
Wprowadzanie pola
Ta metoda refaktoryzacji pomaga w utworzeniu nowego pola na podstawie zaznaczonego pola, przyporządkować oryginalne wyrażenie do pola w jego inicjalizatorze lub konstruktorze i zamienić wystąpienia.
Wprowadzanie aliasu przestrzeni nazw
ReSharper C++ posiada możliwość zdefiniowania nazw skrótowych dla głęboko zagnieżdżonych przestrzeni nazw. W momencie uruchomienia tej refaktoryzacji, sugeruje ona zadeklarowanie zakresu działania aliasu.
Wspomaganie pisania kodu
ReSharper C++ rozszerza możliwości Visual Studio dotyczące podświetlania składni, zapewnia swoją własną implementację uzupełniania kodu, oraz pomaga zobaczyć dostępną dokumentację dla dowolnego symbolu C++.
Podświetlanie składni oraz struktur
ReSharper C++ rozpoznaje pliki *.c, *.cc, *.cxx, *.cpp, *.h, oraz *.hpp w Twoim rozwiązaniu i podświetla składnię kodu w tych plikach według schematu kolorystycznego, który możesz zmodyfikować w dowolnym momencie.
Dodatkowo ReSharper C++ podświetla różne pasujące fragmenty kodu, kiedy umieścisz kursor nad jednym ze sparowanych fragmentów. Umieszczenie kursora nad jednym z punktów wyjścia z funkcji, pętli lub wyrażenia switch (return, throw, break, itd.), spowoduje podświetlenie wszystkich pozostałych wyjść z funkcji lub pętli.
Uzupełnianie kodu
W plikach C++ możesz wykorzystać funkcję uzupełniania kodu, która czasami podpowiada między innymi rozwiązanie polegające na wygenerowaniu odpowiedniego fragmentu kodu.
Uzupełnianie kodu może nawet zasugerować symbole, które nie zostały jeszcze dołączone w bieżącym pliku. Kiedy taki symbol zostanie wybrany z listy uzupełniania, odpowiednia dyrektywa #include jest dołączana automatycznie.
Podsumowanie dokumentacji
Podręczne okienko dokumentacji pozwala na wyświetlanie dokumentacji opartej o bloki komentarzy Doxygen, bez konieczności nawigacji do definicji symbolu: po prostu wciśnij Crtl+Shift+F1
przy domyślnych ustawieniach skrótów klawiszowych.
Nawet, jeżeli dokumentacja Doxygen nie jest dostępna, podręczna dokumentacja pokaże sygnaturę symbolu.
ReSharper C++potrafi także wyświetlać bogate podpowiedzi dla poszczególnych elementów kodu. Będą one pokazywać typy funkcji i zmiennych, jak również dokumentację.
Nawigacja i wyszukiwanie
Za pomocą narzędzia, jakim jest ReSharper C++, możesz dużo łatwiej odnaleźć się w kodzie. Po prostu wyszukuj deklaracji, wywołań metod, lub elementów w hierarchii dziedziczenia za pomocą prostych skrótów.
Nawigacja kontekstowa
Dla wszystkich symboli, które posiadają oddzielne deklaracje i definicje, ReSharper C++ wyświetla po lewej stronie ikonę nawigacji do deklaracji/definicji. Kliknij na nią lub wciśnij kombinację Crtl+B
aby błyskawicznie przełączać się pomiędzy deklaracją i definicją.
Pozostałe opcje nawigacji wynikające z kontekstu w ReSharper C++ to między innymi nawigacja od zaznaczonego symbolu do przypadków jego użycia, oraz symboli podstawowych oraz pochodnych.
Przejdź do wszystkiego
ReSharper C++ oferuje zestaw niezależnych od kontekstu opcji nawigacji, włączając w to przejście do pliku, symbolu i dowolnego innego elementu.
Wszystkie te komendy obsługują wyszukiwanie oparte na zapisie lowerCamelCase oraz filtrowanie po ścieżce. Przykładowo wpisanie frazy fc movie
w okienku przejścia do dowolnego elementu zwróci listę plików i elementów, które zawierają z swojej nazwie łańcuch movie
i należą albo do projektu FollowerC
lub do przestrzeni nazw FollowerConstants
(obydwa pasujące do fc).
Wizualizacja hierarchii
ReSharper C++ może pokazać podgląd hierarchii dziedziczenia, której częścią jest podany symbol. Możesz podejrzeć typy podstawowe oraz typy dziedziczące wobec zaznaczonego i przejść do nich za pomocą jednego kliknięcia.
Podgląd hierarchii może być także wykorzystany do badania zależności wprowadzanych przez dyrektywy #include.
Wyszukiwanie wykorzystania
Użyj tego narzędzia do znalezienia wszystkich referencji do określonego symbolu w kodzie C++ swojego rozwiązania.
Jak tylko proces wyszukiwania się zakończy, znalezione wystąpienia są wyświetlane w odpowiednim oknie narzędziowym z opcjami grupowania i filtrowania.
Struktura plików
Okno podglądu struktury danego pliku w ReSharper C++ znacznie ułatwia poruszanie się po dużych plikach. Przy przełączaniu się pomiędzy zakładkami edytora, okno narzędziowe aktualizuje się automatycznie, aby pokazać strukturę odpowiedniego pliku.
Eksplorowanie TODO
Narzędzie do przeglądania komentarzy zawierających jedną z trzech domyślnych fraz (Bug, Todo i Not Implemented), oraz dowolne inne frazy, które się własnoręcznie zadeklaruje.
Jeżeli posiadasz pełną licencję ReSharper Ultimate oraz wielojęzykowe rozwiązanie, eksplorator tych elementów będzie zbierał je z wszystkich obsługiwanych języków: C#, VB.NET, C++, JavaScript, XAML, HTML, itd.
Generowanie kodu
ReSharper C++ zapewnia różnorakie metody generowania wzorców kodu. Oprócz deklarowania i definiowania symboli w oparciu o ich istniejące użycia, może tworzyć sąsiadujące bloki kodu oraz wszelkie skrawki kodu, których możesz potrzebować w swoim projekcie.
Generowanie kodu
ReSharper C++ oferuje błyskawiczną metodę generowania brakujących elementów, operatorów równości i relacji, definicji w oparciu o istniejące deklaracje, zamieniać funkcje i konstruktory. Wystarczy wcisnąć Alt+Ins
w edytorze tekstu aby wywołać menu generowania kodu i zobaczyć wszystkie dostępne opcje.
Szablony kodu i plików
ReSharper C++ zawiera w sobie 29 dostosowywalnych szablonów. Część z nich to zwykłe urywki kodu, podczas gdy inne zostały zbudowane, aby oplatać zaznaczony kod.
Możesz także tworzyć i wykorzystywać szablony plików. Wciśnięcie kombinacji Crtl+Alt+Ins
pozwala na szybkie dodanie klasy do projektu nad którym pracujesz.
Asysta formatowania kodu
W ReSharper C++ narzędzie do formatowania kodu uczy się poprzez analizę istniejącego kodu, a do tego ustawienia dotyczące formatowania i stylu kodu mogą być udostępniane reszcie zespołu.
Narzędzie do formatowania kodu
ReSharper C++ pozwala na tworzenie i aplikację zasad formatowania kodu które preferujesz przy pracy nad danym rozwiązaniem.
Jako alternatywa do przekopywania się poprzez wszystkie dostępne opcje formatowania kodu istnieje możliwość zaznaczenia bloku kodu i skonfigurować formatowanie wyłącznie dla zaznaczonego bloku.
Ustawienia stylu kodu
Aby zapewnić jednolitość stylu w całym zespole, możesz zapisać swoje ustawienia dotyczące formatowania i nazewnictwa do oddzielnego pliku i podzielić się nim z innymi.
ReSharper C++ pozwala także na definiowanie innych części standardu pisania kodu, takich jak na przykład kolejność modyfikatorów czy preferowane wartości dla inicjalizatorów wskaźników. Przykładowo, możesz sprecyzować 0, nullptr albo NULL jako preferowaną wartość inicjalizatora, a ReSharper C++ będzie stosował się do tej opcji przy generowaniu nowych inicjalizatorów.
Testy jednostkowe
Zintegrowane z Visual Studio narzędzie do przeprowadzania testów jednostkowych obsługuje frameworki Google Test, Boost.Test oraz Catch.
Przeprowadzanie testów jednostkowych
ReSharper C++ Wprowadza do Visual Studio narzędzie do wykonywania testów jednostkowych, które obsługuje frameworki takie jak Google Test, Boost.Test czy Catch.
Możesz przeprowadzać i debugować testy jednostkowe, oraz dodawać testy do różnych sesji bezpośrednio z poziomu edytora poprzez menu kontekstowe dostępne pod kombinacją Alt+Enter
ReSharper C++ zapewnia przeglądarkę testów jednostkowych oraz narzędzie do zarządzania sesjami tych testów, gdzie można przeglądać, grupować, filtrować i wykonywać testy jednostkowe, jak również tworzyć i zarządzać sesjami testów.