Come individuare il codice C mancante


9

Ho ereditato un sistema di sviluppo legacy scarsamente documentato e il codice sorgente non è noto se è ancora disponibile.

Ora potrei individuare parte del codice sorgente e effettivamente costruire una parte del sistema.

Mi chiedo se riesco a trovare il resto del codice sorgente e se esiste un modo migliore di locate *.ce ispezionare manualmente i file (è così che ho trovato parte del codice).

Ci sono 3 macchine e solo una in cui ho trovato il codice sorgente che sembra essere una macchina di sviluppo. Ha anche 61 .debarchivi che sembrano essere le versioni impacchettate dei progetti, ma guardare negli .debarchivi mostra che la fonte non è negli archivi o almeno non dove ho guardato.

C'è un buon modo per "scansionare" un'intera unità alla ricerca di codice sorgente?

Risposte:


9

Questo non risponderà alla tua domanda più generale, ma nel tuo caso specifico, poiché hai dei pacchetti sul sistema, vale la pena cercare il codice sorgente corrispondente:

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

Questo cercherà gli archivi dei sorgenti nominati nel modo previsto dagli strumenti di costruzione dei pacchetti Debian e i file di controllo dei pacchetti dei sorgenti. Se li trovi, cerca .debian.tar*o .diff.gzfile accanto a loro. Tutti questi file combinati ti darebbero il codice sorgente e le regole di compilazione, insieme a tutti i metadati del pacchetto.

Puoi anche cercare file di controllo non compressi:

find / -name control

In genere questi vivrebbero nella debiansottodirectory dell'origine di un pacchetto, che dovrebbe contenere tutto il necessario per ricostruire il pacchetto dall'origine.


1
anche: find / -wholename '*/debian/rules'. o (più veloce, se è installato mlocate)locate -r /debian/rules$
cas

2
@cas Sto provando a giocare sul sicuro qui, ho visto alcune configurazioni molto strane per la creazione di pacchetti Debian. locatesarebbe più veloce, ma in passato sono rimasto deluso eseguendolo su sistemi ripristinati che erano stati ripuliti - il locatedatabase era ancora nuovo sul codice sorgente che era sparito. (Queste informazioni possono essere comunque utili se sono disponibili backup ...)
Stephen Kitt,

1
Andando da unix.stackexchange.com/questions/382857 , questi non sono pacchetti Debian.
JdeBP

1
@JdeBP Stavo andando avanti "Ha anche 61 .debarchivi che sembrano essere la versione impacchettata dei progetti" (sic).
Stephen Kitt,

2
@DjDac va bene, sto solo findcercando di leggere i file in /proccui scompaiono nel momento in cui findcrea il suo elenco di file e il tempo in cui li legge. Puoi saltare /proccompletamente.
Stephen Kitt,

1

Di solito uso una combinazione di script per lavorare con i file sorgente. Proprio come la risposta sopra non risolverà esattamente il tuo caso, ma la ricerca di simboli può aiutarti a individuare i file di origine.

Il seguente è aggiunto 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"
}

Quindi posso elencare i file sorgente usando list-code-files | xargs -0 echoo cercare simboli usandocsym some-symbol-regexeg

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.