代码之家  ›  专栏  ›  技术社区  ›  Sarah Vessels

C/.NET中方法的自动文档异常[已关闭]

  •  31
  • Sarah Vessels  · 技术社区  · 15 年前

    我想要一些工具,最好是插入到Vs2008/2010中的工具,它将遍历我的方法,并添加关于可能抛出的异常的XML注释。我不想要 <summary> 或者其他要为我生成的XML标记,因为我将自己填写这些标记,但是即使在 private / protected 方法可以查看哪些异常可以抛出。否则,我发现自己正在浏览这些方法,并将鼠标悬停在它们内部的所有方法调用上,以查看异常列表,然后更新该方法的 <exception 列出这些。也许一个vs宏可以做到这一点?

    由此:

    private static string getConfigFilePath()
    {
        return Path.Combine(Environment.CurrentDirectory, CONFIG_FILE);
    }
    

    对此:

    /// <exception cref="System.ArgumentException"/>
    /// <exception cref="System.ArgumentNullException"/>
    /// <exception cref="System.IO.IOException"/>
    /// <exception cref="System.IO.DirectoryNotFoundException"/>
    /// <exception cref="System.Security.SecurityException"/>
    private static string getConfigFilePath()
    {
        return Path.Combine(Environment.CurrentDirectory, CONFIG_FILE);
    }
    

    更新: 工具似乎必须递归地遍历这些方法,例如,method1调用method2调用method3,而method3被记录为through NullReferenceException 因此,工具将method2和method1都记录为 空引用异常 . 该工具还需要消除重复,例如,如果一个方法中的两个调用被记录为抛出 DirectoryNotFoundException ,该方法将只列出 <exception cref="System.IO.DirectoryNotFoundException"/> 曾经。

    4 回复  |  直到 15 年前
        1
  •  9
  •   Adam Robinson    15 年前

    长话短说是不可能的。与Java不同,.NET语言中没有一个要求函数报告可能抛出的异常列表(也就是说,您必须捕获或报告可以调用它所调用的函数的任何异常)。因此,没有通用的方法来确定一个函数可以抛出的每个异常的详尽列表(我在这里使用单词function来覆盖 书面的 像函数一样,包括运算符、构造函数等),因为对于给定函数调用可能引发的异常,您没有任何保证。

    如果你愿意进入有限的范围,那么你可以写一些东西来扫描msdn,寻找一个给定的.NET库调用的适当文章,并使用那里的异常列表(如果有的话)递归地建立一个可能抛出的列表。但是,这不会覆盖任何第三方库,也不会捕获运行时抛出的任何异常。( OutOfMemoryException , StackOverflowException , NullReferenceException [除非您想更进一步,让异常分析也确定是否有空引用的可能性,但这在完全通用的意义上似乎也是不可能的])。

    我很确定这已经被C团队覆盖了一两次(如果Eric Lippert还没有回答关于这个的问题,我会很惊讶),但我很确定它归结为:虽然这种系统是有用的和有价值的 对某些人 ,强制使用它(并强制您报告或捕获所有可能抛出的异常)导致了大量 try { ... } catch (Exception ex) { ... } 为了避免家政和毛毯,沉默捕捉比未报告的例外情况更糟(imho)。

        2
  •  2
  •   Community CDub    8 年前

    您可以通过使用 AtomineerUtils 支持记录异常。

    您也可以使用 GhostDoc RESARPER和 Agent Johnson Plugin 用于生成异常。请参见以下问题: How to document thrown exceptions in c#/.net

        3
  •  1
  •   Warren Rumak    15 年前

    Exception Hunter 从Redgate软件可以让你中途到达那里。它可以对代码进行静态分析,并显示哪些代码行(包括.NET框架调用)将引发哪些异常。它不会为您编写XML文档。

    但是,我不得不说,你需要现实一点,知道这样的工具有多有用……由于极不寻常的情况,可能会发生一些例外情况,例如 System.OutOfMemoryException System.ExecutionEngineException 或者由于程序员错误,例如 System.NotImplementedException . 从技术上讲,这些都是可能的,但实际上,试图为每种方法记录它们中的大部分并不值得你花时间……对于应用程序中的几乎每种方法,您最终都会得到数百行注释。

        4
  •  0
  •   Daniel Brückner    15 年前

    RedGate Exception Hunter 是否分析代码以查找可能的异常。也许你可以使用它的一些功能。