2

私は PEX、Visual Studio、および .NET の世界は初めてですが、C# 用にいくつかのテストを生成しました。PEX は任意の .NET 言語で記述された .NET プログラムも分析できることを読んだので、現在、PEX を C で動作させようとしています (コードを C++ プロジェクトに保存しました。これは正しいアプローチですか?) . C++ 用の Visual Studio PEX アドインがないため、コマンド ライン インターフェイスを使用してみました。チュートリアル「Microsoft Pex を使用したパラメーター化された単体テスト」では、PexClassAttribute で注釈が付けられたクラスと PexMethodAttribute で注釈が付けられたパブリック メソッドを含む .dll または .exe で終わる「.NET アセンブリ」が必要であると書かれています。チュートリアルでは C# の例しか提供していないため、注釈を付けずに .exe で PEX を実行してみました。そこで、Visual Studio でコードをコンパイルし、アセンブリ ライトを取得しました。exe で PEX を実行しようとしました。次のエラーが発生しました。

Microsoft Pex v0.94.51006.1 -- http://research.microsoft.com/pex --
v4.0.30319
Copyright (c) Microsoft Corporation 2007-2010. All rights reserved.

unexpected error: error while loading of 'light' (currently running
with 4 bytes/pointer).
     LAUNCHER FAILED
unexpected failure: error while loading assembly (-1006 - 0xfffffc12)

だから私は次の質問があります:

  1. CでPEXを使用することは可能ですか? または、コードを C# に変換する必要がありますか?
  2. 私の light.exe は「.NET アセンブリ」ではないようです。C コードから「.NET アセンブリ」を作成するにはどうすればよいですか?
  3. アセンブリの形式が間違っているため、またはコードに注釈を付けていないために、エラー メッセージが表示されますか? (2 番目は、エラー メッセージのため、私にはありそうにないようです。「すべてのフィルターを適用した後に探索が見つかりませんでした。[PexClass] または [PexMethod] 属性を忘れましたか?」のようなものを期待します)。
  4. エラーの原因が、注釈の欠落やアセンブリの形式の誤りではない場合、根本的な原因は何ですか?
  5. C++ で PexClassAttribute を使用してクラスに注釈を付けるにはどうすればよいですか? どのライブラリが必要で、アセンブリを作成するプロセスはどのように機能しますか?
4

1 に答える 1

3

Pex は .NET アセンブリでのみ機能します。任意の .NET 言語で使用できますが、C は 1 つではありません。たとえそうであったとしても、CLR を対象として記述された純粋な C コードでのみ機能し、ネイティブ C コード (あなたのもの) では機能しません。

したがって、CLR を対象としない限り、C++ コードでさえ Pex で分析できないため、C コードを C++ プロジェクトとして読み込んでも役に立ちません。

于 2012-09-04T19:58:03.587 に答える