Baseline Differential Metrics

 

 

 

 

White Paper

Resource Standard Metrics™

Source Code Baseline Differential Metrics

 

 

 

 

 

 

 

 


© 2013 M Squared Technologies™ LLC

 

 


Table of Contents

Introduction

Windows Quick Start Step By Step

Linux/Unix Quick Start Step By Step

Baseline Metrics Differentials

The Baseline Tree

New Files

Removed Files

Modified versus Differential Files

Baseline Size Metrics

LOC

eLOC

lLOC

Size Differential

Equal Files (Size Metric Analysis)

Baseline Change Metrics

Equal Files (Code Differential Analysis)

Code Differentials

New and Removed Files

 

Source Code Differential Analysis

Code Differentials Requirements

RSM Differential Algorithm

Differential Files

Differentials of Characterized Files

Detailed View Using the RSM Differential Algorithm

 

Case Study

Concept of Operation

Work Files

Work File Locations

Baseline Size Change Work Files

Baseline Source Change Work Files

The dir command yields the following contents of the metrics directory.

Extracting Work Files – Baseline Differentials

Work File Extraction – Size Metrics Differential

Work File Extraction – Code Change Metrics Differential

Comparing the Size versus Code Change Differentials

Work File RSM Configuration Settings

Other Helpful RSM Configuration Settings for Baseline Processing

 

RSM Report Options

Report Output Format

Example HTML output

Example CSV Output for Spreadsheet Import

Work File Glossary

Work Productivity Estimates

Work File Deterministic Mode

Showing Source File Differences

 

Reference

 

Contact Information

 


Introduction

A software product baseline is a set of source code files organized in a hierarchical tree of folders which represent the product components.  Each product release is derived from a specific baseline.  Software product managers are interested in the "QOWP" Quantity of Work Performed" by their team.  The quantity of source lines of code is a metric that can be directly measured from the product baseline.  This is not so of Function Points (FP).  Function points are useful as a forward predictor in software estimation by the metrics can not be objectively measured from the physical product.   RSM is a tool which can measure source lines of code and derive function point metrics from SLOC for a software baseline.  The difference in the growth of this metrics between baselines is called source code differential metrics.

 

When a product is released, the set of files within these folders comprise a product.  This set becomes a version controlled baseline.  Version control systems allow for the identification of the files in a baseline and they provide the ability to view a specific baseline version.  There is a historical or older baseline and a current or newer baseline. Product managers need the ability to assess the source code metrics between these two baselines.  This task is not practical using a manual process because of the volume of folders, files and lines. 

 

Resource Standard Metrics has been an industry leading metrics tool since 1996.  This product has the ability to automatically perform source code baseline differentials.  There are two modes for baseline differentials, size and change. 

 

A size differential addresses the question; How much larger is baseline 1 from baseline 2 without regard for individual line changes?  This metric is useful to quantify the additional growth of a product baseline or when assessing the quantity of work performed against the labor hours expended.

 

A change differential of the baseline source code addresses the changes made between the baselines.  This includes changes to existing code, new code and deleted code.

 

Versions of Resource Standard Metrics (RSM) prior to version 6.40 performed a size metric differential.  Each file was assessed for is LOC metrics and a net differential is performed between baselines.  RSM version 6.40 of RSM adds source code change metric differentials and RSM 6.60 enhances the code differential algorithm for speed and accuracy.

 

This white paper explores these two baseline differential modes when using Resource Standard Metrics.  It presents the technology, processes and reports provided by Resource Standard Metrics.

 

Windows Quick Start Step By Step

 

Linux/Unix Quick Start Step By Step

Baseline Metrics Differentials

This paper will use two baselines, a older baseline and a newer baseline.  The example baseline is composed of a single file so that the reader can follow how RSM processes the baseline differentials.

 

RSM can process an unlimited number of files in a baseline.  The number of files processed by RSM is only limited by the hardware resources of the machine.  RSM is designed to be extremely efficient with these resources so a ten thousand file baseline containing million lines of code can be processed on a Pentium III class machine with 256 megabytes of memory and available disk space at least as large as the processed baseline if change differential metrics processed.

The Baseline Tree

A baseline is a tree of folders or directories which contain files that change over time.  It is assumed that the “top” directory or root of the tree is a constant.  When processing baseline differentials it is very important that RSM know this location as this becomes the start point for file discovery in the recursive descent of the baseline tree. 

 

The following is an example of a baseline tree.

 

/project

  +- src

       +- file1.cpp

       +- file1.h

 

If the root of the news baseline has a different root (“/project_new”) then RSM will assume the subdirectories and files with that root are different because their literal path name (“/project/src/file1.cpp”) is different than the older baseline (“/project_new/src/file1.cpp”). 

 

However, if you select the “src” directory as the starting root of your source tree then the file path/name becomes identical and RSM will assume the files are the same and perform differentials rather than declare new or deleted files.

 

Choosing the proper baseline root for metrics differentials

 

/project

  +- src

       +- file1.cpp  =>  File: /project/src/file1.cpp

       +- file1.h

 

/project_new

  +- src

       +- file1.cpp  =>  File: /project_new/src/file1.cpp

       +- file1.h

 

/project/src/file1.cpp != /project_new/src/file1.cpp

 

However if you choose the ./src folder as the root the two files can be compared because of their matching names

 

 

  +- src

       +- file1.cpp  =>  File: src/file1.cpp

       +- file1.h

 

 

  +- src

       +- file1.cpp  =>  File: src/file1.cpp

       +- file1.h

.

src/file1.cpp == src/file1.cpp

New Files

New files are those files that exist in the newer baseline but do not exist in the historical or older baseline.  These files comprise the new modules that have been added to the system.  The new system features can be usually traced directly to the files.  All metrics in these files become a positive addition to the overall baseline differential metrics.

Removed Files

“Rem” or Removed files are those files that are present in the historical baseline and not in the current baseline.  These files typically represent the modules that have been deprecated from one release to another.  Removed files can be either a positive or negative addition to the overall baseline metrics.  Some baseline engineers feel that removal of code is just as important as the addition of code and choose to make these files a positive impact.  This choice is made by modifying the “rsm_workdiff.cfg” file.  The contents of the configuration file are self explanatory.  This file turns on and off metrics within the metrics report and makes select metrics positive or negative in their impact to the baseline.  These settings only affect the metrics for files that have been removed from the current baseline.

Modified versus Differential Files

Files that exist in both baselines can be either “Mod” or “Dif”.  “Mod” stands for size modified and “Dif” stands for internal code differentials.  These modes are selected when processing a baseline for metrics differentials.  Therefore a file that is equal in both baselines depends on the baseline analysis mode.  These modes will be described in detail in the following paragraphs and are the focus of this white paper. 

Baseline Size Metrics

Resource Standard Metrics Version 3.0 implemented baseline differentials based upon a size metric analysis.  This technique analyzes the LOC metrics for a file and compares the LOC metrics between the historical baseline and current baseline.  This technique is suitable when a baseline engineer is interested in the size change between two baselines.  The following metrics are defined as they are implemented in RSM.

LOC

