質問

QAチームは、ビルド間で実際に変更されたEXEおよびDLLに基づいてテストに集中したいと考えています。素敵なsvn changeレポートがありますが、ソースと変更されたバイナリの関係は必ずしも明らかではありません。比較しているビルドは常に完全なクリーンビルドなので、ファイルシステムのタイムスタンプは使用できません。埋め込まれたタイムスタンプやその他の問題を無視するWindows(およびWindows CE)PEバイナリを比較するツールを探しています。信頼できる「実際に変更されたバイナリ」レポートを生成するためのツールまたはその他の方法に関する推奨事項はありますか?ありがとう。

説明:これまでの回答に感謝しますが、単純なバイトごとの比較やチェックサムの比較を行ってレポートを生成することはできません。コンパイラが挿入するタイムスタンプのために、tが変更されました。問題は、どのように誤検知を無視するかです。逆アセンブル<!> amp;比較アイデアは私たちが必要とするものに最も近いと思います...

回答済み! Bindiffはまさに私が探していたものです。どうもありがとう。

役に立ちましたか?

解決

Bindiff をご覧になりましたか?

他のヒント

以前にこの問題に遭遇しました。私の解決策は、.EXE / .DLLのすべてのタイムスタンプを既知の値に設定するツールを作成することでした。ビルド後のステップとして実行します。バイナリ差分は問題なく動作します。

おそらくバイナリを逆アセンブルしてから、アセンブリに対して差分を実行できます...

これは、QAチームが間違ったアプローチを取っているように聞こえますが...コードがどのように見えるかは関係ありません。それがするはずのことをするだけです。

編集: ああ!もう一度読んだ後、私はあなたの質問を誤解していることに気付きました。私は彼らが変更された方法をテストしたいと思った...

その場合、MD5ハッシュを取得して比較してみませんか?最も小さな変更により、まったく異なるハッシュが生成されます。

どの種類のバイナリ(DLL?PE / WinCE実行可能ファイルのみ?その他?)のバージョンが不明な場合、バイナリにバージョン情報を埋め込むことは可能ですか?コミット時にソースコードのバージョンを更新するソース管理タグを使用します。その後、新しいビルドが作成されると、バイナリのバージョン文字列も更新されます。バイナリファイルを比較する代わりに、バージョン文字列を使用して変更を確認できます。

NDepend をご覧ください。

<!> quot; home grow <!> quot;で作業していたとき;私の会社のインストール確認ツールでは、 Beyond Compare をバックエンドとして使用しました比較。

優れたファイル/フォルダー比較(同様にバイナリー)とスクリプト機能があり、XMLレポートを出力できます。

プロジェクト依存関係グラフジェネレーターおよび C ++-Projectsの依存関係グラフは両方とも GraphViz を使用して、依存関係を視覚化します。ソースファイルまたは他のリーフが変更されたディペンデンシーグラフ内のブランチを特別に強調表示して、ニーズの基礎としてそれらのいずれかを使用できると思います。

MD5ハッシュまたはチェックサム(上記を参照)、空白を無視してコメントの変更を除外する単純な差分、またはバージョン管理システムからの変更リスト情報は、どのファイルが変更されたかを通知できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top