
Powitajcie pierwsze główne wydanie ReSharpera C++ w tym roku!
ReSharper C++ 2021.1 zapewnia obsługę kilku nowych funkcji językowych C++ 17 i C++ 20, dodaje nowe inspekcje i poprawia wsparcie silnika Unreal Engine. Można teraz skonfigurować ReSharper C++, aby jeszcze bardziej pasował do Twojego stylu kodu dzięki nowemu zestawowi ustawień styli składni. Towarzyszące szybkie poprawki i akcje kontekstowe pomagają zachować spójność stylu kodu i łatwo go aktualizować.
Dla osób niecierpliwych przedstawiam skrócone i wypunktowane funkcjonalności i usprawnienia jakie dodano w wersji 2021.1:
- Wsparcie C++: typy klas w parametrach szablonów bez typów, reguły dedukcji argumentów szablonów klas C ++ 20, noexcept jako część typu funkcji i uzupełnianie kodu dla coroutines.
- Unreal Engine: początkowe wsparcie dla Unreal Engine 5, szablon postfiksa dla Cast i obsługa makra odbicia RIGVM_METHOD.
- Styl składni: nowy zestaw ustawień stylu kodu dla różnych aspektów składni C ++ z towarzyszącymi inspekcjami, szybkimi poprawkami i akcjami kontekstowymi.
- Porządkowanie kodu: nowe zadania porządkowania kodu, akcja kontekstu „Cleanup” i ulepszenia wydajności.
- Analiza kodu: inspekcje z szybkimi poprawkami dla nadmiarowych rzutów, argumenty szablonów, które można wywnioskować, oraz zmienne, które można przenieść do zakresu wewnętrznego.
- Inne zmiany: lista wykluczeń dla zagregowanych wskazówek dotyczących inicjalizacji, ulepszona obsługa różnych celów platformy.
Obsługa C++
Przed C ++ 20 parametry szablonów bez typów były ograniczone do skalarnych typów nie zmiennoprzecinkowych. ReSharper C ++ 2021.1 dodaje obsługę typów klas w parametrach szablonów bez typów. Dzięki tej funkcji C ++ 20 można używać własnych klas w typach parametrów szablonu, gdy klasa spełnia określone wymagania.
Kolejnym użytecznym dodatkiem jest obsługa reguł CTAD w języku C ++ 20 – dedukcja argumentów z szablonu klasy jest teraz spójna i działa w przypadku szablonów agregacji, aliasów typów i konstruktorów dziedziczonych.
Od C ++ 17 specyfikacja noexcept była uważana za część typu funkcji, a ReSharper C ++ teraz w pełni obsługuje nową semantykę specyfikacji wyjątków.
ReSharper C ++ dodał obsługę programów w aktualizacji 2018.2, ale uzupełnianie kodu nie obejmowało obsługi składni związanej z korektami w C ++ 20. Teraz co_await, co_yield i co_return są dostępne zarówno w podstawowym uzupełnianiu kodu, jak i jako szablony uzupełniania Postfix.
Unreal Engine
Wprowadzono wstępne wsparcie dla Unreal Engine 5 na podstawie opinii zespołu Epic Games. Oznacza to, że będziesz mógł wypróbować nowe funkcje, gdy tylko Unreal Engine 5 zostanie oficjalnie wydany.
Cast Unreal Engine’a do dynamicznego rzutowania bezpiecznego dla typów jest teraz dostępny jako szablon postfix w uzupełnianiu kodu.
W 2021.1 dodaliśmy obsługę innego makra odbicia specyficznego dla silnika Unreal Engine, RIGVM_METHOD. ReSharper C ++ teraz obsługuje to poprawnie.
Styl składni
Jednym z aspektów stylu kodu jest użycie wymiennych elementów składni języka.
W wersji 2021.1 wprowadziliśmy zbiór ustawień stylu składni, których można użyć do skonfigurowania narzędzia ReSharper C ++ w celu dopasowania do wybranego stylu kodu. Dzięki inspekcjom pomocniczym, szybkim poprawkom i akcjom kontekstowym możesz łatwo wymusić wybrany styl składni w kodzie.
Zwykłe lub końcowe typy zwracane, typedef lub aliasy typów, „East const” lub „West const”, wirtualna lub przesłonięta, czy jedno i drugie? Można dostosować wszystkie te preferencje, a nawet więcej, w Options | Code Editing | C ++ | Syntax Style. Istnieją szczegółowe opcje dla każdego przypadku. Na przykład mamy oddzielne preferencje dotyczące wymuszania automatycznego użycia dla typów numerycznych i nieliczbowych. Tutaj możesz ustawić ustawienie stylu składni na „Never”, jeśli wolisz typy jawne, na „Always”, jeśli stosujesz styl „Almost Always Auto”, lub „When type is evident”, co oznacza, że specyfikator automatyczny zostanie wprowadzony tylko wtedy, gdy typ wywnioskowany jest oczywisty z wyrażenia inicjatora.
Kiedy ważność ustawienia stylu składni jest ustawiona na sugestię, wskazówkę lub nawet ostrzeżenie, ReSharper C ++ podświetli naruszenia stylu i zaoferuje szybkie poprawki, które pomogą je wyeliminować. Menu kontekstowe inspekcji umożliwia również wygodną zmianę wartości właściwości stylu składni bez konieczności otwierania okna dialogowego opcji.
Czy kiedykolwiek myślałeś o wypróbowaniu końcowych typów zwracanych wszędzie dla zachowania spójności lub przełączeniu się z tradycyjnego „West const” na alternatywne „East const”, ale nie chcesz tracić czasu na migrację bazy kodu do nowej składni? Dzięki ReSharper C ++ wszystkie szybkie poprawki w stylu składni można zastosować w zakresie: w całym projekcie / rozwiązaniu lub w zakresach lokalnych, takich jak treść funkcji lub definicja klasy.
Włączenie wszystkich inspekcji stylów składni może być przytłaczające, dlatego zadbaliśmy o to, aby działania kontekstowe były zawsze dostępne do dostrojenia kodu, nawet jeśli wyciszyłeś odpowiednie inspekcje.
Aby naprawić wszystkie naruszenia stylu składni w określonym zakresie, możesz użyć czyszczenia kodu lub dedykowanego narzędzia ReSharper | Edit |Apply Syntax Style. W zależności od bieżącego kontekstu ta akcja naprawi problemy ze stylem składni w zaznaczeniu, w całym bieżącym pliku lub w zestawie plików wybranych w Solution Explorer.
Analiza kodu
ReSharper C ++ powiadomia teraz, gdy zmienna zostanie zadeklarowana przed zakresem, w którym jest używana. W takim przypadku możesz użyć dostarczonej szybkiej poprawki, aby przenieść zmienną i ograniczyć jej zakres.
Kolejna nowa inspekcja wykrywa zbędne wyrażenia rzutowania, które można bezpiecznie usunąć z kodu bez zmiany jego semantyki.
ReSharper C ++ 2021.1 podkreśla zbędne argumenty szablonu, które mogą być wywnioskowane przez język zgodnie z regułami dedukcji argumentów z szablonu klasy C ++ 17.
Dodano też kilka szybkich poprawek błędów konwersji. ReSharper C ++ zasugeruje jedną z konwersji odpowiednią dla bieżącego kontekstu (c_str (), to_string (), get (), value (), data (), operator *, operator &, dynamic_cast <> lub static_cast <>, itd. ), aby rozwiązać problem.
Inne zmiany
ReSharper C ++ 2020.3 dodał tryb widoczności Push-to-Hint, w którym podpowiedzi są domyślnie ukryte, aby zaoszczędzić miejsce w edytorze, ale można je wyświetlić po naciśnięciu klawisza. Możesz teraz szybko zmienić tryb widoczności dla różnych typów wskazówek z menu kontekstowego Alt + Enter.
Dodano również listę zatrzymań wzorców klas, dla których zagregowane wskazówki dotyczące inicjalizacji będą zawsze ukryte. Nową listę zatrzymań można znaleźć wraz z innymi powiązanymi ustawieniami na nowej stronie opcji Environment | Inlay Hints | C ++ | Aggregate Initialization. Dla wygody możesz też szybko dodać nazwę klasy do listy zatrzymań z menu kontekstowego:
ReSharper C ++ 2021.1 poprawia również obsługę różnych celów platformy. Obsługiwana jest teraz składnia wbudowanego asemblera GCC, a także kilka nowych rozszerzeń językowych, w tym __has_feature i __builtin_const_p. ReSharper C ++ również wstępnie definiuje poprawne makra platformy na platformach ARM i ARM64 MSVC oraz rozpoznaje zestaw narzędzi oparty na Clang używany w Microsoft Flight Simulator SDK.