• ベストアンサー

必要なソースコードのみを抽出

数百MBに及ぶソースコードがあります。モジュールAのみを使う時、AがBを依存しています、BがCを依存しています、Cは・・・となり、結局全部コンパイルする羽目になります。 実際のところ、AはBの1関数のみ利用しており、Bのその他無関係の関数がCを依存しています。 モジュールAをうまく抜き出す方法はありませんか。言語はC、C#、VB、各言語単位で出来れば十分です。。

noname#189001
noname#189001

質問者が選んだベストアンサー

  • ベストアンサー
noname#208507
noname#208507
回答No.2

存在します.一応. 出来上がったソースの関連を自動的に探り当てるプログラム. さらに複雑に絡み合ったソースの依存関係をどう整理できるか,自動的に提案したり,シミュレーションする機能があります.LATTIXという商用ソフトウェアですが,それなりに高価です.

参考URL:
https://www.techmatrix.co.jp/quality/lattix/

その他の回答 (1)

  • papapa0427
  • ベストアンサー率25% (371/1472)
回答No.1

ないです。 普通はそのために関数一覧なんて管理資料を作成して、一元管理されるべきものですが…。またC、C#なんかもソースは同じように管理し、ヘッダーファイルなんかは管理者を決めて管理者以外は触れないようにするのが普通です。 出来上がったソースの関連を、自動的に探り当てるプログラムなんて聞いたことがありません。

