【问题标题】:Run FxCop against ASP.net web-site?对 ASP.net 网站运行 FxCop?
【发布时间】:2012-10-03 08:27:21
【问题描述】:

如何针对 ASP.net 网站运行 FxCop?

背景

我有一个想要运行 FxCop 的 ASP.net 网站。

注意:我有一个 ASP.net 网站,而不是 ASP.net Web 应用程序,我想针对它运行 FxCop。

如何在 Visual Studio 2010 Professional 中针对 ASP.net 网站运行 FxCop?


Some people suggest 很简单:只需右键单击网站项目,然后单击在网站上运行代码分析

过程很简单....只需右键单击网站项目并“在网站上运行代码分析”

他们忽略的是no such option exists:


我也试过 Tools 菜单 -> FxCop。但是这当然行不通,因为它的命令行选项:

FxCopCmd.exe /c /f:$(TargetPath) /d:$(BinDir) /r:"C:\Program Files (x86)\Microsoft Fxcop 10.0\Rules"

对网站没有意义。


Someone has suggested,正确,这是不可能的,因为没有可供 FxCop 验证的程序集:

ASP.NET 2.0 中的构建过程与 ASP.NET 1.x 中的构建过程非常不同,因为它不生成 dll 文件。

这意味着您不能使用 FxCop,因为它只能处理 dll 和 exe 文件类型。

这意味着如果不将整个网站编译成一个程序集,您就无法针对 ASP.net 网站运行 FxCop。

如何针对 ASP.net 网站运行 FxCop?

【问题讨论】:

  • 旁白:你可能想把你的笔记从问题的底部移到顶部,因为我是在读完第一个分隔符之后的所有内容之后才读它的 :)。
  • 这个故事的寓意是停止使用像网站“项目”这样的小玩具。使用 Web 应用程序项目,所有这些都可以正常工作。
  • @JohnSaunders 该选项 (MSDN) 的缺点很容易超过能够运行 FxCop。
  • 无法运行 FxCop 是网站的最小缺点。很抱歉无法将它们列出来,但所有这些缺点都来自这样一个事实,即网站“项目”在 Visual Studio 中的所有其他项目类型中是独一无二的。独一无二是不好的。例如,它们总是最后被测试的,如果某些功能不能在网站上运行,很可能没有人关心它是否能够运行。
  • @JohnSaunders 如果可以将 Web 应用程序编译为 ASPX 和 CS 文件,以便可以从网站的其余部分单独查看和更新​​它们,那就没问题了。但是包含所有代码的单个程序集是一个交易破坏者。我仍然可以对 asp.net 网站进行单元测试;我就是无法 FxCop。

标签: asp.net visual-studio-2010 fxcop


【解决方案1】:

您可以发布您的网站,它会生成您可以在其上运行 fxcop 的 dll。

Use-FxCop-with-ASPNET-20


ASP.NET 2.0 中的构建过程与 ASP.NET 1.x 中的非常不同,因为它不生成 dll 文件。这意味着您不能使用 FxCop,因为它只能用于 dll 和 exe 文件类型。但是,有一种方法可以在 Visual Studio 2005 中从您的 Web 应用程序生成 dll 文件,并且这些 dll 文件可以被 FxCop 使用。

这些是让 FxCop 分析您的 Web 应用程序的步骤:

第 1 步

在磁盘的某处创建一个新文件夹。可能是 C:\deploy

第 2 步

将 Web 应用程序发布到新文件夹中

第 3 步

打开 FxCop 并添加新创建的 bin 文件夹 (C:\deploy\bin) 中的所有 dll 文件进行分析。

对于我们这些不使用 Visual Studio Team System 的人,这些是我们在 FxCop 中分析 Web 应用程序时需要遵循的步骤。希望下一个版本的 Visual Studio 已经解决了这个问题。

【讨论】:

    【解决方案2】:

    或者您可以运行对源代码进行分析的工具,而不是编译的程序集。可能会节省您一些宝贵的时间。

    【讨论】:

    • 不幸的是,大多数分析工具,如 FxCop、Mono Gendarme、NDepend 都需要二进制文件/程序集。
    • 确实,这就是为什么我们建议使用 NDepend 编译网站来分析它ndepend.com/FAQ.aspx#ASPNET
    • 我们的产品submain.com/CodeIt.Right不一样,分析源码。
    【解决方案3】:

    一种解决方法是预编译您的网站,

    1. 使用 aspnet_compiler.exe 预编译您的网站,http://msdn.microsoft.com/en-us/library/bb398860(v=vs.100).aspx
    2. 对预编译的结果运行 FxCop。

    你看不到“在网站上运行代码分析”,因为你的 Visual Studio 版本不够高端(应该归咎于微软,因为所有版本都应该有这些基本功能)。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-03
    • 2011-12-10
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    • 2010-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多