🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.lang.modula2
Article #2835

LOCs for modula

#2835
From: Meinhard Berger
Date: Thu, 21 Sep 1995 12:21
100 lines
3127 bytes
Hello
 maybe some one is interested in LOC measurements
 for modula code.

 the awk-script at the end produces following
 output when applied to one of my modules.
 
 a cyclomatic-complexity or software science would 
 be nicer maybe I do it next time. But I think
 for one programmer or as an quick scan over
 code LOCs are ok.

engelbert
cut here ----------------------------------------
IMPLEMENTATION MODULE ClipBrd;

 PROCEDURE            | lines | local Procs
----------------------+-------+--------------
 Available            |     7 |   0
 Open                 |     6 |   0
 Empty                |     6 |   0
 Close                |     6 |   0
 Compact              |     8 |   0
 SetData              |    15 |   0
 DataSize             |     7 |   0
 GetData              |    15 |   0
 _main                |     3 |   0
----------------------+-------+--------------
 9 procedures
cut here ----------------------------------------
#  analyze modula-2 source
#  -----------------------
#  16.5.1994
#  Fri 15.07.1994
#     changed because of enhanced AWK knowledge
BEGIN{
  mod1=1;
  lnNum=0;
  localProcs=0;
  ProcCnt=0;
}
# main loop
( ( $1=="MODULE" )||( $2=="MODULE" ) ){
   if( mod1==1 ){
      printf( "%s\n\n", $0 );
      print( " PROCEDURE            | lines | local Procs" );
      print( "----------------------+-------+--------------" );
      mod1=0;
   }
}
# a procedure declaration must start on a new line
# store name and line number
( $1=="PROCEDURE" ){
    if ( lnNum==0 ){                 # not a local proc
         split( $2, a, ";" );           # no ; or (
         split( a[1], a, "(" );
         procName=a[1];
         printf( " %-20s", procName );
         lnNum=FNR;
         procCnt+=1;
    }else{
         localProcs+=1
    }
}
# procedure endings must be on a separate line
# print name and number of lines
# reset procName and line number
( $1=="END" ){
    if ( ( index( $2, procName )==1 )||
         ( ( procName=="_main" )&&( index( $0, "." )!=0 ) ) ){
      printf( " | %5d | %3d\n", FNR-lnNum, localProcs )
      procName=""; lnNum=0
      localProcs=0;
    }
}
# look for module body
( ( lnNum==0 )&&               # outside any procedure
  ( $1=="BEGIN" ) ){
    procName="_main";
    printf( " %-20s", procName );
    lnNum=FNR;
    procCnt+=1;
}
END{
  printf( "----------------------+-------+--------------\n %d procedures\n",
         procCnt );
}
cut here ----------------------------------------



--
--------------------------------
- ASM-ISN Dept. SMC            -
- engelbert gruber             -
- peter fintl                  -
- helmut gragger               -
- email : c51903@dm.uibk.ac.at -
--------------------------------
Technical Details
Message-ID: <43rld5$7ci@dm2.uibk.ac.at>
Path: arc1-ca.pugleaf.net!news.uibk.ac.at!dm!c51903

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!news.uibk.ac.at!dm!c51903
From: c51903@dm.uibk.ac.at (Meinhard Berger)
Newsgroups: comp.lang.modula2
Subject: LOCs for modula
Date: 21 Sep 1995 12:21:57 GMT
Organization: University of Innsbruck, Austria 
Message-ID: <43rld5$7ci@dm2.uibk.ac.at>
NNTP-Posting-Host: dme.uibk.ac.at
X-Newsreader: TIN [version 1.2 PL1]