Plant Simulation 软件中提供了显示每个Method行数的选项,但是当一个复杂的项目中拥有许多Method时,想知道所有Method中总代码行数就变得十分麻烦。所以这里我提供了统计代码总行数的程序,供大家参考。

功能:统计Frame及其所有子Frame中所有Method的代码行数。在Console窗口中展示结果。

优点:可一键统计所有Method行数,简单易用。

缺点:如有加密的Method,程序会报错。无法统计自定义属性中的程序行数。SimTalk 1.0程序手动运行时会弹出Dubug界面,可继续运行,不影响结果。如果使用程序调用传入参数为需要统计的Frame对象时则不会出错。

程序如下:

//SimTalk 2.0

param FrameObj:object:=void

-> integer

if FrameObj=void

       FrameObj:=current

end

var ObjectNum:=FrameObj.numNodes

var obj :object

var Code:string[]

var Num :integer

for var i:=1 to ObjectNum

       obj:=FrameObj.Node(i)

       switch obj.InternalClassName

       case “Method”

              Code:=splitString(obj.Program,chr(10))

              Num+=Code.dim

       case “Network”

              Num+=self.execute(obj)

       end

next

if ?=void

       print Num

else

       return Num

end

–SimTalk 1.0

(FrameObj:object):integer

is

do

       if FrameObj=void then

              FrameObj:=current;

       end;

       local ObjectNum:=FrameObj.numNodes;

       local obj :object;

       local Code:string[];

       local Num :integer;

       for local i:=1 to ObjectNum loop

              obj:=FrameObj.Node(i);

              inspect obj.InternalClassName

              when “Method” then

                     Code:=splitString(obj.Program,chr(10));

                     Num:=Num+Code.dim;

              when “Network” then

                     Num:=Num+self.execute(obj);

              end;

       next;

       if ?=void then

              print Num;

       else

              return Num;

       end;

end;

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注