Estou escrevendo um guia para o Ebrowse e o lançarei nesta semana.Ebrowse é um analisador rápido usado para processar arquivos de origem C ++ para produzir um banco de dados que contém a hierarquia de classes que é processada posteriormente pelo Emacs para produzir uma representação da árvore de classes. É um pouco como o GNU Global, mas é embutido no Emacs e produz uma árvore de classes, portanto, levará mais tempo para processar na grande árvore de origem.
Para usar o Ebrowse:
find . -name '*.cpp' -or -name '*.h' | ebrowse
Adicione mais extensões, se quiser. Se o seu projeto tiver apenas centenas de arquivos, então = Ebrowse = funciona muito bem. Depois de executar o comando, um arquivo chamado BROWSE
é gerado; esse é o banco de dados que contém a hierarquia de classes. Simplesmente abra este arquivo e o Emacs o reconhece e processa automaticamente. Após o processamento do banco de dados, o Emacs exibe um índice de todas as classes no banco de dados em formato de árvore: se uma classe é derivada de uma classe, ela é aninhada dentro da classe pai. Esse buffer é chamado de Tree buffer
. O Emacs fornece três maneiras de interagir Ebrowse
:
Tree
buffer: um buffer que exibe a árvore.
Member
buffer: um buffer que exibe membros de cada classe. Você pode alternar entre declarações e definições de uma classe e pular para o local de cada uma no arquivo de origem correspondente.
Source
buffer: seu buffer de código. Você pode interagir com o Ebrowse
banco de dados, como encontrar e visualizar declarações e definições (abertas para somente leitura), abrir um = Member = buffer de uma classe que contém a tag no ponto ...
Se você tem um projeto grande (ou seja, mais de 10000 arquivos cpp), mas todas as classes estão em .h
arquivos, não adicione, .cpp
ou então levaria muito tempo para gerar o BROWSE
arquivo. Você perderá a capacidade de mudar para a definição; mas isso pode ser feito usando ctags
ou GNU Global
. O mais importante é visualizar a hierarquia de classes Tree buffer
e essa é a vantagem do Ebrowse.
O guia WIP está aqui .
Atualização : Como alternativa, você pode usar o doxygen para gerar todos os tipos de gráficos (gráficos de chamadas / chamadas, gráficos de dependência, gráficos de hierarquia de classes ...), mas também leva muito tempo para gerar tudo, mesmo para pequenas árvores de origem como o ipxe . Isso não doxygen
é lento, na verdade, é bastante otimizado, mas calcular a dependência para toda a base de código não é uma tarefa trivial.
Bônus : Se você trabalha com C e deseja ver o gráfico de chamadas, use o GNU Cflow. Veja meu reddit reddit .