以下は、Pexドキュメントpexandcontracts.pdf http://research.microsoft.com/en-us/projects/pex/pexandcontracts.pdfのコードサンプルです。私はこれが厄介な特定の質問ではなく、むしろコード契約に関連していることを認識していますが、それはpexチュートリアルのコードです。ペックスとコード契約
CodeContracts:
namespace CodeDigging
{
public class StringExtension
{
public static string TrimAfter(string value, string suffix)
{
// <pex>
Contract.Requires(!string.IsNullOrEmpty(suffix));
// </pex>
Contract.Requires(value != null);
Contract.Ensures(!Contract.Result<string>().EndsWith(suffix));
int index = value.IndexOf(suffix);
if (index < 0)
return value; // (1) First possible contract violation
return value.Substring(0, index); // (2) second possible contract violation
}
}
}
静的検証者は、次の警告を提供しています証明されていない保証:Contract.Result()EndsWith(サフィックス)の時点で(1)と点(2)。
私の質問は、これを解決するにはどうすればいいですか?ペックスの調査によれば、契約違反の可能性はない。 (...ありますか?)
私は(私の質問の理由)に同意する傾向があります。サンプルの実装を提供してください。私は正しい答えをマークします。それでも入力に感謝します。 –