65.9K
CodeProject 正在变化。 阅读更多。
Home

Sedge:一个自动错误报告工具

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.94/5 (11投票s)

2010年1月15日

Ms-PL

5分钟阅读

viewsIcon

40014

downloadIcon

944

本文介绍 Sedge —— 一款高度可定制的工具,旨在帮助您的客户创建更优质的错误报告。

sedge

引言

每个开发者都知道一个好的 bug 报告有多么重要,并且每个开发者都希望从用户那里获取尽可能多的关于问题的细节。有各种各样的解决方案旨在简化错误报告过程,从微小的第三方组件到像 Microsoft Windows Error Reporting 这样强大的技术,但大多数都只针对致命错误报告。

遗漏的文本、不正确的機能、错误的输出——您的用户也可能想报告这些问题。而且,即使对用户来说这看起来是一个小问题,您可能还是希望查看日志文件、配置、系统信息等。此外,用户可能使用您公司开发的多个应用程序,为了定位问题,您可能希望在报告中添加一些通用的日志或配置。

所有这些想法都在设计 Sedge 时被考虑了进去——这是一个开源、免费的实用工具,通过收集所有必要的信息、文件、描述,并以漂亮的 HTML 视图呈现,来帮助自动化错误报告。目标平台是 Microsoft .NET 2.0。

工作原理

Sedge 是一个向导风格的应用程序,它会提示用户截取问题截图、输入描述和联系信息,并添加用户文件。向导的最后一步是生成报告。Sedge 会复制您希望在报告中看到的所有文件,收集系统信息,创建报告 HTML 页面,并打包报告。用户可以审阅报告并将其通过电子邮件发送给您。

配置文件(默认扩展名为 .sedge)是该工具所有功能的关键。该配置描述了过程的各个方面——向导的步骤、要收集的文件和信息、报告的呈现方式等。如果未将配置文件的路径作为命令行参数提供,Sedge 将尝试从 Sedge.exe.config 中读取,并尝试在当前文件夹及其子文件夹中搜索。

命令行示例

Sedge.exe /suite="C:\Apps\QuickStart.sedge"

配置示例

<?xml version="1.0" encoding="UTF-8" ?>
<Sedge>
  <Suite name="LunarFrog.TaggedFrog" 
       caption="TaggedFrog Error Reporting" partial="no">
    <Schedule>
      <Step name="Screenshot" />
      <Step name="ErrorDetails" />
      <Step name="Contacts" />
      <Step name="Collect" />
    </Schedule>

    <Transport name="Email">
      <Option name="to" value="error_mail@company.com" />
      <Option name="subject" value="Error report" />
    </Transport>

    <Report>
      <Group name="UserGroup" caption="User Information">
        <Page name="ImagePage" caption="Screenshot">
          <Temp name="screenshot" caption="Screen" />
        </Page>
        <Page name="InfoPage" caption="Information">
          <Temp name="ReportDetails" caption="Details"/>
          <Temp name="Contacts" caption="Contact Information" />
          <Temp name="UserFiles" />
        </Page>
      </Group>
      <Group name="EnvGroup" caption="Enviroment">
        <Page name="ProcessesPage" caption="Processes">
          <Data name="Processes" />
        </Page>
        <Page name="SystemPage" caption="System">
          <Data name="System" />
        </Page>
      </Group>
    </Report>

    <Application name="TaggedFrog" caption="TaggedFrog">
      <Report>
        <Group name="ApplicationGroup" caption="Application">
        </Group>
      </Report>
    </Application>

  </Suite>
</Sedge>

配置的主要单位是套件 (suite)。套件代表一组相关的应用程序,可以存储在一个文件中,也可以拆分成多个部分。这意味着您可以有一个描述向导 UI 和通用属性的主配置文件,并在安装/卸载应用程序时添加/删除套件部分。错误报告将包含主配置中请求的信息,以及特定于所报告应用程序的信息(参见附件压缩包中的示例 4)。

schedule 部分描述了将显示给用户的步骤。每个 step 标签代表一个实现 IStepController 接口的类,您可以轻松创建自己的步骤来添加或替换现有的步骤(示例 5)。由于 GUI 代码与逻辑是分离的,您甚至可以完全替换用户界面,例如,如果您喜欢使用 WPF 而不是 WinForms。

最终,您可以自定义过程的几乎所有方面。例如,如果您不喜欢通过电子邮件发送报告,可以添加自己的传输协议。

报表

报告生成的下一个方面是……报告本身。配置定义了报告的结构,而样式由模板控制。模板由 HTML、CSS 文件和图像组成,因此您可以修改它以匹配您的公司风格。

每个页面可以包含一个或多个信息源来报告。有四种信息源类型:

  • <Temp> 显示用户提供的信息(截图、错误详情等)
  • <Info> 显示有关文件的信息——路径、大小和版本
  • <File> 指示应用程序将文件复制到报告中,并在页面上打印这些文件的链接
  • <Data> 实际上是一个元数据源;name 属性用于选择实现 IDataSource 接口并返回所需信息的类

开箱即用,有三个类:

  • Processes 用于显示正在运行的进程信息
  • System 用于显示有关操作系统和硬件的信息
  • Table 用于以表格形式打印提供的信息;它可用于显示属性中包含的信息

照例,您可以创建自己的源

<Data name="CurrentDate" assembly="${custom.dll}" caption="Now" />

属性 (property) 是一个可以存储文本信息的容器,可以直接在配置中设置,也可以从注册表中获取值。如果您希望以不同的方式设置属性,例如从 .ini 文件中获取,您可以创建一个自定义属性处理器。

public class EchoProperty : ICustomProperty
{
    public string GetValue(Options options)
    {
        return String.Concat("Echo: ", 
          options.GetGeneralOption("Param", "param"));
    }
}
<Properties>
    <Property name="custom.dll" 
      value="${sedge.this.folder}\DLL\Demo.Customization.dll" />
    <CustomProperty name="echo.message" 
      assembly="${custom.dll}" value="Echo">
        <Option name="Param" value="Hello World!" />
    </CustomProperty>
</Properties>

在每个配置中都有两个预定义的属性可用:${sedge.this.folder} - 配置文件的路径,以及 ${sedge.this.file} - 配置文件的名称。

为了在实际世界中使用,Sedge 支持本地化和品牌重塑。所有字符串都位于一个单独的文件中;您可以修改当前的翻译或添加新的翻译,并更改应用程序名称。

结论

Sedge 旨在帮助您的客户创建更好的 bug 报告,并为您提供一种控制应添加到报告中的信息的方式。使用 Sedge,用户不仅可以报告致命崩溃,还可以报告可用性问题、不正确的機能等。该应用程序的主要任务之一是在应用程序套件的上下文中提供错误报告,这可以通过使用部分配置来实现。Sedge 可以作为现成的工具使用,也可以定制以满足您的特定目标。

项目网站:sedge.codeplex.com

历史

文章的第一个版本。

© . All rights reserved.