A line of code is any line that contains source code.  This code is not a comment or white space.  Its possible that a physical line can have both source code and a comment.  In this case the physical line would logically have both a line of code and a comment line.  LOC can account for many lines that are just for format and not for the intrinsic nature of the program.  This issue is addressed with the effective lines of code metrics.

eLOC

An effective line of code (eLOC) was innovated by M Squared Technologies.  This metric best represents the true magnitude of the quantity of work performed when implementing a software program.  An effective line of code is any source line which is not a standalone brace or parenthesis.  The following example illustrates this concept.

 

       Source code line              LOC   eLOC  lLOC  Comment  Blank

       --------------------------------------------------------------

       if (x<10)   // test  range     x      x            x

       {                              x

         // update y coordinate                           x

                                                                  x

          y = x + 1;                  x      x     x

       }                              x

       --------------------------------------------------------------

 

This example illustrates the possible over estimation of the quantity of work performed if the LOC metrics is used and a possible underestimation if the lLOC metric is used.  eLOC effectively eliminates the effect of style and includes the work required to create symbols, names and classes that may not be captured by a code statement.  

lLOC

lLOC or logical lines of code which is defined as code statements that end in a semicolon, where the “for” loop is one logical line of code.

Size Differential

When a file has different LOC, eLOC, lLOC, Comments or Blank line metrics it is considered “Mod” or size modified from the historical baseline.  This type of differentials will indicate how a baseline has grown without regard to changes to the code.  “Mod” is probably not the best indicator for this metric, but it is retained to serve backward compatibility with all other versions of RSM.

Equal Files (Size Metric Analysis)

A file is considered equal (Equ) under the size metric analysis when all of the file LOC metrics are equal.  This mode does not consider the changes to an individual line of code within the file, just the number of lines within the file.  If the file is larger or smaller then it is size “Mod” or modified and If it is the same size then it is “Equ” or equal.

Baseline Change Metrics

Resource Standard Metrics, version 6.40+ enables a code characterization and code differential analysis mode to determine the code differential metrics between baselines.  This differential provides the magnitude of code changes and is activated when using the –wd RSM option.

Equal Files (Code Differential Analysis)

An equal file under the code differential analysis mode indicates that every line in the historical file matches every line in the current baseline file. 

Code Differentials

Lines that exist in the historical baseline but not in the current baseline file are considered a differential.  This differential can be added or ignored to the differential file metric with a setting in the RSM configuration file.  Lines that exist in the current baseline but not in the historical baseline file are considered a differential metric.  Lines that are the same between the files are considered equal in the differential metric.

New and Removed Files

These files contribute to the baseline metrics in the same manner as in the baseline size metrics analysis.  Removed files can be either a negative or positive impact depending on the RSM configuration file setting.  New files will always contribute positively.

 

Source Code Differential Analysis

The following section describes the technology and theory of RSM code differential analysis.

Many techniques for performing code differentials were considered.  The following requirements drove the design for the RSM code differential algorithm.

Code Differentials

 

RSM creates work files for the baseline such that a baseline can be characterized as of a specific date where metrics can be derived at any time in the future.  Once the characterization is complete the original source file is no longer needed.  The differential algorithm must characterize a file to meet this scenario.

 

A characterized source code file must be smaller than the original source file.  This conserves hardware resources.

 

The two step process of characterization and differentiation spreads the processing load across two points in time thus mitigating the time for extremely large baselines.

 

The determination of code change is very subjective.  The Gnu diff algorithm is a widely used code differential algorithm.  It matches lines as they exist in the file.  If a line in the historical baseline matches a line in the current baseline file there is no differential.  If a line is not equal, and no match in the historical file is found the line is flagged as a differential.  A match in source code between the historical file and current file the files are realigned and are equal.  New lines in the current file are flagged as a diff with space inserted into the historical file.

 

