• ベストアンサー

C++解析のやり方について教えてください。

他人の作ったUNIXで動作するプログラム(コメント乏しい)に機能追加するためにプログラム解析することになりました。 クラス構成、関数メゾット、パラメータ どうやって解析するのかわかりません。 しかもUNIX環境が整ってないのでWIN2000での作業です。 よろしくおねがいします。

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

  • ベストアンサー
  • qa_goo
  • ベストアンサー率60% (6/10)
回答No.5

解析というか処理内容を理解するには その処理分野のスキルが必要ですので これは置いておいて・・・ 他人のソースを読む場合、 少しでも読み易くするために 私はよく以下のフリーツールを使います。 ・GNU indent  http://www.gnu.org/software/indent/indent.html  C/C++ ソースの書式を整形してくれるツールです。  Windows 用もあります。  空白、タブ、改行、括弧やパラメータの書き方など  自分の慣れたスタイルに整形できます。 ・DOXYGEN  http://www.doxygen.org/  C/C++ ドキュメント自動生成ツールです。  Windows 用もあります。  JavaDoc みたいにソース中に  専用コメントを書いておくと、  結構使えるドキュメントを自動作成してくれます。  専用コメントが無い他人のソースでも、  クラス階層やパラメータやクロスリファレンスなど  ソース解析してドキュメントを吐くので便利です。  HTML 形式で吐き出せばブラウザだけで  ソースを簡単にブラウジングできます。 どちらも英語ソフトですが、 検索すれば日本語の解説ページなども 見つかりますので参考にして下さい。

takako20
質問者

補足

ありがとうございます。 .cc では使用不可なのでしょうか?

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (5)

  • qa_goo
  • ベストアンサー率60% (6/10)
回答No.6

.cc は UNIX の C++ ソースで使われている拡張子なだけです・・・ 通常の C++ ソースなので問題なく利用できますよ。 ツールの具体的な使い方等は自分で調べてみましょう。 近道ばかりじゃなくて、色々と調べて解決していく方が 絶対にスキルアップできますよ。

全文を見る
すると、全ての回答が全文表示されます。
  • katouka09
  • ベストアンサー率50% (130/256)
回答No.4

無料ではありませんが、Cmap+というツールがあります。 詳細は参考URLを見てください。

参考URL:
http://www.vector.co.jp/soft/win95/prog/se147595.html
全文を見る
すると、全ての回答が全文表示されます。
  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.3

>すいません。どうやって使うですか? メニューの「project」から「New project」ですね。 基本的にはhelpをみてください。 エディタソフトですが、 継承関係の図がでたり、関数ジャンプもできるので 解析には役立つと思います。

全文を見る
すると、全ての回答が全文表示されます。
  • shige_70
  • ベストアンサー率17% (168/946)
回答No.2

もちろん、C++自体は使えるのですよね。 UMLを勉強してください。 その後、ソースから図を起こしてください。

全文を見る
すると、全ての回答が全文表示されます。
  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.1

こういうソフトがあるようです。

参考URL:
http://www.doumo.jp/postgretips/tips.jsp?tips=55
takako20
質問者

補足

