2013-02-24 14 views
7

Więc znalazłem, że nice video on Clang tooling ... I nie mógł pomóc, ale zastanawiam się: czy istnieje jakiś przykładowy pakiet kodu/skompilowany zestaw narzędzi do pełnego upiększania i oczyszczania projektu (podobnie jak C# resharper)? Formatowanie kodu w skali projektu, takie jak: dodatkowa przestrzeń na końcu linii, ujednolicenie nazewnictwa członków/klas, sposób w jaki {} wsporniki są umieszczane po itd.?Czy istnieją schematy refaktoryzacji C++ zaimplementowane jako zestaw narzędzi Clang?

+0

Zgaduję, że będzie to następna wersja XCode. – Carl

Odpowiedz

7

Bliźnięta Clanga jest dość nowa, więc obecnie nie ma na nią zbyt wiele.

Również z mojego doświadczenia wynika, że ​​jest to trudny link (nie ma wersji językowej llvm-config, a w tutorials twórcy wydają się myśleć, że ludzie będą budować swoje narzędzia w ramach pełnego repozytorium klina, a nie jako ładne oddzielne projekty. Ubuntu buduje clang tylko włącza libtooling jako statyczny .a, no .to. Oficjalna LLVM na co dzień dla Ubuntu wydaje się nie zawierać statycznej biblioteki libclangTooling.a w ogóle:

Jest include-what-you-use, który został zaprojektowany w celu usunięcia nieużywane pliki nagłówków:

Istnieje clReflect, który generuje wiązania odbić. (Nie jestem pewien, czy to faktycznie używa funkcji libtoolingu lub po prostu libclang, ale jest to ten sam rodzaj.)

Istnieje również refactorial, który obsługuje niektóre inne operacje.

Dostępne są niektóre narzędzia: part of clang. Przede wszystkim A c++11 migration tool. Istnieje również narzędzie do modułów (funkcja jest opracowywana dla przyszłej wersji C++).

Te rzeczy powinny być bardzo użyteczne i potężne po ich uruchomieniu.

Osobiście próbuję (bezowocnie w chwili obecnej) zbudować proste narzędzie do re-factoring CLI, cppmv, które ma na celu umożliwienie zmiany nazw klas, funkcji, zmiennych, przeniesienia ich wokół przestrzeni nazw itp. Przy jednoczesnym zachowaniu ich synaps, ale Na tym etapie nie mam nic przydatnego. Innymi narzędziami mogą być cppl (aby wyświetlić przestrzenie nazw, funkcje klas i tak dalej). Może cppcp, jeśli chcesz coś skopiować z jakiegoś powodu (możesz mieć na przykład klasę "szablonu"), ale wydaje się mniej przydatne.

Przyglądałem się także tworzeniu systemu plików przestrzeni użytkownika FUSE, który pozwoliłby ci zamontować i przeglądać twój projekt, abyś mógł używać tradycyjnych poleceń "mv" i "cp", ale był to raczej pretekst, aby nauczyć się FUSE, a nie dlatego, że dobrze byłoby robić rzeczy w ten sposób. Chociaż możliwe jest edytowanie kodu źródłowego określonych klas i funkcji w ich własnych oddzielnych "plikach", chociaż nie byłoby to przydatne dla wielu rzeczy, takich jak IDE, ponieważ straciłbyś informacje o nagłówkach i innych.

Przydałoby się również mieć live, "zobacz jak edytujesz", narzędzie oparte na ASTMatcherze lub kilka prostych, re-faktoringowych powiązań językowych skryptów.

EDYTOWANIE: Istnieje teraz również format klangowy do formatowania stylu kodu i (od 3.4) skryptu clang-format.py do integracji Vima. clang-apply-replaceements "that finds files containing serialized Replacements and applies those changes after deduplication and detecting conflicts."

Może warto spojrzeć na this video, gdzie niektóre z tych rzeczy są demoed.

0

Dla klang ASTMatcher "REPL" sprawdź clang-zapytanie w najnowszym drzewie.

Również dla vima sprawdź vim-clang-format, który teraz używa pliku wykonywalnego bezpośrednio, bez potrzeby używania skryptu Pythona.

Powiązane problemy