gpt4 book ai didi

c# - 代码契约与代码分析器

转载 作者:太空宇宙 更新时间:2023-11-03 21:07:29 25 4
gpt4 key购买 nike

我即将开始一个新的 C# 项目。我想知道使用代码契约或代码分析器(在 Roslyn 中)之间有什么区别。我误解了每个的用法吗?作为一个新项目,我想保持代码的完整性。所以我希望其他开发人员遵守特定的代码准则。我会进一步研究,但我想先征求社区的意见。请原谅这个问题,我对 C# 开发还是比较陌生。

最佳答案

它们是两种不同的工具。

代码契约是一种声明和检查……好吧,契约,例如前置条件和后置条件:

public class Foo
{
public Foo(object arg)
{
Contract.Requires<ArgumentNullException>(arg != null);
}

public object GetBar()
{
Contract.Ensures(Contract.Result<object>() != null);

// TODO:
}
}

CC 在运行时检查它们的条件。这需要在编译后重写您的程序集(不是源代码!),以便将适当的调用注入(inject)到您的代码中。

代码分析器使用 Roslyn 在您编写代码时分析源代码。它们可以帮助您格式化代码、提醒您调用 IDisposable 上的 Dispose 等等,但它们不会直接影响运行时行为。

有许多分析器,按用途分组到项目中(如 StyleCopAnalyzers ),而 Code Contracts是一个独立的项目。

(CC 也有静态分析器,但我不能在这里说太多 - 它在实际项目中使用时会降低性能,所以,对我来说,它通常是关闭的。无论如何,它是为了检查契约(Contract)。)

关于c# - 代码契约与代码分析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40283571/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com