Mercurial changeset c ++ анализ

Есть ли какой-нибудь способ проанализировать C ++ Mercurial Changesetet, чтобы выяснить, например, функцию или класс изменен?

Я хотел бы получить статистику количества ревизий некоторой части кода: методы, классы, файлы, папки и т. Д.

1

Решение

Не уверен, насколько это хорошо при работе с C ++, но Mercurial дополнительно использует diff-формат git. И то и другое git diff а также hg diff есть возможность просмотреть функцию, в которой было сделано изменение … в Mercurial вы можете использовать hg diff -p:

> hg diff
diff --git a/sandbox/sandbox.cpp b/sandbox/sandbox.cpp
--- a/sandbox/sandbox.cpp
+++ b/sandbox/sandbox.cpp
@@ -86,6 +103,8 @@
... diff output removed for conciseness

> hg diff -p
diff --git a/sandbox/sandbox.cpp b/sandbox/sandbox.cpp
--- a/sandbox/sandbox.cpp
+++ b/sandbox/sandbox.cpp
@@ -86,6 +103,8 @@ int _tmain(int argc, _TCHAR* argv[])
... diff output removed for conciseness

Обратите внимание, что с -p опция, каждый блок вывода diff содержит содержащие функции (_tmain в этом случае). Обратите внимание, что новые функции не включают эту информацию.

Я не уверен, как бы вы использовали это, ум. Возможно, grep вывод для строк, содержащих @@.*\(.*\) получить список функций?

0

Другие решения

VCS, как правило, не зависят от содержимого, они знают о строках текста и больше ничего (много). Чтобы добавить бремя знаний о функциях C, классы C ++, подпрограммы / функции FORTRAN, … оказываются в emacs-land. Не ходи туда …

0