类别 | Reporting |
类 | cov_engine |
类库 | coverage.vcx |
基类 | formset |
父类 | scov_formset |
这个表单集不是 _formset 的子类,因此“代码范围分析器”在 Microsoft Visual FoxPro 5.0 和 Visual FoxPro 6.0 中都可以运行。
说明
这个类是 Visual FoxPro 表单集类的子类。虽然它不提供可视组件,但是它提供了表单集类的数据工作期,并且通过 WAIT WINDOW NOWAIT 和 MESSAGEBOX( ) 提供了对代码范围日志处理的反馈,以及 MSComDlg.CommonDialog 的子类。这个表单集有一个成员,是工具栏,它是隐藏的,为自定义的对象(例如 CusRegistry 或 Dialog 子类)提供了容器。Cov_standard 是 cov_engine 类的子类,它提供了一个示例用户界面,既代码范围分析器应用程序。为了满足需要,可以创建 cov_engine 或 cov_standard 的子类。
这个一维数组保存了已注册的加载项文件列表。
默认值:.F. (该数组的默认大小将被设置为[1])
这个二维的数组保存了“代码范围分析器”所能处理的文件类型(即扩展名)列表。第一列中保存的是代码范围日志文件中所列文件的扩展名(例如 .fxp 或 .vct)。第二列中保存的是与之匹配的源代码文件的扩展名(例如 .prg 或 .vcx),“代码范围分析器”为了分析代码必须定位这些源代码文件。此数组在启动时由 FillFileTypeArray( ) 方法程序填充。
默认值:.F. (这个数组的默认大小将被设置为[1, 2])
保存了最近一个成功运行的加载项的文件名。在启动时,如果将一加载项文件名作为参数传递给代码范围分析器应用程序以在其 Init 方法程序中运行该加载项,那么本属性的值将被设置为此加载项的文件名。否则,如果已经在注册表中保存了加载项文件名,则使用数组 aAddIns 为该属性赋值。
默认值:""
为所有屏幕元素指定默认的字体名称。如果在注册表中没有保存其他的设置,则该属性的默认值将被设置为文件 COV_TUNE.H 中通过 #DEFINE 定义的常量 COV_DEFAULT_BASE_FONTNAME。
默认值:宋体
为所有需要等宽字体的屏幕元素指定默认的字体名称。
如果在注册表中没有保存任何参数选项,则该属性的默认值首先为 Visual FoxPro 资源文件中任何有关“MODIFY COMMAND”窗口参数选项的项目值。如果不存在,代码范围引擎将寻找“跟踪”窗口的 Visual FoxPro 注册项值并赋给该属性。如果这些值都没有找到,代码范围引擎将使用文件 COV_TUNE.H 中通过 #DEFINE 定义的常量 COV_DEFAULT_MONO_FONTNAME 给该属性赋值。
默认值:Courier New
指定一临时表名,该临时表中保存了“代码范围分析器”无需进行定位和分析的源文件名。引擎使用 CreateCoverageFileNameCursor( ) 和 FillCoverageFileNameCursor( ) 方法程序将这些文件名插入到该临时表中。如果要向集合中添加文件名,可使用代码范围引擎抽取 AdjustCoverageFileNameCursor( ) 方法程序的返回值。
默认值:IgnoredFiles
为 cSourceFile 属性中所保存的文件名指定路径。并为“代码范围分析器”的所有文件输出提供默认路径。
默认值:""
根据当前的代码范围日志文件指定用于标记被执行代码行的字符(或字符串)。虽然本属性的默认值为空字符串,但是引擎会用 SetMarks( ) 过程将 cMarkExecuted 属性值和 cMarkNotExecuted 属性值的长度调整为等长,以使被标记代码的外观保持整齐。因此,在启动时,cMarkExecuted 属性的值是 SPACE(4),从而与 cMarkNotExecuted 属性的默认值的长度保持一致。
默认值:""
指定当前在记录代码范围日志的过程中,用于标记未被执行的代码行的字符(或字符串)。
默认值:|+SPACE(3)
指定一表文件名(扩展名为 .dbf),该表文件中包含了在代码范围分析过程中无需进行分析的源文件列表。
默认值:""
指定一表文件名(扩展名为 .dbf),该表文件中包含了代码范围的分析结果。
默认值:""
指定一临时表名,该临时表中包含了“代码范围分析器”无法定位或分析的源文件的名称。引擎使用 CreatekippedCursor( ) 方法程序填写该临时表,并用 SaveSkippedCursor( ) 方法程序将其保存到磁盘上。
默认值:SkippedFiles
指定源临时表的名称,该临时表中包含了代码范围日志文件中所保存的被添加和处理的记录。引擎用 CreateSourceCursor( ) 方法程序创建该临时表,并且提供了抽象的 AdjustSourceCursor( ) 方法程序用于添加字段、索引标识等。然后,引擎通过 FillSourceCursor( ) 方法程序用文本记录中的记录填写该临时表。
默认值:FromLog
指定要分析的日志文件名。可将该属性的值作为 DO (_COVERAGE) WITH 命令的第一个参数。
默认值:""
如果“代码范围分析器”将暂停记录代码范围数据,则会将当前的代码范围日志文件名(即 SET COVERAGE 命令所返回的值)保存在本属性中。使用 SuspendCoverage( ) 方法程序设置该属性的值。
默认值:""
指定目标临时表的名称,该临时表中保存了类名、源文件名、标记了代码范围的过程源代码和代码范围统计信息。引擎用 CreateTargetCursor( ) 方法程序创建该临时表,并提供了抽象的 AdjustTargetCursor( ) 方法程序用于添加字段、标识等。然后代码范围引擎在 FillTargetCursor( ) 方法程序中定位和分析源代码。
默认值:MarkedCode
指定当 COV_TUNE.H 中的 #DEFINE COV_TOPSPEED 为“假”(.F.)时,源工作文件中字段的长度,该字段包含了有关正在运行代码行的对象和方法程序的名称。如果对象的完整名称和方法程序名比较短,而且希望节省分析器工作文件所占用的磁盘空间,则可以谨慎地缩小 iLenExecuting 的默认值。有关该值的详细内容,请参阅 COV_TUNE.H。有关使用 iLenExecuting 的详细内容,请参阅“节省“代码范围分析器”所使用的磁盘空间”。
默认值:115
当 COV_TUNE.H 中的 #DEFINE COV_TOPSPEED 的值为“假”(.F.)时,iLenHostFile 指定了源、目标和项目工作文件中 Hostfile 字段的长度,该字段保存了具有完整路径的包含源代码的 Visual FoxPro 文件名。如果源文件的路径不长,而且希望节省分析器工作文件所占用的磁盘空间,则可以谨慎地缩小 iLenHostFile 的默认值。有关该值的详细内容,请参阅 COV_TUNE.H。有关使用 iLenHostFile 的详细内容,请参阅“节省“代码范围分析器”所使用的磁盘空间”。
默认值:115
当 COV_TUNE.H 中的 #DEFINE COV_TOPSPEED 的值为“假”(.F.)时,iLenObjClass 指定了源工作文件和目标工作文件中一字段的长度,该字段保存了正在执行代码行的对象的信息。如果对象名较短,而且希望节省分析器工作文件所占用的磁盘空间,则可以谨慎地缩小 iLenObjClass 的默认值。即使对象名包含完整的容器分层结构,也可以这样做。有关该值的详细内容,请参阅 COV_TUNE.H。有关使用 iLenObjClass 的详细内容,请参阅“节省“代码范围分析器”所使用的磁盘空间”。
默认值:115
为所有的显示字符指定一基本字体属性(粗体)。
默认值:.F.
为所有的显示字符指定一基本字体属性(斜体)。
默认值:.F.
为所有需要等宽字体的显示字符指定一基本字体属性(粗体)。
默认值:.F.
为所有需要等宽字体的显示字符指定一基本字体属性(斜体)。
默认值:.F.
用于标志发生了错误的标记,其值由 Error 方法程序设置,并在执行关键操作前对其进行检查。
默认值:.F.
本属性指定是否在 Visual FoxPro 主窗口中运行“代码范围分析器”。在默认情况下,“代码范围分析器”是在一个独立的窗口中运行的。
默认值:.F.
指定“代码范围分析器”是否分析代码范围日志以获取分析特性。在默认设置中,“代码范围分析器”分析代码范围特性。
默认值:.F.
指定当加载一个目标文件时,是否标记所有的源代码。默认的设置为,根据用户的需要,对源代码记录一次一条地单独进行标记。
默认值:.F.
指定引擎是否保留对已定位的文件所在目录的引用。
默认值:.T.
指定当加载每个代码范围日志文件时如何设置 lInProfileMode 属性的值。当 lMarkAllOnLoad 属性的值设置为“真”(.T.) 时,本属性的值才有用。
默认值:.F.
指示“代码范围分析器”在处理过程中是否发出了 SET TRBETWEEN OFF 命令。
默认值:.F.
指定是否将用户选项保存到 Windows 注册表,以及是否从 Windows 注册表还原用户选项。
默认值:.T.
确定运行过程中的反馈信息是显示在状态栏中,还是显示在主窗口中。当“代码范围分析器”在 Visual FoxPro 主窗口中运行,或以无人照管方式运行时,如果状态栏的状态设置为 ON 时,就使用状态栏显示反馈信息。
默认值:.F.
指示“代码范围分析器”是否是在 Visual FoxPro 5.0 中运行。
默认值:(ATC("FoxPro 05",VERSION( )) > 0)
为所有的显示字符指定基本的字体大小。
默认值:9
如果“代码范围分析器”在独立的窗口中运行,则本属性的值为“代码范围显示区”窗口的引用。在显示任何与该窗口相关的对话框或其他元素(包括普通对话框子类、SET TALK 显示等等)之前,引擎会确保存在这一窗口。
默认值:.NULL.
从传递的文件名 TcFileName 中提取目录信息,并将其添加到当前由 SET PATH 命令指定的路径中。
语法:AddPath(tcFileName)
返回值:无
参数:TcFileName 指定一个文件名。
当加载项运行成功后,由 RunAddIn( ) 方法程序调用本方法程序将其文件名(由参数 TcFileToAdd 指定)添加到属性 aAddIns 数组中。
语法:AddRegisteredAddin(tcFileToAdd)
返回值:无
参数:tcFileToAdd 指定了需要添加到加载项数组(即属性 aAddIns 数组)的文件名。
当 CreateCoverageFilenameCursor( ) 方法程序调用本方法程序时,可利用其将不需分析的文件名添加到指定的临时表中。请参阅 cCovFilesAlias 属性。
语法:AdjustCoverageFilenameCursor(tcTarget)
返回值:NOT THIS.lReturn
参数:tcTarget 指定了需要修改的临时表的名称。
是抽象的方法程序。当 CreateSourceCursor( ) 方法程序调用本方法程序时,可利用其向源临时表添加索引标识和自定义字段。
语法:AdjustSourceCursor(tcSource)
返回值:NOT THIS.lReturn
参数:tcSource 指定了包含源记录的临时表的名称。
是由 CreateTargetCursor( ) 方法程序调用的抽象方法程序,可用于向目标临时表添加索引标识和自定义字段。
语法:AdjustTargetCursor(tcTarget)
返回值:NOT THIS.lReturn
参数:tcTarget 指定了正在修改的表的名称。
清除状态栏中的信息,或者执行 CLEAR WAIT WINDOW 命令。请参阅 lUsingStatusBar 属性。
语法:ClearStatus( )
返回值:无
参数:无
本方法程序可创建一个临时表,用于保存“代码范围分析器”无需进行定位和分析的源文件名。请参阅 cCovFilesAlias 属性。
语法:CreateCoverageFileNameCursor( )
返回值:lReturn AND NOT THIS.lError
参数:无
在启动时,如果代码范围引擎不以无人照管方式运行,则在建立工作文件之后,将执行本方法程序以显示“代码范围分析器”窗口。在代码范围引擎的基类中,这个方法程序只创建代码范围窗口(如果引擎不在 Visual FoxPro 窗口中运行)。在子类中可以扩充该方法程序,以添加自己的对话框。
语法:CreateForms( )
返回值:无
参数:无
因为引擎在加载日志文件时,如果遇到了不能定位的文件名,或位于忽略文件列表中的文件名,则会删除被跳过的记录,所以引擎通过在源表中查找被删除的记录来创建这个临时表。请参阅 CSkippedAlias 属性。
语法:CreateskippedCursor(tcSource, tcSkipped)
返回值:NOT THIS.lError
参数
tcSource 指定了包含源记录的表的名称。
tcSkipped 指定了包含被跳过记录的临时表的别名。
按照以下格式创建一个源临时表:
CREATE CURSOR(cSource) ;
(Duration n(7,3), ;
ObjClass c(COV_LEN_OBJCLASS), ;
Executing c(COV_LEN_EXECUTING), ;
Procline i, ;
Hostfile c(COV_LEN_HOSTFILE), ;
Stacklevel I, ;
FileType c(4) )
如果属性 lVFP5 的值为“真”(.T.) ,则源临时表中不包括 Stacklevel 字段。有关字段长度的信息,请参阅文件 COV_TUNE.H 中 #DEFINE 命令对以上常量的定义。
语法:CreatesourceCursor(tcSource)
返回值:lReturn AND NOT THIS.lError
参数:tcSource 指定了包含源记录的临时表的名称。
按照以下格式创建一个目标临时表:
CREATE CURSOR (cTarget) ;
(Hostfile c(COV_LEN_HOSTFILE), ;
ObjClass c(COV_LEN_OBJCLASS), ;
FileType c(4), ;
Marked m, ;
Profiled m, ;
SourceCode m, ;
Coverable i, ;
Covered i, ;
ObjTotal i, ;
ObjHits i)
有关字段长度的信息,请参阅文件 COV_TUNE.H 中 #DEFINE 命令对以上常量的定义。
对于在代码范围日志中的下列每一项,目标文件均包含一条记录:
语法:CreateTargetCursor(tcSource, tcTarget)
返回值:NOT THIS.lError
参数
TcSource 指定了要分析的文件的名称。
tcTarget 指定了要修改的文件的名称。
语法:DeleteRegisteredAddin(tcFileToDelete)
返回值:无
参数:
tcFileToDelete 指定了要从注册表中删除的加载项。
本方法程序从属性 aAddIns 数组中删除一个文件名。如果传递给 RunAddIn 方法程序的加载项不能成功运行,则无论当前是否在使用注册表,RunAddIn 方法程序都将调用本方法程序。
在使用 GetProjectStatistics( ) 方法程序收集了项目统计信息之后,启用报告模式。
语法:DisplayProjectStatistics(tcSource, tcTarget, tcProject)
返回值:NOT THIS.lError
参数
tcSource 指定了包含源记录的表的名称。
tcTarget 指定了所修改表的名称。
tcProject 指定了所分析项目的别名。
本方法程序将显示参数 tcMessage 的内容。如果“代码范围分析器”是以无人照管方式运行的,则本方法程序将执行带有 TIMEOUT 参数的 WAIT WINDOW 命令把信息显示在主窗口中,这样就不会打断引擎的进一步运行。可以用常量 COV_TIMEOUT_SECS(文件COV_TUNE.H 中通过 #DEFINE 定义的一个常量)来指定等待窗口显示的时间。
语法:DoMessage(tcMessage [,tnMessageBoxOptions [,tcMessageBoxTitle]])
返回值:liReturn
参数
tcMessage 指定了在消息框中显示的信息。
tnMessageBoxOptions 指定了函数 MESSAGEBOX( ) 的参数 nDialogBoxType 的值。
tcMessageBoxTitle 指定了函数 MESSAGEBOX( ) 的参数 cTitleBarText 的值。
liReturn 用于保存函数 MESSAGEBOX( ) 的返回值,如果执行的是 WAIT WINDOW 命令,则 liReturn 的值为零。
设置对话错误标志。根据 COV_DEBUG(文件 COV_TUNE.H 中通过#DEFINE 定义的一个常量)的值的不同,或者显示一个错误 MESSAGEBOX 并释放引擎,或者在一个等待窗口中显示错误信息,并激活 Visual FoxPro 本身的错误处理程序,以允许开发者取消、挂起或忽略当前的错误。
语法:Error(nError, cMethod, nLine)
返回值:无
参数
nError 指定了 Visual FoxPro 的错误编号。
cMethod 指定了引起错误的方法程序的名称。
nLine 指定了发生错误的行号。
CreateCoverageFileNameCursor( ) 调用本方法程序,以便将代码范围引擎文件集中无需进行分析的文件名添加到由其创建的临时表中。此方法程序是固化在基本的代码范围引擎中的一组 INSERT 命令。在子类中可用新代码覆盖此方法程序,例如可将此方法程序设计为能从根据文件 Coverage.pjx 创建的文本文件中读取一系列的文件名。
语法:FillCoverageFileNameCursor( )
返回值:RETURN NOT THIS.lError
参数:无
使用已知的文件扩展名初始化 aFileTypes 数组。请参阅 aFileTypes 属性。
语法:FillFileTypeArray( )
返回值:NOT(EMPTY(THIS.aFileTypes[1,1]) OR THIS.lError)
参数:无
将未标记的目标记录中的源代码放入相应的备注字段,以便以后进行标记,使用不同的策略为各种类型的源代码找到合适的代码。当通过 #DEFINE 定义的常量 COV_TOPSPEED 的值不为“真”(.T.) 时,这个方法程序也将特定的初始统计信息放在目标文件中。
语法:FillOneTargetRecord(tcSource, tcTarget, tlFillingAll)
返回值:lReturn AND(NOT THIS.lError)
参数
tcSource 指定了包含源记录的表的名称。
tcTarget 指定了要修改的表的名称。
tlFillingAll 指定了是否以循环的方式处理所有的记录,这将改变用户反馈和对所显示字符的处理。
通过 APPEND 将代码范围日志的内容追加到代码范围分析源文件。本方法程序调用 SourceAvailable( ) 方法程序,以删除那些引用了无法分析的源文件的记录。该方法程序在源临时表中将这些记录标记为已删除。
语法:FillSourceCursor(tcSource)
返回值:lReturn
参数:tcSource 指定了源文件的名称。
循环调用所有目标记录的 FillOneTargetRecord( ) 方法程序。将通过 CreateTargetCursor( ) 方法程序得到 ObjHits 统计信息复制到与目标文件引用源文件相同的其他的记录中。请参阅 CreateTargetCursor( ) 方法程序。
语法:FillTargetCursor(tcTarget)
返回值:(THIS.iTargetReccount > 0 AND NOT THIS.lError)
参数:TcTarget 指定了接收处理结果的目标文件。
为将来的改进提供一个占位符。无论是否运行了代码范围分析器应用程序,都可以在加载日志,或响应用户的操作时调用本方法程序。本方法程序在引擎中是抽象的。
语法:FilterListByLocation( )
返回值:NOT THIS.lError
参数:无
本方法程序或者返回当前使用的别名,或者返回与“代码范围分析器”工作文件类型所对应的默认别名。有效的工作文件类型包括:
"SOURCE"
"TARGET"
"SKIPPED"
"COVFILES"
"PROJECT"
(这个类型列表在文件 COV_SPEC.H 中通过 #DEFINE 定义为 COV_KNOWN_ALIAS_PROPERTIES)。每种工作文件类型都与一个 c…Alias 属性相匹配,以便为这种工作文件指定默认别名。
“代码范围分析器”通常使用每种工作文件的默认别名打开临时表。但只要为每个工作文件指定各自不同的别名,“代码范围分析器”也能在其数据工作期中同时处理多组工作文件。利用 GetAlias( ) 方法程序和已定义工作文件类型系统,以及 c…Alias 属性,可以获取默认的别名,而无需将默认的别名写进代码中。
引擎中处理工作文件的方法程序使用别名作为参数,因此可以随时指定所需的源、目标以及其他文件。但因为通常只对一组工作文件感兴趣,所以如果不将指定的别名传递给这些方法程序,它们都能通过 GetAlias( ) 方法程序指定要搜索的别名和工作文件默认类型。
语法:GetAlias(tAlias, tcWhichProp)
返回值:cReturn
参数
tAlias 指定了一个文件的别名。
tcWhichProp 指定了当前默认的工作文件类型(目前是 Source 或 Target)。
本方法程序将实例化一个公共对话框子类,并请用户设置字体属性。如果属性 lUsingOCXs 的值为“假”(.F.),或者在实例化公共对话框子类时出现错误,则该方法程序将使用 GETFONT( ) 方法程序。如果第一个参数 tlBaseMonoFont 的值是“真”(.T.),则该方法程序将只列出等宽字体,并将填写引擎的有关等宽字体的属性。如果该参数的值为“假”(.F.),则列出所有可用的屏幕字体,并用其为第二组基本字体属性赋值。
有关 lUsingOCXs 属性的详细内容,请参阅 GetResourceLocation( ) 方法程序。
语法:GetFontsFromUser(tlBaseMonoFont, toMemberHost )
返回值:lFontChange AND NOT THIS.lError
参数
tlBaseMonoFont 指定了默认的等宽字体样式。
toMemberHost 指定了对当前 Coverage 对象的引用。
创建如下结构的临时表,用于存放特定 Visual FoxPro 项目中文件的有关信息:
CREATE CURSOR(cProject) ;
(Hostfile c(COV_LEN_HOSTFILE), ;
FileType c(4), ;
Coverable n(8), ;
Covered n(8), ;
ObjTotal n(8), ;
ObjHits n(8))
本方法程序在此临时表中创建一个头文件,用于指示该临时表所对应的项目。用来自当前代码范围日志的有关项目中每个源文件的统计信息填充该临时表。在必要时将调用 MarkOneTargetRecord( ) 方法程序,处理任何尚未标记源代码的项目文件。
语法:GetStatistics(tcSource, tcTarget, tcProject)
返回值:lReturn
参数
tcSource 指定了包含源记录的别名。
tcTarget 指定了要修改的别名。
tcProject 指定了包含源文件的项目。
填充 aAddIns 数组属性和 cAddIn 属性。
语法:GetRegisteredAddins( )
返回值:无
参数:无
通常在启动时使用本方法程序,它使用引擎表单集中 toolbar 类的用于处理注册表的成员来获取与用户选项相对应的注册表关键字的值。它根据需要将注册表中的值转换为相应的类型(此处的类型是指由 TYPE( ) 所确定的类型),并将该类型与传递来的参数 tDefaultValue 的类型进行比较。该方法程序返回从注册表获取的值,如果没有找到该值或其类型有误,则返回默认值。
语法:GetRegistryKeyValue(tcOption, tDefaultValue, tcPath)
返回值:vReturn
参数
tcOption 指定了文件类型选项。
tDefaultValue 指定了默认的注册值。
tcPath 指定了 RegKey。
指定是否遵循 GETFILE( )/ShowOpen( ) 策略和 PUTFILE( )/ShowSave( ) 策略。请注意,这个方法程序提供了附加的供以后实例化并使用的对话框子类,可用于显示帮助文件或打印对话框。
toMemberHost 是用于传递对一个表单的引用的可选参数,用于指示在何处显示对话框。如果不传递此参数,文件对话框将显示在代码范围显示区中(如果存在代码范围显示区),或者显示在表单集中的第一个表单中(如果“代码范围分析器”运行在 Visual FoxPro 主窗口中)。
如果是首次调用,则为相应的公共对话框子类(取决于参数 tcWhichDialog 的值)添加一个成员。各对话框子类设置标志的方法各不相同。
如果在“代码范围分析器”中发生公共对话框子类错误或与 .ocx 有关的错误,则本方法程序将 lUsingOCXs 属性的值设置为“假”(.F.),并且使用 GETFILE( )/PUTFILE( ) 函数。
即使不存在 OCX 错误,也可以通过修改由 #DEFINE 定义的常量 COV_USE_OCXS 的值来将默认方式设置为使用 Visual FoxPro 的内部函数。
语法:GetResourceLocation(tcHost, tcTitle, tcCDLFilter, tcFileName, tcWhichDialog, [toMemberHost] )
返回值:lcFileName
参数
tcHost 指定了启动该方法程序的文件的名称,通常搜索匹配的含有未编译版本代码的文件名。如果传递了该参数,将根据它为公共文件对话框的 .InitDir 属性赋值。
tcTitle 指定了对话框所使用的标题,或在使用在 GETFILE( )/PUTFILE( ) 函数的版本中,WAIT WINDOW NOWAIT 命令所显示的提示信息。如果同时也传递了 tcHost参数,并且其中包含一个文件名,则此信息将被添加到对话框标题或提示信息中。
tcCDLFilter 指定了对话框所能处理的文件类型。这个参数是按照公共对话框筛选表达式是要求的格式表示的。如果调用的是 GETFILE( )/PUTFILE( ) 函数,该方法程序将分析公共对话框筛选表达式,以将其转换为符合这两个 Visual FoxPro 函数要求的格式。
tcFileName 指定了要显示的默认文件名。
tcWhichDialog GETFILE 或 PUTFILE。
代码范围引擎使用本方法程序生成文件名,并用该文件名将其工作保存到磁盘中,而不覆盖已有的文件。通常,本方法程序只是提供默认的文件名,但在无人照管方式下,此方法程序无需用户的干预便能创建文件名。每个要将文件保存到磁盘中的方法程序都使用一个特定的后缀调用 GetTableName( ),例如 SaveSkippedCursor 方法程序中有:
cDBFName = ; THIS.GetTableName(COV_SKIPFILEDBF_SUFFIX)
GetTableName( ) 方法程序使用当前日志文件 (THIS.cSourceFile) 的路径和文件名的主干部分,加上相应的后缀和一个数字,再加上扩展名 DBF,来构造出所需的文件名。
例如在上例中,如果日志文件名为 Testlog.txt,则生成的文件名为 TESTLOG_SKIP1.DBF。
如果该名称文件已经存在,GetTableName( ) 方法程序会不断增大文件名中后缀后面的数字,直至找到一个不存在的文件名为止。
默认的后缀在文件 COV_TUNE.H 中由 #DEFINE 语句所定义。
语法:GetTableName(tcWhichSuffix)
返回值:cLogfileStem+SUFFIX[+n]+.dbf
参数:tcWhichSuffix 指定了使用哪种文件扩展名。
在运行时间长的过程中,使用本方法程序冻结与释放 _Screen 的所有成员的 LockScreen 属性和 MousePointer 属性。
语法:LockScreens(tlOn)
返回值:.T.
参数:tlOn 指定了是否将属性 Lockscreen 的值设置为锁定。
以循环的方式对所有目标记录调用 MarkOneTargetRecord( ) 方法程序。如果 lMarkAllOnLoad 为“真”(.T.),或者代码范围引擎以无人照管方式运行,则将调用本方法程序。
语法:MarkAllTargetRecords(tcSource, tcTarget)
返回值:NOT THIS.lError
参数
tcSource 指定了包含源记录的表的名称。
tcTarget 指定了要修改的表的名称。
本方法程序可对一行代码进行标记,并能为其加上代码范围统计信息。在代码范围方式下,如果参数 tiExecuted 的值是一个正数,则将该行代码标记为已执行,如果参数 tiExecuted 的值为 0,则将该行代码标记为未执行。在分析方式下,为该行代码标记相应的代码范围统计信息。在以上两种方式下,如果参数 tiExecuted 的值为 .NULL.,则将该行代码标记为不能覆盖(即在该行代码前面填充一些空格)。
在cMarkedLine 中返回已经标记的代码。
语法:MarkCodeLine(tcLine, tiExecuted, tnFirst, tnAverage)
返回值:cMarkedLine
参数
tcLine 指定了代码行。
tiExecuted 指定了由参数 tcLine 所指定的代码行的运行次数。
tnAverage 指定了运行时间的平均长度。
判断当前的目标记录 tcTarget 是否已根据当前的“代码范围分析器”的工作方式(代码范围方式或分析方式)进行了标记,如果没有,则将相关信息传递给 MarkTargetCoverage( ) 方法程序,以便进行处理。
语法:MarkOneTargetRecord(tcSource, tcTarget, tlFillingAll)
返回值:lReturn AND (NOT THIS.lError)
参数
tcSource 指定了包含源记录的表的名称。
tcTarget 指定了被修改记录。
tlFillingAll 指定了是否处理其他的目标记录。如果以循环的方式处理所有的记录,则向用户的反馈和对所显示字符的处理会有变化。
为参数 tcSource 所指定的表创建其的标记好的版本,并且替换由参数 tcTarget 所指定的目标文件中的一个备注字段(不管是一个类的代码或完整过程文件的代码)。
本方法程序会从源代码备注字段着手进行此项操作。替换目标文件中哪个备注字段,取决于“代码范围分析器”是标记分析信息还是标记代码范围信息,这是因为目标记录对这两种标记代码都进行了保存。这个方法程序逐行分析源代码,并且估算它的统计信息。在默认情况下,这个方法程序调用 MarkCodeLine( ) 方法程序,以便在获得相应的统计信息之后真正地标记每行代码。但是,这个方法程序标记代码行的方法是由文件 COV_TUNE.H 中用 #DEFINE 语句定义的常数 COV_MARK_CODE_LINE 所确定的,而不是直接调用 MarkCodeLine( ) 方法程序。这样就可以使用不同的标记系统替换对 MarkCodeLine( ) 方法程序的调用。利用文件 COV_TUNE.H 中的另一个由 #DEFINE 语句所定义的常量 COV_TOPSPEED 也可以将对 MarkCodeLine( ) 的调用替换为更简单的行内标记系统,以得到最短的响应时间。
在分析方式下,MarkTargetCoverage( ) 将评估每一行,以判断它是否被执行了,执行的次数,以及第一次和平均的执行时间。但是,在“代码范围分析器”中,很多行被认为是不能覆盖的。因为这些代码行(例如说明、DEFINE CLASS 语句和 ELSE 语句,以及 TEXT … ENDTEXT 之中的代码行),是不可执行的,所以它们不出现在代码范围日志中。这个方法程序将这些行的执行次数设置为 .NULL。当“代码范围分析器”编辑统计信息时不考虑这些行。另外,由接续符号(分号)分隔开的行被认为是一行代码,并且只在最后一行进行标记。
语法:MarkTargetCoverage(tcSource, tcTarget)
返回值:NOT (EMPTY(cMemo) OR THIS.lError)
参数
tcSource 指定了包含源记录的表的名称。
tcTarget 指定了要修改的表的名称。
本方法程序为将来的改进和子类提供了占位符,并且在此引擎中是抽象的。
语法:OrderListByTime( )
返回值:NOT THIS.lError
参数:无
本方法程序将在启动时检查传递给代码范围引擎类的参数类型是否符合要求。如果发现了类型错误的参数,那么此方法程序将通过一个消息框指出所需的参数及类型,然后 返回一个“假”(.F.) 值,以防止对“代码范围分析器”的进一步运行以及对该类的实例化。
即使“代码范围分析器”是以无人照管方式启动的,这个方法程序也会显示上述消息框,并中止处理。因此,如要将“代码范围分析器”设置为自动检测,请确保调用程序将正确的参数传递给了“代码范围分析器”,否则将不会进行分析。
语法:PassedProperParams(tcFile, tlUnattended, tcAddIn)
返回值:lReturn
参数
TcFile 指定了日志文件的名称。
TlUnattended 指定了是否以无人照管方式运行。
TcAddIn 指定了加载项的文件名。
如果在运行“代码范围分析器”之前暂停了代码范围记录,则在关闭“代码范围分析器”时,可用本方法程序继续执行代码范围记录。此时用户可以选择改写此日志文件,或在其后追加新的记录,或者不继续执行代码范围记录。
语法:RestoreCoverage( )
返回值:无
参数:无
运行为 Coverage 对象提供附加功能的文件(.scx、.fxp、.app、.prg、.qpx、.qpr、.mpx 或 .mpr)。如果没有向本方法程序传递文件名,则将运行由 cAddIn 属性所指定的文件。
该文件必须接受一个对象引用,因为该文件是通过向代码范围表单传递一个引用来运行的,如下例所示(命令的具体形式取决于文件类型):
DO (cFileName) WITH THIS
DO FORM (cFileName) WITH THIS
语法:RunAddin(tcAddin)
返回值:lReturn AND NOT THIS.lError
参数:TcAddin 指定了要运行的文件的名称。
在需要将当前的用户参数选择保存到注册表中时,可调用本方法程序。该方法程序可保存下列用户参数选择:
lStartInProfileMode
lSmartPath
lMarkAllOnLoad
cMarkExecuted
cMarkNotExecuted
lRegisterAddIn
基本等宽字体的字体名称和属性(大小、斜体、粗体)
注册表中的有些设置不是由本方法程序保存的,因为只有在引擎工作期的特定时刻才能完成这些设置。它们是:
代码范围显示区或 Visual FoxPro 显示区选项(当用户做出的选择将在下一个工作期生效,而该选择又与本工作期的代码范围属性值不一致,或是不影响本工作期的任何代码范围属性值时,必须这样处理)。
已注册的加载项数组(在整个工作期中都要对该数组进行操作,因此在工作期结束时才将其中包含的全部文件名保存到注册表中)。
语法:SaveOptionsToRegistry( )
返回值:lSuccess
参数:无
如果保存被跳过文件的临时表中有记录,则将它保存到磁盘中,并将存盘时所用的文件名保存在 cSavedSkipFiles 属性中。请参阅 cSkippedAlias 和 cSavedSkipFiles 属性。
语法:SaveSkippedCursor(tcSkipped)
返回值:RETURN NOT THIS.lError
参数:tcSkipped 指定了包含被跳过记录的临时表。
将含有已标记代码和统计信息的输出(目标)文件保存到磁盘中。
语法:SaveTargetToDisk(tcTarget)
返回值:lReturn and NOT THIS.lError
参数:tcTarget 指定了被修改的表的名称。
使用注册表关键字的值和其他默认值设置初始的字体属性。有关代码范围引擎如何导出这些默认值的详细内容,请参阅 cBaseFontName 和 cBaseMonoFontName。
语法:SetFontValues( )
返回值:NOT THIS.lError
参数: 无
本方法程序试图设定一个用于分析日志文件。
如果没有向本方法程序传递字符串值,则使用 SET COVERAGE 命令所设定的值。如果当前没有指定的日志文件,那么该方法程序将提示输入一个文件名。如果成功地设定了日志文件,则该方法程序返回 .T.。如果用户没有指定日志文件,则方法程序返回 .F.。如果没有指定新的日志文件,并且当前有加载的日志文件,那么代码范围引擎将仍然使用此日志,如果当前没有加载的日志文件,则将释放代码范围引擎。
语法:SetLogFile(tcFile)
返回值:lReturn
参数:TcFile 指定了要分析的日志文件的名称。
使属性 cMarkExecuted 和 cMarkNotExecuted 的值具有相同的长度,并且如果这两个属性的值不是字符型的,或者都为空,则将一个属性或两个属性的值设置为默认值。如果注册表中没有可用的用户选项,本方法程序可以从文件 COV_TUNE.H 中通过由 #DEFINE 定义的常量 COV_DEFAULT_MARKNOTEXECUTED 和 COV_DEFAULT_MARKEXECUTED 获取默认值。另一个由 #DEFINE 定义的常量 COV_DEFAULT_MARKSPACING 能确保在标记和代码行之间留有空格。
语法:SetMarks( )
返回值:NOT THIS.lError
参数:无
将属性 aAddIns 数组中的文件名保存到注册表中。
语法:SetRegisteredAddins( )
返回值:无
参数:无
本方法程序使用引擎表单集中处理注册表的成员,根据用户选项设置注册表中关键字的值。该方法程序将所有的值转换为字符串类型后再将其传递给处理注册表的方法程序。
语法:SetRegistryKeyValue(tcWhichOption, tValue)
返回值:NOT THIS.lError
参数
tcWhichOption 指定了要存取的用户选项。
tValue 指定了 tcWhichOption 所指定的用户选项的值。
本方法程序在引擎中是抽象的,由 SetUiOptions 方法程序调用,用于将保存在各种 Base 和 BaseMont 字体属性中的用户字体参数选择应用于所需的显示字符。
语法:SetUIFonts( )
返回值:NOT THIS.lError
参数:无
本方法程序在完成了对工作文件的初始设置之后,根据用户参数选择设置初始的 UI 选项。这组选项包括字体和已注册的加载项的数组。这组选项用于 UI 显示,以及用户与经过处理的工作文件交互。
语法:SetUIOptions( )
返回值:lReturn 和 NOT THIS.lError
参数:无
在引擎中是抽象的,在 SetupWorkFiles( ) 方法程序的结尾处调用,以便让 UI 显示最新加载的日志中的当前目标记录。
语法:SetUIToShowCode(tcTarget)
返回值:NOT THIS.lError
参数:无
在引擎中是抽象的,在 SetupWorkFiles( ) 方法程序的结尾处调用,以便让 UI 指示出加载日志文件的状态是成功、是失败、还是正在试图加载。
语法:SetUIToShowFileStates(tcSource, tcTarget)
返回值:NOT THIS.lError
参数
tcSource 指定了包含源记录的表的名称。
tcTarget 指定了要修改的表的名称。
本方法程序用于设置代码范围日志文件并验证其有效性,然后为这个日志创建并且填写源和目标工作文件。如果用户选择的日志文件与当前加载的相同,则该方法程序会询问用户是否重新加载并分析该日志。该方法程序在加载日志之前会确认没有在文本窗口中打开该日志。如果用户指定了 lMarkAllOnLoad 属性,则在成功地使用源代码项填写了目标文件之后,该方法程序将根据当前的工作方式(代码范围方式或分析方式)标记所有的记录。如果“代码范围分析器”以无人照管方式运行,在目标文件填写成功之后,该方法程序会按照代码范围和分析两种方式标记所有的记录。如果加载成功,本方法程序将设置 cDefaultWritePath 属性的值以标记日志文件的路径,以及 cSourceFile 属性的值,以保存该日志文件的名称。
语法:SetupWorkFiles(tcLogFile, tcSource, tcTarget)
返回值:lReturn AND NOT THIS.lError
参数
TcLogFile 指定了要分析的日志文件的名称。
tcSource 指定了作为源的文件的名称。
tcTarget 指定了要修改的临时表的名称。
在对工作文件进行初始设置之前,本方法程序将根据用户参数选择或默认值设置一组选项的初始值。这组选项是处理工作文件时所需要的,其中包括代码范围标记和初始的“代码范围分析器”工作方式。
语法:SetWorkOptions( )
返回值:NOT THIS.lError
参数:无
本方法程序调用 GetProjectStatistics( ) 和 DisplayProjectStatistics( ) 方法程序对指定的 Visual FoxPro 项目文件进行代码范围分析。
语法:ShowStatistics(tcSource, tcTarget, tcProject)
返回值:lReturn AND NOT THIS.lError
参数
tcSource 指定了包含源记录的表的名称。
tcTarget 指定了要修改的表的名称。
tcProject 指定了包含 tcSource 的项目。
在基本引擎中是抽象的。
语法:ShowStatistics( )
返回值:NOT THIS.lError
参数:无
将信息显示在状态栏中或等待窗口中。请参阅 lUsingStatusBar 属性。
语法:ShowStatus(cMessage)
返回值:
参数:cMessage 指定了需在状态栏中或等待窗口中显示的信息。
用含有未编译源代码的文件的包括完整路径的名称替换当前已编译源记录的文件名。在必要时,该方法程序将调用 GetSourceLoc( ) 方法程序来定位相应的源代码。如果属性 lSmarthPath 的值为“真”(.T.),则当用户指定了在其中查找源文件的目录时,该方法程序将调用 AddPath( ) 方法程序来调整对路径的设置。当源文件位于被忽略的文件列表中,或文件是一种未知类型的文件,或不能找到未编译的源代码时,该方法程序返回“假”(.F.) 值。
语法:SourceAvailable( )
返回值:lReturn
参数:无
检查 cSourceFile 属性所指定的文件是否具有有效的代码范围日志格式。
语法:SourceFileIsLog( )
返回值:lReturn
参数:无
如果出现下列情况之一,本方法程序将 cSuspendedLog 属性的值设置为当前的日志文件名,并使 Visual FoxPro 暂停写入该日志文件:
语法:SuspendCoverage( )
返回值:无
参数:无
如果 lMarkAllOnLoad 属性的值为“真”(.T.),则本方法程序根据新的方式标记所有的目标记录。
语法:ToggleCoverageProfileMode(tcSource, tcTarget)
返回值:RETURN NOT THIS.lError
参数
tcSource 指定了包含源记录的表的名称。
tcTarget 指定了要修改的表的名称。