不足しているCコードを見つける方法


9

ドキュメントが不十分なレガシー開発システムを継承しましたが、ソースコードがまだ利用可能かどうかはわかりません。

これで、ソースコードの一部を見つけて、システムの一部を実際に構築できました。

残りのソースコードを見つけることができるlocate *.cのか、ファイルを手動で検査するより良い方法があるのかどうか(それがコードの一部を見つけた方法です)。

3つのマシンがあり、開発マシンのように見えるソースコードを見つけたのは1つだけです。.debプロジェクトのパッケージバージョンのように見える61のアーカイブもありますが、.debアーカイブを調べると、ソースがアーカイブ内にないか、少なくとも私が見た場所にはないことがわかります。

ドライブ全体のソースコードを「スキャン」する良い方法はありますか?

回答:


9

これはあなたのより一般的な質問には答えませんが、あなたの特定のケースでは、システムにパッケージがあるので、対応するソースコードを探す価値があります:

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

これは、Debianパッケージ構築ツールが期待する方法で名前が付けられたソースアーカイブと、ソースパッケージ管理ファイルを探します。あなたはそれらの、一見のための見つけた場合.debian.tar*.diff.gz、それらと一緒にファイルを。これらすべてのファイルを組み合わせると、すべてのパッケージメタデータとともに、ソースコードとビルドルールが提供されます。

解凍された制御ファイルを探すこともできます:

find / -name control

これらは通常debian、パッケージのソースのサブディレクトリにあり、ソースからパッケージを再構築するために必要なすべてのものが含まれています。


1
また:find / -wholename '*/debian/rules'。または(mlocateがインストールされている場合はより高速)locate -r /debian/rules$
cas

2
@casここで安全にプレイしようとしています。Debianパッケージをビルドするための非常に奇妙なセットアップを見てきました。locateより高速になりますが、クリーンアップされた回復済みシステムでlocateデータベースを実行すると、以前はがっかりしました— データベースは、なくなったソースコードについてはまだ新しいものです。(バックアップが利用可能な場合でも、これは有用な情報になる可能性があります...)
Stephen Kitt 2017

1
行くunix.stackexchange.com/questions/382857、これらはDebianパッケージではありません。
JdeBP 2017

1
@JdeBP私は「.debプロジェクトのパッケージ化されたバージョンのように思われる61のアーカイブも持っています」(sic)を使用していました。
Stephen Kitt 2017

2
@DjDacは問題ありません。ファイルのリストを作成してから読み取るまでの間に消えたfindファイルを読み取ろうとするだけです。完全にスキップできます。/procfind/proc
Stephen Kitt 2017

1

私は通常、ソースファイルの操作にスクリプトを組み合わせて使用​​します。上記の答えと同じように、これはあなたのケースを正確に解決しませんが、シンボルを検索するとソースファイルを見つけるのに役立ちます。

以下が追加され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"
}

次に、を使用してソースファイルを一覧表示するlist-code-files | xargs -0 echoか、またはを使用してシンボルを検索できますcsym some-symbol-regexeg

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.