White Paper
Resource Standard Metrics™
Source Code Baseline Differential Metrics
© 2013 M Squared Technologies™ LLC
Table of Contents
Windows Quick Start Step By Step
Linux/Unix Quick Start Step By Step
Baseline Metrics Differentials
Modified versus Differential Files
Equal Files (Size Metric Analysis)
Equal Files (Code Differential Analysis)
Source Code Differential Analysis
Code Differentials Requirements
Differentials of Characterized Files
Detailed View Using the RSM Differential Algorithm
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
Example CSV Output for Spreadsheet Import
Showing Source File Differences
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
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.
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 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.
“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.
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.
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.
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.
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 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.
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.
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.
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.
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.
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.
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.
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.
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
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.
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.
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.
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.
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.
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 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.
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.
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
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”
Ø 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
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.
Ø 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 %
________________________________________________________________________
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 %
________________________________________________________________________
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.
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
# 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
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
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.
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
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
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
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
________________________________________________________________________
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
________________________________________________________________________
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)
________________________________________________________________________
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.
M Squared
Technologies LLC |
|
Sales: |
|
Information: |
|
Website: |