関連するQ&A

  • ソースコードのコンパイルについて

    ソースコードのコンパイルについて よくソースコードだけしか公開されていないソフトを見かけますが、これらはWindows, Mac, LinuxそれぞれでコンパイルすればそれらのOSで動くようになるのでしょうか?例えばCで書かれたソースコードをWindowsでコンパイルすればexeに自動的にコンパイルされ、MacでコンパイルすればMac用のバイナリに自動的にコンパイルされるのでしょうか? またMacにはLinuxのシェルがあったと思うのですが、MacでコンパイルしたものはLinuxで動きますか?またその逆はできるのでしょうか。

  • アプリケーションとソースコードの違いについて

    僕はプログラマー志望の学生ですが、就職活動でソースコード+アプリケーションの提出を求められました。そもそもソースコードとアプリケーションって同じようなものだと思ってたので、混乱しています。この2つの違いって以下のようなものですか? ソースコード:人間が理解できるプログラミング言語を用いて書いたコンパイル前のファイル。 アプリケーション:コンパイル後のクラスファイル。 つまり、企業にはコンパイル前のファイルとコンパイル後のクラスファイルを提出しろということですか?

    • ベストアンサー
    • Java
  • printfなど、標準関数のソースコードが知りたい

    C言語、Linux初心者です。 タイトルの通り、printf, scanfなどの関数のソースコードや、main関数の呼出し部分のソースコードを見てみたいのですが、どこにあるのでしょうか。類似質問で http://www.gnu.org/home.ja.html から探せるとの回答がありましたが、出来ればもう少し具体的にお願いします。 RedHat Linux 7.3、gcc version 2.96を使っています。

  • ソースコードの差分の反映

    C# で書かれた2つのソースコードファイル(仮にA、B)があります。 元は、同じソースコードなので、共通した部分が大部分です。 ですが、AとBとで異なる部分がソースファイル中に散らばっています。 Aをバージョンアップしたら、Bもバージョンアップします。 Aに加えた変更をBにも反映したいのですが、手作業でやらずに反映させる方法はありますか。 このような作業を楽に行うのにはどうすればよいのでしょうか。 「AとBの差異を調べておいて、新しいAから新しいBを作り出す」という方法も考えられますが、 これも手作業では行いたくありません。 ちなみに、OSはWindowsXPで、開発は Visual C# .NET で行っています。

  • ソースコードを読む

    ソースコードを読むことは大切だ、という事を良く聞きますが、どんなソフトウエアのソースを読めば良いのでしょうか??また、何処から入手できるのでしょうか? いきなり、数千行のソフトは到底読めないので100~200行くらいから始めたいのですが、お勧めなどはあるでしょうか? UNIXのコマンドのソースはcatとechoが限界でした^^; C言語の知識は一通り勉強して、書く方なら500行くらいまではかけるようになったのですが、ソースを読む機会というものが無いので、どうしたら良いのか困っています。アドバイスお願いします。

  • ソースが解析できない言語はなに?

    C#やVB.NETだと逆アセンブルのツールなどでソースコードが見れてしまいますが 見ることが出来ない開発言語で一般的なのは何があるでしょうか?

  • ポインタによる包含&ヘッダにincludeしない、 場合でtemplateの定義に…

    class Bの宣言をしているヘッダ中で class A; を、前方宣言し、そのポインタだけを持たせ、ソースファイルのほうにclass Aの中身が分かるように、#includeして、ソースファイルに関数の実装やstatic変数の定義を書いていた、とします。 しかし、templateを使う関数についてはコンパイル時に解決できないといけないので、それだけはヘッダに持ってきました。 その時 includeが一切書かれていない、class Bのヘッダ内において class Aのメンバを参照するようなコードを書いたとき クラス外、クラス内、いずれに書いても 正常にコンパイルできました。 通常の関数では当然無理なので、もともとtemplateがコンパイル時解決を強要するものなのでそういう仕様にしててくれてると考えられますが 1.これは、C++の標準仕様でしょうか?それとも処理系依存でしょうか? あと、templateに関して 2.特殊化ならソースにかけるのは標準仕様でしょうか?それとも処理系依存でしょうか?

  • MINIX3のソースコード内の関数が見つからない。

    MINIX3のソースコード内の関数が見つからない。 minix/kernel/i8259.cのソースコードを読んでいます。 ファイルの中にintr_disable();という行があります。 しかしgrepで探してもこの関数の中身が書いてあるファイルを見つけることが出来ません。 どこにあるのでしょうか? よろしくお願いたします。

  • C言語のソースコードの書き方

    C言語のソースコードの書き方に関する質問です。 0を5個と1を4個の、合わせて9個の数字を並べて出来上がる数列のパターン(126通り)を全て羅列させるプログラムを作りたいと考えていますが、そのためにどういった方針を立ててソースコードを書けばよいかが分かりません。 どういった構造かだけでも構いませんので、教えて頂けると幸いです。 よろしくお願いします。

  • VC++: ソースコードから16進数のみ抽出

    前略  "C#: ソースコードから16進数のみ抽出"の質問をしたものです。 この質問にからんだプログラムは.NET VC++ 2012で製作中です。 最近はC#をやっている人が圧倒的に多くなっていることから回答を得やすいC#で回答をもらい C#のプログラムをC++に変更して使おうと考え C#で質問した次第です。  C#の場合と同様に <摘出前>の文字列を データだけの<摘出後>の文字列にしたいと思っています。先ほどから それぞれご教示いただいたC#のコードをもとに C++化した 摘出方法Aと摘出方法Bについてトライしているのですが  (1)摘出方法Aはコンパイルはできるが ”MatchはResultを呼びだせません"と云う実行エラーがでる。  (2)摘出方法Bは ”stringは定義されていない識別子です”と云うコンパイルエラーがでる。 といった状況で困っています。先ほどからいろいろやっているのですがうまくゆきません。  コードの修正等 具体的にアドバイスいただければ幸いです。 以上、よろしくお願いします。 <摘出方法A> Regex^ re = gcnew Regex("\{(?<moji>[0-9A-Fa-fx\r\s,]+)\}"); String^ st = re->Match(richTextBox1->Text)->Result("${moji}")->TrimStart()->TrimEnd(); MessageBox::Show(st); <摘出方法B> Regex^ r = gcnew Regex("0x[0-9a-fA-F][0-9a-fA-F],( |\r\n)", System::Text::RegularExpressions::RegexOptions::IgnoreCase); Match^ m = r->Match(richTextBox1->Text); richTextBox1->Text = string->Empty; while (m->Success) { richTextBox1->Text += m->Value; m = m->NextMatch(); } //-------抽出前-------------- #include "Graphics.h" #ifdef USE_GOL #if(GRAPHICS != 0x0306) #warning "use Graphics Library version 3" #endif #if defined __XC32__ extern const char __GOLFontDefault[] ; const FONT_FLASH GOLFontDefault = { (FLASH | COMP_NONE), }; const char __GOLFontDefault[] = { 0x00, 0x00, 0x1C, 0x00, 0x7E, 0x00, 0x1B, 0x00, 0x10, 0x94, 0x01, 0x00, 0x10, 0xCA, 0x01, 0x00, 0x11, 0x00, 0x02, 0x00, 0x11, 0x51, 0x02, 0x00, 0x05, 0xA2, 0x02, 0x00, }; #endif //-------抽出後------------- 0x00, 0x00, 0x1C, 0x00, 0x7E, 0x00, 0x1B, 0x00, 0x10, 0x94, 0x01, 0x00, 0x10, 0xCA, 0x01, 0x00, 0x11, 0x00, 0x02, 0x00, 0x11, 0x51, 0x02, 0x00, 0x05, 0xA2, 0x02, 0x00,

専門家に質問してみよう