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?
Odpowiedz
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.
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.
- 1. Czy właściwości zaimplementowane automatycznie mogą mieć prywatny zestaw?
- 2. Czy poszarpane tablice istnieją w C/C++?
- 3. Czy istnieją biblioteki narzędzi dla przekleństw z powiązaniami w Pythonie?
- 4. Jakie schematy czasowe istnieją w bazach danych neo4j lub graph?
- 5. Czy typy rekordów F # są zaimplementowane jako struktury lub klasy?
- 6. zestaw zainicjowany tablice jako parametry w C#
- 7. Czy jest jakaś biblioteka wizualizacji 3D lub zestaw narzędzi dla języka C? (No C++ please!)
- 8. C++ Pomoc w refaktoryzacji klasy potworów
- 9. Czy istnieją debuggery gramatyki Yacc?
- 10. Czy można wyłączyć zestaw narzędzi i projektanta Visual Studio 2008?
- 11. Zestaw narzędzi Java ME Dynamic UI
- 12. Jak odbudować zestaw narzędzi Visual Studio?
- 13. Dane empiryczne na temat refaktoryzacji?
- 14. Zestaw pasków narzędzi AndroidNawigacjaIcon nie działa
- 15. Narzędzia do refaktoryzacji Oracle DB (PL/SQL)
- 16. Narzędzie do refaktoryzacji C# var na jawny typ
- 17. zestaw obraz jako przycisk
- 18. Clang
- 19. VTK (zestaw narzędzi do wizualizacji) kontra OSG (OpenSceneGraph), inne?
- 20. Jakie (robocze) alternatywne łańcuchy narzędzi istnieją dla programowania x86 C++ w systemie Linux?
- 21. Obsługa C++ 14 w QtCreator z Clang
- 22. Czy istnieje jakaś formalna definicja "refaktoryzacji"?
- 23. Czy istnieją dobre opcje wypalania witryny Django jako pliki statyczne?
- 24. Jak skompilować C++ z Clang?
- 25. Najłatwiejszy zestaw narzędzi do wyświetlania na wielu platformach?
- 26. Generowanie kodu LLVM C++ API jako backendu
- 27. Jak uzyskać zestaw narzędzi do transformacji szablonów tekstowych
- 28. Zestaw narzędzi platformy (v110) nie jest zainstalowany lub jest nieprawidłowy
- 29. Jak analizować makra w kodzie C++, używając CLANG jako parsera i Pythona jako języka skryptowego?
- 30. Czy istnieją wskaźniki czasowe?
Zgaduję, że będzie to następna wersja XCode. – Carl