2013-12-08 14 views
5

Z klang i graphviz mogę wygenerować wykres wywołujący dla niektórych kodów C/C++ as explained in this answer.Jak wygenerować wykres przepływu danych za pomocą klang lub innych narzędzi?

Teraz potrzebuję schematu przepływu danych obliczonego na naprawdę dużej bazie kodu (w większości jest to C), ta baza kodów jest oprogramowaniem, w którym jako narzędzie do budowania używane jest cmake.

Więc moim problemem jest, biorąc pod uwagę nazwę struktury danych, jak mogę ewentualnie pobrać nazwy funkcji i plików za pomocą/implementacji tej struktury?

Istnieją pewne rzadkie odniesienia do pewnych algorytmów górniczych przepływu danych wewnątrz Libtool z projektu dzyń (nawet nie wiem, czy to coś stabilny lub w rozwoju), ale nic nie znalazłem na clang samego lub scan-build.

Jak mogę wygenerować tę informację? Naprawdę potrzebuję tego, zważywszy na nazwę, którą chciałbym pobrać, gdzie jest używany w kodzie, prawie wszystkie narzędzia do analizy statycznej, które recenzowałem, koncentrują się na funkcjach i metodach, muszę sprawdzić wykorzystanie struktury danych w clang.

EDIT:

Jestem również rozważa wykorzystanie doxygen do dokumentacji, więc jeśli wyjście xml z doxygen mógłby być użyteczny dla jakiegoś narzędzia, mogę go używać.

+0

Może to być trochę zwariowane, ale czy rozważałeś załadowanie całego kodu do Eclipse, a następnie używając funkcji wyszukiwania Eclipse? – slugonamission

+0

@musiam dobrze, ponieważ nie mogę znaleźć niczego, co działa ...; nazwa narzędzi, których powinienem użyć w Eclipse, wiem, że CDT jest zestawem Eclipse dla C i C++, ale nie wiem, co jest używane do tego rodzaju analizy. – algl

+0

to nie jest tak naprawdę dla przepływu danych, ale twoje wymagania po prostu wydają się sprawdzać, gdzie struktura danych jest używana. Korzystając z CDT + Eclipse, można przynajmniej graficznie znaleźć, gdzie struktura danych jest używana (w jednym z menu wyszukiwania gdzieś), ale nie pełne DFG. – slugonamission

Odpowiedz

-1

Można zapytać

  • wszystkie odwołania do symbolu
  • Definicje globalnych
  • funkcje wywoływane przez funkcję
  • funkcje Wywołanie funkcji
  • plików w tym pliku
  • i więcej .

z cscope.

+0

nie ma nic, co działa wizualnie? Ponieważ ten projekt jest naprawdę duży, prosta lista tekstu z terminala wkrótce stanie się bardzo skomplikowana, aby można go było zarządzać w użyteczny sposób; także nie ma słowa na tej stronie o zewnętrznych narzędziach budowlanych, potrzebuję tego rodzaju współpracy ze względu na rozmiar i proces budowania mojej bazy kodów. – algl

+1

Podczas gdy ten link może odpowiedzieć na pytanie, lepiej umieścić w nim istotne części odpowiedzi i podać link do odsyłacza. Odpowiedzi dotyczące linków mogą stać się nieprawidłowe, jeśli strona z linkami się zmieni. –

+0

jako @JohnDoyle, to pytanie zostało oznaczone do usunięcia jako link. Polecam ponownie opublikować bardziej wyczerpującą odpowiedź. –