Eksik C kodu nasıl bulunur?


9

Eski bir geliştirme sistemini miras aldım ve bu belge yeterince belgelenmedi ve hala mevcutsa kaynak kodu bilinmiyor.

Şimdi kaynak kodun bazılarını bulabilir ve aslında sistemin bir parçasını oluşturabilirim.

Ben kaynak kodun geri kalanını bulabilir miyim ve daha iyi bir yolu varsa locate *.cve elle dosyaları inceleyerek (kodun bir parçası bu şekilde) olup olmadığını merak ediyorum .

3 makine var ve sadece bir geliştirme makinesi gibi görünen kaynak kodunu buldum. Ayrıca .deb, projelerin paketlenmiş versiyonları gibi görünen 61 arşivi var, ancak .debarşivlere bakıldığında , kaynağın arşivlerde olmadığını veya en azından baktığım yerde olmadığını gösteriyor.

Kaynak kod için tüm bir sürücüyü "taramanın" iyi bir yolu var mı?

Yanıtlar:


9

Bu, daha genel sorunuza cevap vermez, ancak özel durumunuzda, sistemde paketleriniz olduğundan, ilgili kaynak kodunu aramaya değer:

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

Bu, Debian paket oluşturma araçlarının beklediği şekilde adlandırılmış kaynak arşivleri ve kaynak paket kontrol dosyalarını arayacaktır. O, göz için bulursanız .debian.tar*veya .diff.gzonlarla birlikte dosyaları. Tüm bu dosyalar birleştirildiğinde, tüm paket meta verileriyle birlikte kaynak kodu ve oluşturma kuralları verilir.

Paketi açılmış kontrol dosyalarını da arayabilirsiniz:

find / -name control

Bunlar genellikle debianpaketin kaynağını yeniden oluşturmak için ihtiyacınız olan her şeyi içermesi gereken bir paketin kaynağının alt dizininde yaşar .


1
Ayrıca: find / -wholename '*/debian/rules'. veya (mlocate yüklüyse daha hızlı)locate -r /debian/rules$
cas

2
@cas Burada güvenli oynamaya çalışıyorum, Debian paketleri oluşturmak için bazı garip kurulumlar gördüm. locatedaha hızlı olurdu, ama ben geçmişte temizlenmiş kurtarılmış sistemlerde çalışan hayal kırıklığına uğradım - locateveritabanı hala gitti kaynak kodu hakkında yeni. (Bu, yedeklemeler mevcutsa faydalı bilgiler olabilir ...)
Stephen Kitt

1
Tarafından giderek unix.stackexchange.com/questions/382857 , bu Debian paketleri değildir.
JdeBP

1
@JdeBP “ .debProjelerin paketlenmiş versiyonu gibi görünen 61 arşivi de var ” (sic).
Stephen Kitt

2
@DjDac bu iyi, sadece zaman arasında kaybolan finddosyaları okumaya çalışarak dosya listesini oluşturur ve bunları okuduğu zaman. Tamamen atlayabilirsiniz . /procfind/proc
Stephen Kitt

1

Genellikle kaynak dosyalarla çalışmak için bir betik kombinasyonu kullanırım. Yukarıdaki cevabın tam olarak sizin durumunuzu çözmeyeceği gibi, sembollerin aranması kaynak dosyalarının bulunmasında yardımcı olabilir.

Aşağıdakilere eklenir 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"
}

Sonra kullanarak kaynak dosyaları listeleyebilir list-code-files | xargs -0 echoveyacsym some-symbol-regexeg

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.