Есть ли какой-нибудь способ проанализировать C ++ Mercurial Changesetet, чтобы выяснить, например, функцию или класс изменен?
Я хотел бы получить статистику количества ревизий некоторой части кода: методы, классы, файлы, папки и т. Д.
Не уверен, насколько это хорошо при работе с 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 вывод для строк, содержащих @@.*\(.*\)
получить список функций?
VCS, как правило, не зависят от содержимого, они знают о строках текста и больше ничего (много). Чтобы добавить бремя знаний о функциях C, классы C ++, подпрограммы / функции FORTRAN, … оказываются в emacs-land. Не ходи туда …