Como localizar o código C ausente

9

Eu herdei um sistema de desenvolvimento legado que é mal documentado e o código-fonte não é conhecido se ainda estiver disponível.

Agora eu poderia localizar alguns dos códigos-fonte e, na verdade, criar uma parte do sistema.

Gostaria de saber se consigo encontrar o resto do código-fonte e se há uma maneira melhor do que locate *.c e inspecionar manualmente os arquivos (foi assim que encontrei parte do código).

Existem 3 máquinas e apenas uma onde eu encontrei o código fonte que parece ser uma máquina de desenvolvimento. Ele também tem 61% dos arquivos.deb que parecem ser as versões empacotadas dos projetos, mas olhar para os arquivos .deb mostra que a fonte não está nos arquivos ou pelo menos não onde eu olhei.

Existe uma boa maneira de "escanear" um disco inteiro para o código-fonte?

    
por Niklas Rosencrantz 31.07.2017 / 11:09

2 respostas

8

Isso não responde à sua pergunta mais geral, mas, no seu caso específico, como você tem pacotes no sistema, vale a pena procurar o código-fonte correspondente:

find / -name \*.orig.tar\* -o -name \*.dsc

Isto irá procurar por arquivos fonte nomeados da maneira que as ferramentas de construção de pacotes Debian esperam, e arquivos de controle de pacotes fonte. Se você encontrá-los, procure os arquivos .debian.tar* ou .diff.gz ao lado deles. Todos esses arquivos combinados fornecem o código-fonte e as regras de compilação, juntamente com todos os metadados do pacote.

Você também pode procurar por arquivos de controle descompactados:

find / -name control

Normalmente, eles estão no subdiretório debian do código-fonte de um pacote, que deve conter tudo o que você precisa para reconstruir o pacote a partir do código-fonte.

    
por 31.07.2017 / 11:14
1

Eu costumo usar uma combinação de scripts para trabalhar com arquivos de origem. Assim como a resposta acima, isso não resolverá exatamente o seu caso, mas pesquisar por símbolos pode ajudar a localizar os arquivos de origem.

O seguinte é adicionado a bashrc :

function list-code-files() {
    find -type f \( \
        -name '*.cpp' -o \
        -name '*.java' -o \
        -name '*.php' -o \
        -name '*.[chS]' -o \
        -name 'Makefile' -o \
        -name '*.mk' \
        \) -print0
}

function csym() {
    list-code-files | xargs -0 grep -ne "$1"
}

Em seguida, posso listar arquivos de origem usando list-code-files | xargs -0 echo ou pesquisar símbolos usando csym some-symbol-regexeg

    
por 04.08.2017 / 11:32

Tags