2

コードコントラクトのコードリライターをオンにすると、以前は機能していたコードに問題が発生し始めました。

自分protected volatile boolのクラスを継承するクラスの他のアセンブリから表示されるメンバーフィールドがあります。アセンブリでccrewriteを有効にした後、そのフィールドへのアクセスでMissingFieldExceptionがスローされるようになりました。

この方法でフィールドを公開するのは悪いスタイルであることを私は知っています。プロパティを公開したり、揮発性マーカーを削除したりするように変更すると、問題は解決します。

現在、100%のコードカバレッジはありません。

私の質問は、どうすればコードコントラクトに依存できますが、コードは以前と同じように機能しますか?動作が変化したすべての場所を見つけるにはどうすればよいですか?

コードコントラクトバージョン1.4.50327.0

Microsoft (R) .NET Contract Rewriter Version 1.4.50327.0

編集コードコントラクトでいくつかの作業が行われていますが、リリースノートは素晴らしいものではありません。具体的には、何が修正されたかは明確ではありません。私は引用しています:

リリース1.4.51019.0(2012年10月19日)VS2012のタスクマネージャーに関するその他の問題を修正しました。CCDocのバグを修正しました。その他のその他のバグ修正。

リリース1.4.50910.0(2012年9月10日)タスクマネージャーが修正され、VS2012で正しく実行されるようになりました。静的チェッカーがバックグラウンドで実行され、波線が描画され、契約の提案がエラーリストに表示されます。インストール後に「devenv/setup」を手動で実行する必要がなくなるように、インストーラーを更新しました。これは、インストールの一部として自動的に実行されるようになりました。(これにより、インストールにかなり時間がかかります...)CCDocのいくつかのバグを修正します。

リリース1.4.50813.1(2012年8月13日)バグ修正(どこでも!)。パフォーマンスの向上(静的チェッカー)。精度の向上(静的チェッカー)。インストーラーとビルドファイルの修正。

リリース1.4.50327.0(2012年3月27日)VS2012サポート!(ただし、インストール後に「devenv / setup」を手動で実行する必要があります!)バグ修正。

4

1 に答える 1

1

これは内部リリースで修正しました。これは、CodeContractsの次のリリースで表示されます。

編集ここにコード契約サイト からのリリースノートがあります:

リリース1.5.60502.11(2013年5月2日)

  • C /C++相互運用プロジェクトのコントラクト参照アセンブリが欠落していることを警告しないようにスクリプトを修正しました
  • VBコンストラクター抽出の修正
  • コントラクトから呼び出されたときに、インターフェイスコントラクトのジェネリックメソッドを適切に処理します。
  • null以外の分析でのunboxの処理を修正しました(null derefを回避します)
  • 静的チェッカーでのnull許容型およびボクシング制約のより良い処理
  • F12でセッターコントラクトを表示するように修正(メタデータに移動)
  • EditorExtensionの実装におけるより堅牢なチェック
  • Reduced memory consumption and startup time of ccrewrite
  • Handle MEF Import attributes in non-null analysis
  • Preserve cross-assembly access to volatile fields in rewriter.
  • Fix a bug in the contract extractor when closures were present in a constructor.
  • Fix bug in rewriter when abbreviator method had static generic closure method.
  • Support async on pre 4.5 versions of the framework.
于 2013-04-24T21:16:41.003 に答える