Delphi Code Coverage是Delphi的简单代码覆盖工具,它基于详细的地图文件创建代码覆盖范围报告。
还请查看此项目,因为它在Delphi IDE中添加了一个向导,以帮助创建配置并启动Delphi代码覆盖范围。
您要运行的项目的项目必须具有“调试”配置,以生成详细的地图文件。
Delphi代码覆盖范围当前仅测量“线路覆盖”,即它将跟踪为生成代码生成的每条线,并在执行时将其标记。
对于使用Borland软件包库(本质上是DLL)或外部DLL的应用程序,DCC将尝试为每个DLL加载一个.map文件,并且如果其存在并且这些库中的单位是覆盖单元的一部分,则代码覆盖范围将跨越DLL/BPL作为应用程序的一部分。 .map文件需要与已加载的DLL相同的目录中存在。
下载最新版本,解压缩文件,例如在Delphi安装“ bin”目录或“路径”中的某个地方放置它。
所有参数也了解批处理样式的环境变量(例如Windir%等),如果将文件用于源目录(请参阅-spf ),则还允许环境变量。可以通过准备“!”来排除单位文件中的特定单位(请参阅-uf )。在单位名称之前。
在您的编译应用程序和可执行文件的目录中打开命令行提示符。
类型: CodeCoverage -m TestApp.map -e TestApp.exe -u TestUnit TestUnit2 -xml -html
由于使用了较新的语言功能,因此需要一些较新的编译器。已知该项目不支持Delphi XE2。 XE3可能会起作用。主开发是通过10.x版本完成的。
-html作为参数)对于每个单元,将有一个单位。绿线覆盖了。红线没有覆盖线。其他行没有生成代码。还有一个codecoverage_summary.html文件,该文件汇总了覆盖范围并具有指向生成的单元报告的链接。
-xml作为参数)在输出目录中生成了一个称为codecoverage_summary.xml的摘要XML报告,该报告与Emma的XML输出兼容。与开关“ -xmllines”和“ -XMLGenerics”结合使用,每行详细的代码覆盖范围。
-emma或-emma21作为参数)现在可以创建Emma兼容输出,该输出允许使用Emma合并多个代码覆盖范围运行以及使用Emma来生成报告。
DCC与Delphi兼容最高10.4.2,均为32和64位。
您可以在Sonarqube中将XML报告的结果集成在一起。有关详细信息,请参见此处的Delphi Sonarqube插件或较新版本。
您可以使用Hudson Emma插件集成XML报告。可以使用HTML Publisher插件集成HTML报告。
通过DevFactory和Mendrix的慷慨支持,发布的最新发布成为可能。
该项目的灵感来自伊玛(Emma)等爪哇世界中的出色工具。这个项目已经在我的硬盘驱动器上以未完成的形式徘徊了一年多。终于它滑出了。
-m MapFile.map | 用作输入的地图文件 |
-e Executable.exe | 可执行的运行 |
-sd directory | 可以找到源的目录 |
-sp directory directory2 | 可以找到源的目录 |
-spf filename | 使用文件名指向的文件中列出的源目录。文件中的每行目录 |
-esm mask1 mask2 etc | 文件蒙版列表,要从单位列表中排除 |
-ism mask1 mask2 etc | 仅搭配单位匹配提供的文件掩码 |
-ecp prefix1 mask2 etc | 班级前缀列表,要排除在覆盖范围之外 |
-od directory | 将输出文件放置的目录 - 注意 - 目录必须存在 |
-u TestUnit TestUnit2 | 应检查代码覆盖的单位 |
-uf filename | 覆盖文件名指向文件的文件中列出的单元。文件中的每个行 |
-v | 显示冗长的输出 |
-dproj ProjectFile.dproj | 解析源文件,可执行名称,代码页和其他选项的项目文件。请注意,如果遇到多个相关开关,则只能具有单个值(例如代码页面)的选项将在外观顺序中覆盖。 |
-a Param Param2 | 要将其传递到应检查的应用程序的参数。 ^是一个逃生角色 |
-lt [filename] | 将事件记录到文本日志文件。默认文件名是:delphi-code-coverage-debug.log |
-lapi | 将Windows API outputdebugstring的日志事件日志 |
-ife | 包括文件扩展名 - 这将停止“ common.codings”被'转换为“ common” |
-efe | 排除文件扩展名 - 将“转换”“ common.encodings.pas”为“ common.encodings”(可悲的是,“ common.codings”为“ common”)。默认情况下,这是开启。 |
-emma | 在输出目录中将Emma覆盖范围输出作为“覆盖范围”。 |
-emma21 | 在输出目录中生成EMMA21覆盖范围输出为“覆盖范围”。 |
-meta | 生成Emma输出 - 'Coverage.em'和“ Coverage.ec”时,将生成单独的元和覆盖范围文件,以用于元数据和覆盖数据。注意:需求 - emma。 |
-xml | 生成XML覆盖范围输出 - 在输出目录中生成XML输出为'codecoverage_summary.xml'。 |
-xmllines | 在生成的XML覆盖范围输出中增加线覆盖率。 |
-xmlgenerics | 结合使用同一文件名的多个出现的线覆盖范围(在通用类中尤其有用)。 |
-html | 在输出目录中生成html覆盖范围输出为“ codecoverage_summary.html”。 |
-uns dll_or_exe unitname [unitname_2] | 创建一个单独的名称空间(名称名称将是模块的名称,而无需扩展名) |
-mns name dll_or_exe [dll_or_exe_2] | 使用列出的DLL:s的给定名称创建一个单独的名称空间。这些模块中加载的所有模块都将均为名称。 |
-lcl LineCountLimit | 计数次数执行到指定限制的次数 |
-cp CodePage | 源文件的代码页号码 |
-tec | 通过检查应用程序的出口检查 |
-twd | 将应用程序的路径作为工作目录 |
Delphi代码覆盖范围是根据Mozilla公共许可证的条款获得许可的,第2.0节。您可以在http://mozilla.org/mpl/2.0/上获取许可证的副本。