すいません。どうやって使うですか? .ccをどうすればいいですか? 使い方を教えてください。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ソフトウェア解析に必要なもの

    あるパッケージソフトの解析をしなくてはならなくなりました。 目的としては、解析後にそのソフトの開発(機能追加)を行いたいという事です。 VC++メインのWinアプリケーションなのですが、 SOAP,XML,java,CORBA,VBA なども使っているようです。 現在、手元にあるものは、 ・パッケージソフト本体 ・ユーザ対象のインストール・操作マニュアル ・プログラム設計書??  ⇒ざっと見たところ、↓のような感じでした。   ・クラス階層図   ・クラス定義    ・public関数名・引数名・戻り値名(説明は無い)    ・メンバ変数名・型(説明は無い)   ・関数ベースのシーケンス図    アクションに対して、関数がキックされる順番を    記したもの。 上記の状態で、今後パッケージの追加機能を行うためには、何が必要かを調査するように言われています。 とりあえず、私が必要だと思っているのは、 ・要求仕様書 ・アーキテクチャ解説書  ⇒どこに何の技術が使われているのか。 ・開発ツール、コンポーネント一覧(名称・バージョン) ・関数定義仕様書  ⇒関数の動作、引数、戻り値について文章で説明   されているもの。 ・ソースコード といったところなのですが、他に絶対に必要だと思われるものはありますでしょうか? 上記の内容だけでは、分かりにくいところもあるかと思い ますが、本当に困っています。 足りない情報があれば補足しようと思いますので、どうぞ よろしくお願い致します。

  • C言語のソース解析ツールありませんか

    UNIX系OSで動作するものでC言語を解析してmain()からの関数の流れを出力してくれるようなツールを探しています。 GUIはあまり期待していません、自作しようと思っていたのですが世の中にあるツールを見てからでも遅くないと思いました。 誰が作ったかわからないようなソースを維持管理することになった為、このような質問を致しました。 どうか、情報があったら教えて下さい。

  • C言語ソースコードの解析

    私は現在組み込みのプロジェクトに参加おります、新米プログラマです。 既存の処理を理解したうえで設計しなければならないのですが、 元のソースコードに対して設計書が1つもなく、 ソース、ヘッダともにコメントなし、と言う状況です。 動作環境が無いので、ソースコードを解析して動作を理解しようとしています。 しかし、やっていることが複雑でなかなか進みません。 ■ポインタ/関数ポインタの嵐で、ポインタの実体を追っていくと、  30~40階層ほど上まで見なければならない。  (関数コールに、コールバックに、メッセージのやり取り)  関数ポインタを32bit整数の変数にキャストして代入し、  整数から関数ポインタに直したりしている。 ■構造体のメンバに他の構造体へのポインタがあり、  さらにその構造体は他の構造体のポインタを持っていて、  そのポインタが他の構造体の・・ などなど。 こういう複雑な他人のコードをどういう風に解析していますでしょうか? ご教授願います。

  • 評判のいいアクセスログ解析ソフトを教えてください!

    サーバーはUNIXです。 必要以上に高機能でなくてもいいです。 使いやすくて見やすいものがいいです。 ある企業(中規模クラス)のサイトの管理者がアクセスログを解析するために使用します。 価格にはとくに注文はありません。 ご存じの方がいましたら、 独断・偏見でもかまいませんので アドバイスをいただけますとうれしいです。 よろしくお願いします。m(_ _)m

  • 静的解析を試すから適当に送って・・・

    請け負っているソース修正作業中のファイルで静的解析を試すので適当なものを送ってください、と指示されたのですが、 最低限、解析を通す関数が1つ以上で、コーディング規約に合わせ、コンパイルエラーと警告なしが条件でした。 以下の手順で提出用のファイルを用意しました。 1.1つのソースファイルから適当に1つの関数をピックアップし、   他の関数はすべて消しました。プロトタイプ宣言も消しました。 2.残った関数が必要としないincldeを消しました。 3.コーディング規約に沿って修正しました。include先のヘッダファイルには何も手をつけていません。 4.現段階で定義されているファイルがない変数やメソッドがあったので、適当な位置にダミーを記述しました。 5.ビルドすると当たり前ですがmain関数がない、とのエラーが出たので、何の動作もしないmain関数を書きました。 これでエラー、警告はなくなりましたが、果たしてこれで解析ができるのか心配です。 常識的に間違っている箇所があればご指摘くださいますでしょうか。

  • C++のクラスについて

    C++を勉強しているC言語経験者です。 C++のクラスについてですが、クラスのメリットとはなんでしょうか?なんだか関数ポインタを持った構造体にしか見えないと言うか・・・(あと隠蔽化機能も持ってるんですね)。私が小規模なプログラムを組んだことしかない為か、クラスの必要性が全くわかりません。クラスは具体的にどう使い、どう役に立つものなのでしょうか? 回答よろしくお願いします。

  • クラスの概念について、私の考えは正しいですか?

    再度質問します。 クラスとは、何かを実行する物体の設計図のようなもの。何かを実行するというのは、車であれば、走行,車を止める,ライトをつける,クラクションを鳴らすということを実行し、これ等のようにある機能や動作や振る舞いのことをメゾットという。そして、このメゾットに関連した情報をフィールド(属性)といい、上記の車の例では、どこの社製の何という機種のライトであるか、どこの社製の何という機種のクラクションであるかとか。 このフィールドを指定することにより、このクラスのメゾットのアウトプットが変わってくる。例えば、アウトプットの良し悪しの観点から、上記の車の例で例えると、A社のc-11という製品名のライトの明るさを1として、B社のh-33という製品名のライトの明るさを3とすると、B社のh-33のライトのほうが、A社のc-11のライトより3倍アウトプットがいい。 このように、フィールドはメゾットのアウトプットに何かしらの影響を与える。 また、このクラスを元に生み出された、実際に動作してるオブジェクトをインスタンスという。上記の車の例では、実際に車が動作した状態で、例えば走行してたり、クラクションが鳴らしたり、ライトをつけたりという動作が実際に行われてる物体がインスタンス。

    • ベストアンサー
    • Java
  • sedで編集対象ファイルのコメント行を無視する

    sedで、いわゆるUNIXにありがちなconfファイルを編集しようとしています。 例えば、以下のようなtest.confファイルがあります。 # cat test.conf #### # test.conf file #### # parameter = xxx   parameter = aaa # set here   #parameter = bbb # set here このファイルの parameter を zzz に変更する場合に、 # sed "s/parameter =.*/parameter = zzz/" < test.conf > test.conf.new と実行すると、コメント行も含めて全て「parameter = zzz」と置き換わります。 そもそもコメントなので動作上問題はないのですが、confファイルのコメント行は sedで無視するようにするには、どのようにしたら良いでしょうか。 ちなみにコメントをあらわす"#"は、行の先頭や、空白、タブの後にあります。 また、正しいパラメータのうしろに説明としてコメントが入る場合もあります。 できればこの空白やタブ、コメントを前処理で削除などせず、見た目は同じまま、 コメントでない行のパラメータだけを入れ替えたいのです。 よろしくお願いします。

  • Visual C++2008のプログラムを変更しても反映されません

    Visual C++2008のプログラムを変更しても反映されません 手元にあるアプリケーションプログラムをデバックしてコンパイル⇒実行⇒動作は正常にできるのですが、 追加されているソース(mainなど)をいじっても変更が反映されません。 (↑main.cにprintfをいれたりコメントアウトしたりなどの簡単な操作) プログラムの知識が乏しいのでうまく説明できなくてすいません。 少しでもヒントにしたいので考えられる原因を教えてください。

  • コメントからドキュメントにリンクをはる

    Visual Studioをつかって、C++のプログラムを書いています。 各々のクラスや関数の説明をまとめたファイルに、コメント文からリンクをはれたら便利かと思いますが、このような機能はどのように実現したらよいでしょうか。 すでにある機能で実現できるのでしょうか。 (例) /** * @title AをBにするクラス * * @doc ../doc/abc.txt    <- クリックでテキストファイルがひらくようにしたい * **/