This behavior can be readily seen with the graphical differential tool called WinMerge. (http://sourceforge.net/projects/winmerge).  The following figure shows our baseline files ‘diffed’ using WinMerge by the Gnu diff algorithm.  It is important to note the changes that were made between the two files and to assess the accuracy of the Gnu diff algorithm.

 

Changes to the example baseline files:

1.       The function Ball::get_number was removed from the historical file.

2.       The function Ball::some_newfunc was added to the file

 

The Gnu differential algorithm did not correctly identify the removal of the Ball::get_number function.  It did not match the function Ball::Reset correctly as equal lines in a block match thus it did not identify the addition of the new function.

 

Code differential metrics must identify lines that exist in the historical baseline but not in the current baseline.  The algorithm must match up equal lines when they exist and identify lines that exist in the present baseline and not in the historical baseline.  A line differential is any line of code in these baselines that meet these criteria.

 

The RSM differential algorithm must perform differential analysis to these criteria.  The algorithm must be capable of ignoring white space difference between two source lines.  The algorithm must be capable of performing line differentials independent of blank line differences between each file.

 

The differential algorithm must integrate with RSM so that LOC, eLOC, LLOC, Comment and Blank differences can be identified.

 

M Squared Technologies developed its own proprietary source line characterization algorithm and differential algorithm to meet all these requirements.  M Squared technologies claims copyright on this body of work.

 

Figure 1: Gnu Diff Algorithm as implemented in WinMerge

RSM Differential Algorithm

The RSM differential algorithm characterizes a source code file into a separate differential file.  These differential files are stored in a directory co-located with the resulting RSM work file.  The RSM work file is composed of all the file names and size metrics for the differential baseline files processed.

Differential Files

RSM processes a file, parses a line for tokens and metrics, and then creates a unique signature that reflects each character and its position in the line.  The line is identified as a line of code (L), an non-effective line of code (N), a logical line of code (G), a comment line (C) or blank line (B).  The L, N or G indicator takes precedence over comment C indicator.  If a line of code also has a comment, is it identified as a line of code?  Each line is written to the file by the line number from the original source code file, the indicator of the line type and the signature of the line.

Differentials of Characterized Files

Each baseline set of files is captured in a RSM work file.  RSM uses two work files, each of which contains the list of files that were characterized for metrics.  When RSM extracts two work files and code differential metrics mode is selected, a differential is performed between each characterized source file. 

 

RSM matches the type and signature for each line.  When a mismatch is identified, a block matching algorithm looks forward in the characterized source files.  If a block is identified to match the differentials are logged and processing continues at the matched block of code.

 

The RSM configuration file includes options that control the operation of both the characterization process and the differential process.  RSM provides a method to analyze how the differential algorithm works with your source files.  These options will be covered in the following case studies.

 

The following figure illustrates how the RSM differential algorithm processes the example differential file.  Compare these results with the WinMerge results.

 

One can see the correct identification of the function removal from the historical baseline, highlighted in red.  Equal lines are shown in green and added lines to the current or present baseline are shown in blue.  This illustration was created by using the RSM report (-ws) to show the code differentials between the baseline files.

 

The –ws report is shown below with the RSM configuration file set not to show equal lines in this report.  RSM characterizes the source code and does not retain the original source line, therefore a diff showing actual source code is not available.  This report displays the effected line number in the original source file, a minus sign for historical baseline removal, a plus sign for a present baseline addition and the differential indicator.  This information is used to generate the metrics change reports.

 
  File: ball.cpp
  Historical                  Present
  ------------------------------------
  Line Number    Diff  Type   Line Number
           10     -     L                
           11     -     L                
           12     -     N                
           13     -     C                
           14     -     G                
           15     -     N                
           17     -     C                
                  +     L     18         
                  +     L     19         
                  +     N     20         
                  +     C     23         
                  +     G     24         
                  +     N     25         
                  +     C     27         
                  +     L     28         
                  +     G     34         
           32     -     G

 

 

The following detailed view with the relative source code line illustrates the improvements of the RSM differential technology over the Gnu diff algorithm.  This figure was created manually by aligning the source code to the –ws report for the associated file between the two baselines.


Detailed View Using the RSM Differential Algorithm

 

Ln
#

Historical File – ball.cpp

Diff

Present File – ball.cpp

Ln
#

Source

Type

Code

 

Code

Type

Source

1

  //-------------------------------------------------

C

186.72770105182500

Equ

186.72770105182500

C

  //-------------------------------------------------

1

2

  void

L

157.32142857142800

Equ

157.32142857142800

L

  void

2

3

  Ball::set_number(int n)

L

258.69119441475900

Equ

258.69119441475900

L

  Ball::set_number(int n)

3

4

  {

N

89.00000000000000

Equ

89.00000000000000

N

  {

4

5

    // set the number of the ball

C

228.91944213409300

Equ

228.91944213409300

C

    // set the number of the ball

5

6

    number = n;

G

180.85475635475600

Equ

180.85475635475600

G

    number = n;

6

7

  }

N

89.66666666666660

Equ

89.66666666666660

N

  }

7

8

 

B

0.00000000000000

Equ

0.00000000000000

B

 

8

9

  //-------------------------------------------------

C

186.72770105182500

Equ

186.72770105182500

C

  //-------------------------------------------------

9

10

  int

L

133.69999999999900

Rem

 

 

 

 

11

  Ball::get_number(void) const

L

276.95656062359600

Rem

 

 

 

 

12

  {

N

89.00000000000000

Rem

 

 

 

 

13

    // return the number of the ball

C

242.90830374056700

Rem

 

 

 

 

14

    return(number);

G

215.68659644878600

Rem

 

 

 

 

15

  }

N

89.66666666666660

Rem

 

 

 

 

16

 

B

0.00000000000000

Rem

 

 

 

 

17

  //-------------------------------------------------

C

186.72770105182500

Rem

 

 

 

 

18

  void

L

152.75000000000000

Equ

152.75000000000000

L

  void

10

19

  Ball::reset(void)

L

231.49790040111200

Equ

231.49790040111200

L

  Ball::reset(void)

11

20

  {

N

89.00000000000000

Equ

89.00000000000000

N

  {

12

21

    // return the picked state of the ball to false

C

274.16039735386100

Equ

274.16039735386100

C

    // return the picked state of the ball to false

13

22

    picked = false;

G

201.74416983944800

Equ

201.74416983944800

G

    picked = false;

14

23

  }

N

89.66666666666660

Equ

89.66666666666660

N

  }

15

24

 

B

0.00000000000000

Equ

0.00000000000000

B

 

16

25

  //-------------------------------------------------

C

186.72770105182500

Equ

186.72770105182500

C

  //-------------------------------------------------

17

 

 

 

 

Mod

152.75000000000000

L

  void

18

 

 

 

 

Mod

266.21080012347100

L

  Ball::some_newfunc(void)

19

 

 

 

 

Mod

89.00000000000000

N

  {

20

 

 

 

 

Mod

0.00000000000000

B

 

21

26

  bool

L

148.61666666666600

Equ

148.61666666666600

L

  bool

22

 

 

 

 

Mod

274.16039735386100

C

    // return the picked state of the ball to false

23

 

 

 

 

Mod

201.74416983944800

G

    picked = false;

24

 

 

 

 

Mod

89.66666666666660

N

  }

25

 

 

 

 

Mod

0.00000000000000

B

 

26

 

 

 

 

Mod

186.72770105182500

C

  //-------------------------------------------------

27

 

 

 

 

Mod

148.61666666666600

L

  bool

28

27

  Ball::pick(void)

L

223.87495062127400

Equ

223.87495062127400

L

  Ball::pick(void)

29

28

  {

N

89.00000000000000

Equ

89.00000000000000

N

  {

30

29

    // If the ball is not picked set pick to true

C

255.34637634061500

Equ

255.34637634061500

C

    // If the ball is not picked set pick to true

31

30

    // and return true else return false as the ball

C

274.00127942737700

Equ

274.00127942737700

C

    // and return true else return false as the ball

32

31

    // could not be picked.

C

211.84400169245900

Equ

211.84400169245900

C

    // could not be picked.

33

 

 

 

 

Mod

253.48139957187600

G

    bool pick_state = (bool)FALSE;

34

32

    bool pick_state = false;

G

243.10080323466900

Rem

 

 

 

 

33

  

B

58.66666666666660

Equ

58.66666666666660

B

  

35

34

    if (!picked)

L

171.57443806193800

Equ

171.57443806193800

L

    if (!picked)

36

35

    {

N

91.26666666666660

Equ

91.26666666666660

N

    {

37

36

      picked = true;

G

184.41383799379100

Equ

184.41383799379100

G

      picked = true;

38

37

      pick_state = true;

G

207.69402193897200

Equ

207.69402193897200

G

      pick_state = true;

39

38

    }

N

91.66666666666660

Equ

91.66666666666660

N

    }

40

39

 

B

0.00000000000000

Equ

0.00000000000000

B

 

41

40

    return (pick_state);    

G

240.03871191518300

Equ

240.03871191518300

G

    return (pick_state);    

42

41

  }

N

89.66666666666660

Equ

89.66666666666660

N

  }

43

 

 

The detailed view of ball.cpp illustrates the signature code created for each line of code.  The RSM differential file contains each lines number, type indicator and signature code.  Source code lines are not retained to conserver space and time when processing extremely large baselines.


Case Study

The following case study will use the two versions of ball.cpp to create the illusion of a file changed over time in a baseline.  The baseline will be analyzed for a size change differential and a source code change differential.  Example RSM reports will be created to illustrate the composition of various RSM options and switches.

Concept of Operation

The baseline differential process is a two step process.  This process provides the capability to script RSM to capture and characterize a baseline at periodic intervals while processing metric reports at other reporting times.  RSM creates files called work files to capture the baseline differential information.

Work Files

Work files are create using the –wc.  This option assumes that RSM has been given a set of files to process and that this set represents a baseline.  There are three ways to inform RSM of files to process.  RSM cannot process relative paths that require shell interpretation, for example “..\project\src”.  If a file name contains a space, then the file name must be delimited in quotation marks.  The RSM manual details these operational modes.  This use case will assume a recursive descent of a project directory.

 

By default the –wc option create a date stamped file like “rm031420.04” and a constant named file called workfile.dat.  The workfile.dat file is used with the –wW option when you want to characterize and report in a single option.  Usually the end user will have a specific name for a work file.  In this case the –w “File dat yourworkfile.dat” option is used.  The string following the –w tells RSM to use a custom file ‘File’, the file is a work file ‘dat’ and the name for the file ‘yourworkfile.dat’.

 

A pseudo historical baseline will be created by the following Windows shell commands.

 

Ø       md “c:\project 1”

Ø       md “c:\project 1\src”

Ø       copy old_ball.cpp “c:\project 1\src\ball.cpp”

 

The baseline tree is now c:\project 1\src.  A dir command reveals the following information.

 

C:\project 1\src>dir

 

 Directory of C:\project 1\src

 

03/20/2013  03:02 PM    <DIR>          .

03/20/2013  03:02 PM    <DIR>          ..

03/01/2013  09:13 AM               827 ball.cpp

               1 File(s)            827 bytes

               2 Dir(s)     873,005,056 bytes free

 

The baseline is now processed to create a work file.  Choose a specific location for storing your metrics files.  In this example the files are store in the directory called “c:\metrics”.

 

Ø       md c:\metrics

 

This example will use the default method of creating a work file to illustrate the file date stamped file.  This method is useful when scripting RSM to capture baseline metrics at a specific period of time.  You can use a free tool called M2 Launcher to run your script file at a specific time or day of the week.  For this case study it is assumed the user installed RSM to the c:\rsm directory.

 

Work File Locations

 

By default, work files are created in the current directory where the RSM command is originated.  The work file location can be specified in the RSM configuration file.  Work files will then be stored to that location.  If you specify a user defined work file, then the work files will be stored at this location.

Baseline Size Change Work Files

 

The following command runs RSM, creates a size change work file while recursively preprocessing all cpp files in the specified root of the baseline “c:\project 1”.  Since the directory has a space, we need to use a quote delimited string.

 

Ø       c:

Ø       cd metrics

Ø       c:\rsm\rsm.exe –wc –r cpp “c:\project 1”

 

             Resource Standard Metrics (TM) for C, C++ and Java

                   Version 6.40 - mSquaredTechnologies.com

 

  License Type: Site Multi-Network License - 10000 Users

  Licensed To : M Squared Technologies

  License No. : ST1000              License Date: Fri Jun 25 06:09:01 2013

  Build Date  : Mar 12 2013     Maintenance Date: Tue Jul 06 14:05:00 2013

  (C) 2013 M Squared Technologies (TM)  Run Date: Sat Mar 20 15:30:24 2013

  ________________________________________________________________________

 

  RSM Command Line  : -wc -r cpp c:\project 1

  Configuration File: c:\rsm\rsm.cfg

 

 

  Creating Work Analysis File: rm032020.04

  Building File List

  ......

                     ~~ Project Analysis For 1 Files ~~

  ------------------------------------------------------------------------

 

                        ~~ Total Language Profile ~~

 

  Language   LOC %    eLOC %    lLOC %    Comments %   Blanks %    Lines %

  *.c*       100.0     100.0     100.0         100.0      100.0      100.0

 

  ------------------------------------------------------------------------

 

                           ~~ Language Summary ~~

 

  C++ Source Files *.c*

  LOC 26       eLOC 16       lLOC 7        Comment 10       Lines       42

 

  Total Metrics 1 Files

                         ~~ Total Project Summary ~~

 

  LOC 26       eLOC 16       lLOC 7        Comment 10       Lines       42

 

  ------------------------------------------------------------------------

 

                             ~~ File Summary ~~

 

  C Source Files *.c ....:          0  C/C++ Include Files *.h:          0

  C++ Source Files *.c* .:          1  C++ Include Files *.h* :          0

  Other File Count ......:          0  Java Source File *.jav*:          0

  Total File Count ......:          1

 

 

  Completed Work Analysis File: rm032020.04

 

  Copied rm032020.04 to workfile.dat

  for last work differentials

 

  ________________________________________________________________________

 

A dir command in the c:\metrics directory yields the work files created by RSM.

 

Ø       C:\metrics>dir

 

 Directory of C:\metrics

 

03/20/2013  03:23 PM    <DIR>          .

03/20/2013  03:23 PM    <DIR>          ..

03/20/2013  03:30 PM               202 rm032020.04

03/20/2013  03:30 PM               202 workfile.dat

               2 File(s)            404 bytes

               2 Dir(s)     872,316,928 bytes free

 

We now illustrate the use of the user defined work file command option.

 

Ø       c:\rsm\rsm.exe –wc –w “File dat p1_size.dat” –r cpp “c:\project 1”

 

             Resource Standard Metrics (TM) for C, C++ and Java

                   Version 6.40 - mSquaredTechnologies.com

 

  License Type: Site Multi-Network License - 10000 Users

  Licensed To : M Squared Technologies

  License No. : ST1000              License Date: Fri Jun 25 06:09:01 1999

  Build Date  : Mar 12 2013     Maintenance Date: Tue Jul 06 14:05:00 2013

  (C) 2013 M Squared Technologies (TM)  Run Date: Sat Mar 20 15:38:31 2013

  ________________________________________________________________________

 

  RSM Command Line  : -wc -w File -r cpp c:\project 1

  Configuration File: c:\rsm\rsm.cfg

 

 

  Creating Work Analysis File: p1_size.dat

  Building File List

  ......

                     ~~ Project Analysis For 1 Files ~~

  ------------------------------------------------------------------------

 

                        ~~ Total Language Profile ~~

 

  Language   LOC %    eLOC %    lLOC %    Comments %   Blanks %    Lines %

  *.c*       100.0     100.0     100.0         100.0      100.0      100.0

 

  ------------------------------------------------------------------------

 

                           ~~ Language Summary ~~

 

  C++ Source Files *.c*

  LOC 26       eLOC 16       lLOC 7        Comment 10       Lines       42

 

  Total Metrics 1 Files

                         ~~ Total Project Summary ~~

 

  LOC 26       eLOC 16       lLOC 7        Comment 10       Lines       42

 

  ------------------------------------------------------------------------

 

                             ~~ File Summary ~~

 

  C Source Files *.c ....:          0  C/C++ Include Files *.h:          0

  C++ Source Files *.c* .:          1  C++ Include Files *.h* :          0

  Other File Count ......:          0  Java Source File *.jav*:          0

  Total File Count ......:          1

 

 

  Completed Work Analysis File: p1_size.dat

 

  Copied p1_size.dat to .\workfile.dat

  for last work differentials

 

  ________________________________________________________________________

 

A dir command now presents the user defined work file p1_size_diff.dat,

 

Ø       C:\metrics>dir

 

 

C:\metrics>dir

 

Directory of C:\metrics

 

03/20/2013  03:23 PM    <DIR>          .

03/20/2013  03:23 PM    <DIR>          ..

03/20/2013  03:30 PM               202 rm032020.04

03/20/2013  03:38 PM               202 workfile.dat

03/20/2013  03:38 PM               202 p1_size.dat

               3 File(s)            606 bytes

Baseline Source Change Work Files

Version 6.40 of RSM adds the –wd option which creates differential characterization files in addition to the standard work file.  This option creates a directory named after the work file and in the same location as the work file.  This directory contains differential files that are named after the path and name of the source file. 

 

Ø       c:\rsm\rsm.exe –wc –wd –w “File dat p1_diff.dat” –r cpp “c:\project 1”

The dir command yields the following contents of the metrics directory.

 

Ø       C:\metrics>dir

 

 Directory of C:\metrics

 

03/20/2013  03:23 PM    <DIR>          .

03/20/2013  03:23 PM    <DIR>          ..

03/20/2013  03:30 PM               202 rm032020.04

03/20/2013  06:16 PM               202 workfile.dat

03/20/2013  06:16 PM               244 p1_diff.dat

03/20/2013  06:16 PM    <DIR>          p1_diff.dat.dif

03/20/2013  06:16 PM               202 p1_size.dat

               4 File(s)            850 bytes

               3 Dir(s)     871,989,248 bytes free

 

The directory contents of the “p1_diff.dat.dif” directory are:

 

Ø       C:\metrics\p1_diff.dat.dif>dir

 

 Directory of C:\metrics\p1_diff.dat.dif

 

03/20/2013  06:16 PM    <DIR>          .

03/20/2013  06:16 PM    <DIR>          ..

03/20/2013  06:16 PM               468 project_1_src_ball_cpp.dif

               1 File(s)            468 bytes

               2 Dir(s)     871,989,248 bytes free

 

During normal development, changes will be made to the baseline files over time.  This example will emulate changes by copying an updated version of the ball.cpp file to the baseline source directory.  The previous process is repeated to process baseline changes from the work file p1_size.dat to p2_size.dat and p1_diff.dat to p2_diff.dat.

 

Ø       c:\rsm\rsm.exe –wc –w “File dat p2_size.dat” –r cpp “c:\project 1”

Ø       c:\rsm\rsm.exe –wc –wd –w “File dat p2_diff.dat” –r cpp “c:\project 1”

Ø       C:\metrics>dir

 

 Directory of C:\metrics

 

03/20/2013  03:23 PM    <DIR>          .

03/20/2013  03:23 PM    <DIR>          ..

03/20/2013  03:30 PM               202 rm032020.04

03/20/2013  07:00 PM               255 workfile.dat

03/20/2013  06:16 PM               244 p1_diff.dat

03/20/2013  06:16 PM    <DIR>          p1_diff.dat.dif

03/20/2013  06:16 PM               202 p1_size.dat

03/20/2013  07:00 PM               202 p2_size.dat

03/20/2013  07:00 PM               255 p2_diff.dat

03/20/2013  07:00 PM    <DIR>          p2_diff.dat.dif

               6 File(s)          1,360 bytes

               4 Dir(s)     871,694,336 bytes free

Extracting Work Files – Baseline Differentials

The second step in the baseline differential metrics process is to extract the historical baseline work file and the current baseline file.  The extraction performs the differential between the two baselines.  The –wx option is followed by the historical work file and the present or current baseline work file.

Work File Extraction – Size Metrics Differential

 

Ø       C:\rsm\rsm.exe –wx “c:\metrics\p1_size.dat” “c:\metrics\p2_size.dat”

 

             Resource Standard Metrics (TM) for C, C++ and Java

                   Version 6.40 - mSquaredTechnologies.com

 

  License Type: Site Multi-Network License - 10000 Users

  Licensed To : M Squared Technologies

  License No. : ST1000              License Date: Fri Jun 25 06:09:01 2013

  Build Date  : Mar 12 2013     Maintenance Date: Tue Jul 06 14:05:00 2013

  (C) 2013 M Squared Technologies (TM)  Run Date: Sat Mar 20 19:13:57 2013

  ________________________________________________________________________

 

  RSM Command Line  : -wx c:\metrics\p1_size.dat c:\metrics\p2_size.dat

  Configuration File: c:\rsm\rsm.cfg

 

                         ~~ Metrics Differential ~~

                             Based On Code Size

                               No Sort Method

 

  Differential Configuration File: c:\rsm\rsm_workdiff.cfg

 

  Ancestor File: c:\metrics\p1_size.dat           Sat Mar 20 18:16:15 2013

  Latest File  : c:\metrics\p2_size.dat           Sat Mar 20 19:00:04 2013

 

  Work Time Differential Between Files:

  Time Delta:         2629 Seconds

                0:00:43:49 Days:Hrs:Min:Sec

 

 

  State    LOC    eLOC    lLOC Comment  Blanks   Lines    eLOC% File

  ------------------------------------------------------------------------

  Mod        1       1       0       0       1       2     6.25 c:\project 1\src\ball.cpp

  ------------------------------------------------------------------------

  Tot        1       1       0       0       1       2

 

  Source Metrics Differential Profile

  State    LOC    eLOC    lLOC Comment  Blanks   Lines Av.eLOC%   Files

  ------------------------------------------------------------------------

  New        0       0       0       0       0       0     0.00       0

  Rem        0       0       0       0       0       0     0.00       0

  Mod        1       1       0       0       1       2     6.25       1

  Equ        0       0       0       0       0       0     0.00       0

 

  Total Metrics Historical Source Files

  ------------------------------------

  Files          1

  LOC           26

  eLOC          16

  lLOC           7

  Comments      10

  Blanks         6

  Lines         42

 

  Total Metrics Present Source Files

  ------------------------------------

  Files          1

  LOC           27

  eLOC          17

  lLOC           7

  Comments      10

  Blanks         7

  Lines         44

 

  Total Metrics Differential From Historic Basis in Percent %

  ------------------------------------

  Files       0.00 %

  LOC         3.85 %

  eLOC        6.25 %

  lLOC        0.00 %

  Comments    0.00 %

  Blanks     16.67 %

  Lines       4.76 %

 

 

  ________________________________________________________________________

 

Work File Extraction – Code Change Metrics Differential

 

Adding the –wd option prior to the –wx option enables the source code change metrics differential.  The work files must be generated with the –wd option to provide the necessary characterized source files.  The following report documents the code that was added to the baseline.  If you desire the code removal metrics from the historical baseline to be added to the differential metric, set the configuration setting in the RSM configuration file.  The –w “File cfg c:\metrics\mycfg.cfg” can be used to load a user defined RSM configuration file.

 

Ø       C:\rsm\rsm.exe –wd –wx “c:\metrics\p1_diff.dat” “c:\metrics\p2_diff.dat”

 

             Resource Standard Metrics (TM) for C, C++ and Java

                   Version 6.40 - mSquaredTechnologies.com

 

  License Type: Site Multi-Network License - 10000 Users

  Licensed To : M Squared Technologies

  License No. : ST1000              License Date: Fri Jun 25 06:09:01 2013

  Build Date  : Mar 12 2013     Maintenance Date: Tue Jul 06 14:05:00 2013

  (C) 2013 M Squared Technologies (TM)  Run Date: Sat Mar 20 19:45:46 2013

  ________________________________________________________________________

 

  RSM Command Line  : -wd -wx c:\metrics\p1_diff.dat c:\metrics\p2_diff.dat

  Configuration File: c:\rsm\rsm.cfg

 

                         ~~ Metrics Differential ~~

                          Based On Code Difference

                               No Sort Method

 

  Differential Configuration File: c:\rsm\rsm_workdiff.cfg

  Not showing equal lines between historical and present baselines

 

  Ancestor File: c:\metrics\p1_diff.dat           Sat Mar 20 18:16:02 2013

  Latest File  : c:\metrics\p2_diff.dat           Sat Mar 20 19:00:30 2013

 

  Work Time Differential Between Files:

  Time Delta:         2668 Seconds

                0:00:44:28 Days:Hrs:Min:Sec

 

 

  State    LOC    eLOC    lLOC Comment   Lines    eLOC% File

  ------------------------------------------------------------------------

  Dif        7       5       2       2       9    31.25 c:\project 1\src\ball.cpp

  ------------------------------------------------------------------------

  Tot        7       5       2       2       9

 

  Source Metrics Differential Profile

  State    LOC    eLOC    lLOC Comment   Lines Av.eLOC%   Files

  ------------------------------------------------------------------------

  New        0       0       0       0       0     0.00       0

  Rem        0       0       0       0       0     0.00       0

  Dif        7       5       2       2       9    31.25       1

  Equ        0       0       0       0       0     0.00       0

 

  Total Metrics Historical Source Files

  ------------------------------------

  Files          1

  LOC           26

  eLOC          16

  lLOC           7

  Comments      10

  Lines         42

 

  Total Metrics Present Source Files

  ------------------------------------

  Files          1

  LOC           27

  eLOC          17

  lLOC           7

  Comments      10

  Lines         44

 

  Total Metrics Differential From Historic Basis in Percent %

  ------------------------------------

  Files       0.00 %

  LOC         3.85 %

  eLOC        6.25 %

  lLOC        0.00 %

  Comments    0.00 %

  Lines       4.76 %

 

 

  ________________________________________________________________________

Comparing the Size versus Code Change Differentials

Each type of report is clearly identified in the header of the report.  The code change metrics differential report shows that five eLOC were effected where the size metrics differential report indicates that the baseline grew in size by just one eLOC. 

 

Size change reports display file differentials as “Mod” where source code change reports show the file differentials as “Dif”.

 

            Size Report % eLOC change      = 1 eLOC size differential / 16 eLOC of the historical file

                                                            =  6.25%

 

            Change Report % eLOC change  = 5 eLOC change differential / 16 eLOC historical file

                                                            = 31.25%

 

In each case, the percent change is calculated by the effected eLOC divided by the total eLOC for the historical file.  A good rule of thumb is that if the file has been change by 10%, a code inspection should be re-performed.

Work File RSM Configuration Settings

The following settings have been extracted from the RSM configuration file.  For each option a comment precedes the setting which details its purpose.

 

####################################################################

# RSM Configuration for Baseline Metrics Differentials #############

 

# The following path location specifies where work files

# are to be created.  The path must be a location with write

# permissions.  RSM will create work files in the current

# directory if no path is specified.

Work file location path                 :

 

# When processing code line differentials, ignore

# blanks and tab changes in the code.

Ignore code differential white space    : No

 

# When processing code line differentials, ignore

# blanks line changes the the code.

Ignore code differential blank lines    : Yes

 

# When comparing code differentials, the block size

# determines a matching code block sequence.  A size of

# 2 is suggested.  A block must be greater than 2 equal

# lines to be determined as a new starting point for

# differentials.

Block minimum size for code differential: 2

Block maximum size for code differential: 10

 

# Code differential metrics determine lines that are

# different in the current baseline compared to the

# historical baseline.  This metric can include

# lines that are removed from the current baseline.

Add removed history lines as modified   : No

 

# When showing differential details for each file

# using the switch -ws

Show equal lines                        : No

Show lines removed from history         : Yes

Show lines added (mod) to present       : Yes

 

# The following parameter, when set to Yes will cause

# the files stored into work files to be relative to the

# location where RSM began processing, unless overruled

# by specifying an actual path for recursive decent.

Relative Work Files                     : Yes

 

Other Helpful RSM Configuration Settings for Baseline Processing

# RSM will not process files in local directories when this

# flag is set.  This will prevent recursive descent into

# these directories.

Do not process these local directories  : No

Local directory names not processed     : sccs,cvs,rcs

 

# Windows 9x and DOS are case insensitive file systems.

# Files like foo.c and foo.C are seen as C source files.

# If *.C files are C++ files under these operating systems

# or you are operating on NT or UNIX set this option to

# case sensitivity equal to Yes.

Source file names are case sensitive    : No

 

# Show a progress indicator when processing recursive files and

# code differentials.

Show progress indicator                 : Yes

 

RSM Report Options

The following report options are documented in the RSM manual but are highlighted here for completeness.  The following are the entire set of the –w options.  The RSM command syntax can be displayed in the command shell using the –hs help option.

 

-w Work files for metrics differentials between baselines

    -wb  Show the basis for calculating work productivity

    -wc  Create files, workfile.dat and rm112220.00 date format

    -wD  Deterministic mode for -wc workfile creation

    -wd  Differentials for code lines (Time and Space intensive)

    -we  Do not process equal files between the old and new baselines

    -w  "File dat myworkfile.dat"  User specified work file

    -w  "File cfg mydiff.cfg"  User defined differential configuration

    -wg  Show the glossary for the report

    -wm  Do not process modified files between old and new baselines

    -wn  Do not process new files between the old and new baselines

    -wp  Show Work Productivity Estimates

    -wr  Do not process removed files between the old and new baselines

    -ws  Show Code Differential Details for each file, line no & Type

    -wv  Verbose mode for metrics differential files

    -wW  Work differential between last -wc run (workfile.dat)

    -wx  Extract work differential between two work files

Report Output Format

Metrics differential reports can be output in text, HTML and CSV format.  The output modes and operations are fully described in the users manual.  No format option creates text output.  The options –H and –A create HTML and CSV output respectively.  For these modes you should redirect your output to the appropriate file name and extension.  Alternatively you can use the –O option for generating an output file.

 


Example HTML output

Command: C:\rsm\rsm.exe –H –O c:\metrics\report.htm –wd –wx c:\metrics\p1_diff.dat

 c:\metrics\p2_diff.dat

 

Figure 2: MS Internet Explorer Displaying HTML Report

Example CSV Output for Spreadsheet Import

Command: C:\rsm\rsm.exe –A –O c:\metrics\report.csv –wd –wx c:\metrics\p1_diff.dat

c:\metrics\p2_diff.dat

 

This mode is useful for import into spreadsheets via CSV files using named cell locations.

 

Figure 3: MS Excel Importing a CSV Report


Work File Glossary

The –wg option adds a glossary to each report.

 

Command: C:\rsm\rsm.exe –wg –wd –wx c:\metrics\p1_diff.dat c:\metrics\p2_diff.dat

 

Metrics Differential Glossary

 ------------------------------------

 

 Note: Lines in the historical baseline which are not present in the

 current baseline are considered removed lines.  The RSM configuration

 file is set to not include these lines in the Dif metrics shown on

 this report.

 

 New - Indicates that a file exists in the current work file and not

       in the old work file.  These are new files in the baseline.

 

 Rem - Indicates that a file exists in the old work file and not

       in the current work file.  These are files that have been removed

       from the baseline.

 

 Equ - Indicates that the compared files are the same size and each

       line is exactly the same.

 

 Dif - Indicates that the compared files differ by a code

       differential alogrithm.  Reference the RSM - Code Differential

       White Paper in the product documentation for further reference.

 

 LOC       - Line of Source Code

 eLOC      - Effective Lines of Source Code (LOC - NonEffective LOC)

 lLOC      - Logical Lines of Source Code (Lines ending in ;)

 Comments  - Lines that have comments

 Lines     - Total Physical Lines

Work Productivity Estimates

RSM uses the time between the work files as an indicator of labor time.  The productivity settings from the RSM configuration file are displayed below.

 

# User defined productivity values for determining works

# rates for baseline metric differentials.

Work Seconds per Hour                   : 3600

Work Hours per Shift                    : 8

Work Shifts per Day                     : 1

Work Days per Week                      : 5

Work Hours per Man Day                  : 8

Work Hours per Man Week                 : 40

Work Hours per Man Month                : 160

Work Hours per Man Year                 : 1960

 

The following report illustrates the –wb and –wp options.

 

Command: C:\rsm\rsm.exe –wb -wp –wd –wx c:\metrics\p1_diff.dat c:\metrics\p2_diff.dat

 

 

             Resource Standard Metrics (TM) for C, C++ and Java

                   Version 6.40 - mSquaredTechnologies.com

 

  License Type: Site Multi-Network License - 10000 Users

  Licensed To : M Squared Technologies

  License No. : ST1000              License Date: Fri Jun 25 06:09:01 2013

  Build Date  : Mar 12 2013     Maintenance Date: Tue Jul 06 14:05:00 2013

  (C) 2013 M Squared Technologies (TM)  Run Date: Sun Mar 21 21:00:01 2013

  ________________________________________________________________________

 

  RSM Command Line  : -wb -wp -wd -wx c:\metrics\p1_diff.dat c:\metrics\p2

                      _diff.dat

  Configuration File: c:\rsm\rsm.cfg

 

                         ~~ Metrics Differential ~~

                          Based On Code Difference

                               No Sort Method

 

  Differential Configuration File: c:\rsm\rsm_workdiff.cfg

  Not showing equal lines between historical and present baselines

 

  Ancestor File: c:\metrics\p1_diff.dat           Sat Mar 20 18:16:02 2013

  Latest File  : c:\metrics\p2_diff.dat           Sun Mar 21 20:59:52 2013

 

  Work Time Differential Between Files:

  Time Delta:        96230 Seconds

                1:02:43:50 Days:Hrs:Min:Sec

 

  Work Time:          1.11 Calendar Days

                      0.80 Work Days @ 5 work days per week

                      6.36 Man Hours @ 8 Hrs per Shift 1 Shifts per Day

                      0.80 Man Days  @ 8 Hrs per Man Day

                      0.16 Man Weeks @ 40 Hrs per Man Week

                      0.04 Man Month @ 160 Hrs per Man Month

                      0.00 Man Years @ 1960 Hrs per Man Year

 

 

  State    LOC    eLOC    lLOC Comment   Lines    eLOC% File

  ------------------------------------------------------------------------

  Dif        7       5       2       2       9    31.25 c:\project 1\src\ball.cpp

  ------------------------------------------------------------------------

  Tot        7       5       2       2       9

 

  Source Metrics Differential Profile

  State    LOC    eLOC    lLOC Comment   Lines Av.eLOC%   Files

  ------------------------------------------------------------------------

  New        0       0       0       0       0     0.00       0

  Rem        0       0       0       0       0     0.00       0

  Dif        7       5       2       2       9    31.25       1

  Equ        0       0       0       0       0     0.00       0

 

  Productivity Estimate

  State    LOC    eLOC    lLOC Comment   Lines

  ------------------------------------------------------------------------

  Tot        1       1       0       0       1    Per Man Hour

  Tot        9       6       3       3      11    Per Man Day

  Tot       44      31      13      13      57    Per Man Week

  Tot      176     126      50      50     226    Per Man Month

  Tot     2156    1540     616     616    2772    Per Man Year

 

  Total Metrics Historical Source Files

  ------------------------------------

  Files          1

  LOC           26

  eLOC          16

  lLOC           7

  Comments      10

  Lines         42

 

  Total Metrics Present Source Files

  ------------------------------------

  Files          1

  LOC           27

  eLOC          17

  lLOC           7

  Comments      10

  Lines         44

 

  Total Metrics Differential From Historic Basis in Percent %

  ------------------------------------

  Files       0.00 %

  LOC         3.85 %

  eLOC        6.25 %

  lLOC        0.00 %

  Comments    0.00 %

  Lines       4.76 %

 

  Work Time Basis

  ------------------------------------

  Calendar Days           = Delta Time (s) / Seconds per Day

  Work Days               = Calendar Days * (Work Days per Week / 7 Days per Week)

  Man Hours               = Work Days * Work Hours per Shift * Shifts per Day

  Man Days                = Man Hours / Hours per Man Day

  Man Weeks               = Man Hours / Hours per Man Week

  Man Months              = Man Hours / Hours per Man Month

  Man Years               = Man Hours / Hours per Man Years

  Work Seconds per Hour   : 3600

  Work Hours per Shift    : 8

  Work Shifts per Day     : 1

  Work Days per Week      : 5

  Work Hours per Man Day  : 8

  Work Hours per Man Week : 40

  Work Hours per Man Month: 160

  Work Hours per Man Year : 1960

 

  ________________________________________________________________________

Work File Deterministic Mode

This report details the raw information RSM collects for the source code file when using the –wd and –wc options in conjunction with the –wD option.  In this example, the option for not processing blank lines has been activated in the RSM configuration file.  As a result there are no blank lines in the output.

 

Command: c:\rsm\rsm.exe -wd -wD -wc -r cpp "c:\project 1"

 

             Resource Standard Metrics (TM) for C, C++ and Java

                   Version 6.40 - mSquaredTechnologies.com

 

  License Type: Site Multi-Network License - 10000 Users

  Licensed To : M Squared Technologies

  License No. : ST1000              License Date: Fri Jun 25 06:09:01 2013

  Build Date  : Mar 12 2013     Maintenance Date: Tue Jul 06 14:05:00 2013

  (C) 2013 M Squared Technologies (TM)  Run Date: Sat Mar 20 21:12:45 2013

  ________________________________________________________________________

 

  RSM Command Line  : -wd -wD -wc -r cpp c:\project 1

  Configuration File: c:\rsm\rsm.cfg

 

 

  Creating Work Analysis File: rm032020.04

  Building File List

  ......  .

  File: c:\project 1\src\ball.cpp

  Line #  Type Differential Code      Source Code Line

  ------------------------------------------------------------------------

       1 |  C  186.727701051825480  |   //-------------------------------------------------

       2 |  L  157.321428571428580  |   void

       3 |  L  258.691194414759480  |   Ball::set_number(int n)

       4 |  N  89.000000000000000   |   {

       5 |  C  228.919442134093860  |     // set the number of the ball

       6 |  G  180.854756354756380  |     number = n;

       7 |  N  89.666666666666657   |   }

       9 |  C  186.727701051825480  |   //-------------------------------------------------

      10 |  L  152.750000000000000  |   void

      11 |  L  231.497900401112470  |   Ball::reset(void)

      12 |  N  89.000000000000000   |   {

      13 |  C  274.160397353861980  |     // return the picked state of the ball to false

      14 |  G  201.744169839448460  |     picked = false;

      15 |  N  89.666666666666657   |   }

      17 |  C  186.727701051825480  |   //-------------------------------------------------

      18 |  L  152.750000000000000  |   void

      19 |  L  266.210800123471700  |   Ball::some_newfunc(void)

      20 |  N  89.000000000000000   |   {

      22 |  L  148.616666666666650  |   bool

      23 |  C  274.160397353861980  |     // return the picked state of the ball to false

      24 |  G  201.744169839448460  |     picked = false;

      25 |  N  89.666666666666657   |   }

      27 |  C  186.727701051825480  |   //-------------------------------------------------

      28 |  L  148.616666666666650  |   bool

      29 |  L  223.874950621274110  |   Ball::pick(void)

      30 |  N  89.000000000000000   |   {

      31 |  C  255.346376340615850  |     // If the ball is not picked, set pick to true

      32 |  C  274.001279427377650  |     // and return true else return false as the ball

      33 |  C  211.844001692459100  |     // could not be picked.

      34 |  G  253.481399571876300  |     bool pick_state = (bool)FALSE;

      36 |  L  171.574438061938030  |     if (!picked)

      37 |  N  91.266666666666652   |     {

      38 |  G  184.413837993791560  |       picked = true;

      39 |  G  207.694021938972440  |       pick_state = true;

      40 |  N  91.666666666666657   |     }

      42 |  G  240.038711915183110  |     return (pick_state);

      43 |  N  89.666666666666657   |   }

 

 

                     ~~ Project Analysis For 1 Files ~~

  ------------------------------------------------------------------------

 

                        ~~ Total Language Profile ~~

 

  Language   LOC %    eLOC %    lLOC %    Comments %   Blanks %    Lines %

  *.c*       100.0     100.0     100.0         100.0      100.0      100.0

 

  ------------------------------------------------------------------------

 

                           ~~ Language Summary ~~

 

  C++ Source Files *.c*

  LOC 27       eLOC 17       lLOC 7        Comment 10       Lines       44

 

  Total Metrics 1 Files

                         ~~ Total Project Summary ~~

 

  LOC 27       eLOC 17       lLOC 7        Comment 10       Lines       44

 

  ------------------------------------------------------------------------

 

                             ~~ File Summary ~~

 

  C Source Files *.c ....:          0  C/C++ Include Files *.h:          0

  C++ Source Files *.c* .:          1  C++ Include Files *.h* :          0

  Other File Count ......:          0  Java Source File *.jav*:          0

  Total File Count ......:          1

 

 

  Completed Work Analysis File: rm032020.04

 

  Copied rm032020.04 to workfile.dat

  for last work differentials

 

  ________________________________________________________________________

Showing Source File Differences

This report details the differences by line number between the historical baseline and the current baseline.  This report mode is provided so the user can audit the performance of RSM against their source code.  The –ws option provide the differentials for each file.

 

Command: C:\metrics>c:\rsm\rsm.exe -ws -wd -wx c:\metrics\p1_diff.dat c:\metrics\p2_diff.dat

 

             Resource Standard Metrics (TM) for C, C++ and Java

                   Version 6.40 - mSquaredTechnologies.com

 

  License Type: Site Multi-Network License - 10000 Users

  Licensed To : M Squared Technologies

  License No. : ST1000              License Date: Fri Jun 25 06:09:01 2013

  Build Date  : Mar 12 2013     Maintenance Date: Tue Jul 06 14:05:00 2013

  (C) 2013 M Squared Technologies (TM)  Run Date: Sat Mar 20 21:18:17 2013

  ________________________________________________________________________

 

  RSM Command Line  : -ws -wd -wx c:\metrics\p1_diff.dat c:\metrics\p2_dif

                      f.dat

  Configuration File: c:\rsm\rsm.cfg

 

                         ~~ Metrics Differential ~~

                          Based On Code Difference

                               No Sort Method

 

  Differential Configuration File: c:\rsm\rsm_workdiff.cfg

  Not showing equal lines between historical and present baselines

 

  Ancestor File: c:\metrics\p1_diff.dat           Sat Mar 20 18:16:02 2013

  Latest File  : c:\metrics\p2_diff.dat           Sun Mar 21 20:59:52 2013

 

  Work Time Differential Between Files:

  Time Delta:        96230 Seconds

                1:02:43:50 Days:Hrs:Min:Sec

 

 

  File: c:\project 1\src\ball.cpp

  Historical                  Present

  ----------------------------------------

  Line Number    Diff  Type   Line Number

           10     -     L

           11     -     L

           12     -     N

           13     -     C

           14     -     G

           15     -     N

           17     -     C

                  +     L     18

                  +     L     19

                  +     N     20

                  +     C     23

                  +     G     24

                  +     N     25

                  +     C     27

                  +     L     28

                  +     G     34

           32     -     G

  ------------------------------------

 

  State    LOC    eLOC    lLOC Comment   Lines    eLOC% File

  ------------------------------------------------------------------------

  Dif        7       5       2       2       9    31.25 c:\project 1\src\ball.cpp

  ------------------------------------------------------------------------

  Tot        7       5       2       2       9

 

  Source Metrics Differential Profile

  State    LOC    eLOC    lLOC Comment   Lines Av.eLOC%   Files

  ------------------------------------------------------------------------

  New        0       0       0       0       0     0.00       0

  Rem        0       0       0       0       0     0.00       0

  Dif        7       5       2       2       9    31.25       1

  Equ        0       0       0       0       0     0.00       0

 

  Total Metrics Historical Source Files

  ------------------------------------

  Files          1

  LOC           26

  eLOC          16

  lLOC           7

  Comments      10

  Lines         42

 

  Total Metrics Present Source Files

  ------------------------------------

  Files          1

  LOC           27

  eLOC          17

  lLOC           7

  Comments      10

  Lines         44

 

  Total Metrics Differential From Historic Basis in Percent %

  ------------------------------------

  Files       0.00 %

  LOC         3.85 %

  eLOC        6.25 %

  lLOC        0.00 %

  Comments    0.00 %

  Lines       4.76 %

 

  Code Differential Details Glossary

  ------------------------------------

  = Historical file line is equal to the present file line

  - Line not in the present file, removed historical file

  + Line added to the present file

  L Line of Code

  N Non-Effective Line of Code

  G Logical Line of Code

  C Comment Line

  B Blank Line (if blanks are processed)

 

  ________________________________________________________________________


Reference

The content of this document relate to the product Resource Standard Metrics, Version 6.40 and higher.  This product can be downloaded from http://msquaredtechnologies.com.  A free trial version is available that will process up to 10 source files.  Commercial versions are available and will process an unlimited number of files through a recursive baseline.

 

Contact Information - Email Only

 

M Squared Technologies LLC
Winter Park, FL 32789 USA
FAX: 1-877-657-6448 (Voice Messages are not monitored)

Sales:

sales@mSquaredTechnologies.com

Information:

support@mSquaredTechnologies.com

Website:

http://mSquaredTechnologies.com