Resource Standard Metrics
FAQ - Frequently Asked Questions
Last Update: June 22, 1998


Q 1      Can RSM be used on my operating system?
Q 2      How do I compile RSM on my UNIX system?
Q 3      How do I order RSM?
Q 4      How do I upgrade my license?
Q 5      Will RSM process more than one file at a time?
Q 6      How do I get a simple summary listing of LOC for all C
            files in my directory.?
Q 7      How do I get the most information from RSM?
Q 8      How can I tell what RSM thinks of my source code and
            what is a line of code?
Q 9      Can RSM enforce my SDP or software coding standards?
Q 10    How do I customize RSM?
Q 11    How can I use RSM in automated processing like using AWK?
Q 12    Can RSM determine cyclomatic complexity like Cadre Teamwork?
Q 13    Does RSM handle templates?
Q 14    Will RSM find nested function in functions or
            macros defined within functions?
Q 15    Has Pure Software's Purify been run on RSM?
Q 16    Does RSM support long file names?
Q 17    Does RSM support Java?
Q 18    How do I process a list of files?
Q 19    How do I recurse a directory tree to gather metrics?
Q 20    Can rsm tell if my C source code contains any C++
            keywords which would prevent the C code from compiling
            on a C++ compiler.
Q 21    For RSM 3.00+ I get a can't find cygwinb19.dll. What is this?
Q 22    How do I calculate metrics differentials?
Q 23    How can I process two different work files?
Q 24    How do I extract comments from the source code?
Q 25    What happened to the -t terse output mode?
Q 26    As a manager, how can I track what my developers are doing?
Q 27    RSM does not parse embedded functions and notices for
            embedded classes, why?
Q 28    Can RSM provide estimation factors for future software planning?
Q 29    We have to identify files which have changed by more
            than 10% between now and the last code pull.
            Can RSM provide this metric?
Q 30    I need HTML reports for use with my browser.
            Can RSM provide these types of reports?
Q 31    How do I get metrics per class and class implementation?
Q 32    RSM complains about a license file, what does that mean?
Q 33    Can RSM browse source files?
Q 34    Does RSM have a configuration file?
Q 35    RSM_NT does not find wild card files, Why?
Q 36    What is the latest version or RSM?
Q 37    What is eLOC?
Q 38    Is RSM Year 2000 compliant?

Answers to FAQ

Q 1:    Can RSM be used on my operating system?

RSM will work on DOS, Windows 3.1, Windows 95, Windows 98, Windows NT and
most all UNIX operating systems.  The known UNIX operating systems are Sun
Solaris, HPUX, SGI Irix, IBM AIX, LINUX, SCO UNIX and Convex SPP-UX.

How can I be sure it will work for my UNIX system?  If you have the gcc
compiler, or your UNIX system has a POSIX compliant C compiler then the
answer probably is yes.
Evaluate RSM to see if you are interested in it. Register a commercial
license and you will receive the latest DOS/Windows, Windows NT or UNIX
Build.  UNIX licenses come with compilable source code.  For UNIX, simply
compile it on your system.  Money Back Guaranteed for cross compilation.

Q 2:    How do I compile RSM on my UNIX system?

UNIX Network licenses and Site license come with RSM source code for
compiling RSM on your exact UNIX operating system. Compilation assumes your
operating system has a compiler. This is probably the case since you are
writing source code. Typical compilation commands are as follows.
    gcc -O3 -o rsm rsm.c (optimized gcc)
    cc -o rsm rsm.c (standard ANSI C compile)

Q 3:    How do I order RSM?

Credit Card Orders are taken on-line or fill out the order form, FAX it and
a purchase order or mail a check to M Squared Technologies. You will
receive the a software license for RSM, RSM utilities and UNIX licenses
include compilable source code bound under the license agreement.

                           M Squared Technologies
                           2128 Hidden Pine Lane
                            Apopka, FL 32712 USA
                         Phone/Fax: (407) 880-2627
                          Email : m2tech@tqnet.com
                  Web Site : http://www.tqnet.com/m2tech

Q 4:    How do I upgrade my license?

Any license can be upgraded. The amount of a non-network license can be
applied to the purchase of a network license. Any license can be upgraded
to the latest version for a discount off the listed price for that
particular type of license.

Q 5:    Will RSM process more than one file at a time?

Yes, absolutely! Except the shareware version is limited to processing one
file at a time. Typically RSM is used with wild cards like;
    rsm_95 *.c *.h;
    rsm_nt ./inc/*.h ./src/*.c

Q 6:    How do I get a simple summary listing of LOC for all C files in my
directory?

You can use the *.c wild card with no options or you can use the -s option.
    rsm _95 *.c
    rsm_95 -s *.c

Q 7:    How do I get the most information from rsm?

RSM uses command line options.  Each option added more information to the
report.   Try using, -f for functional analysis,. -o for class analysis, -a
for memory allocation, -c for complexity, -m for macro analysis, -n for
quality analysis and -v for verbose metrics.
    rsm_nt -foacmnv *.c *.h

Q 8:    How can I tell what RSM thinks of my source code and what is a line
of code?

Use the -d option on a source file to see what RSM determines for you
source code. rsm -d testfile.c The output is very verbose as it will echo
your code line for line, then display a RSM state.

Q 9:    Can RSM enforce my SDP or software coding standards?

Yes!  RSM analyzes code code for over 20+ of the top code problems
addressed by most commercial SDP or coding standards. Reference the -h,
help text from the program or rsm.text.  RSM is effectively used as
entrance criteria to formal code reviews.

Q 10:    How do I customize RSM?

RSM uses a configuration file, reference the -y option for the current
configuration state.  You can customize the quality analysis which RSM
performs by using the -q option.  Run RSM -q to set up which quality
notices, then set the numeric code in the configuration file or the
environment variable RSMNOTICE. HTML report colors can be modified by
setting the parameters in the configuration file or by setting the
environment variable associated with the specific color. See the help
documentation, -h.

Q 11:    How can I use RSM in automated processing like using AWK?

Use the -A option for a terse output in the expression format:
    LoC:123 eLoC:123 comments:123 Blanks:123 Total :369

Q 12:    Can RSM determine cyclomatic complexity like Cadre Teamwork?

Yes, RSM will produce the same cyclomatic complexity values in 1/100 the
time require to run Ensemble.  RSM also produces; comparison complexity,
which is the count of all comparative operators used in a function;
interface complexity, which are the number of parameters in the function
interface to the number or return states, and the total complexity of a
function which is the sum of cyclomatic, comparison and interface
complexities.

Q 13:    Does RSM handle templates?

Yes, RSM is completely compliant with template syntax.  RSM will identify
and echo each template type to the report.

Q 14:    Will RSM find nested function in functions or macros defined
within functions?

RSM is designed to be used on compiled code. It is poor design nesting
functions in functions or macros in functions. Parsing this type of
construct requires recursion. Recursion is expensive for performance of a
parser. RSM will not recognize this nested constructs as the lexical
analyzer and parser is a single pass non-recursive design for extremely
fast performance.  See Question 27.

Q 15:    Has Pure Software's Purify been run on RSM?

Yes, although we do not own a license for Purify, one of our alliance
customers runs this analysis and reports 0 errors and 0 leaks.

Q 16:    Does RSM support long file names?

Yes RSM supports long file name, LFN, under UNIX and Windows 95. RSM
supports long file names in UNIX and Windows 95. The NT 4.0 long file name
format is now supported as of RSM version 3.0 in the executable rsm_nt..

Q 17:    Does RSM support Java?

Yes RSM 3.05+  will process Java code as C++ and yield the correct metrics.
Future versions of RSM will support the native Java language extensions.
RSM Version 3.05 supports Java files.

Q 18:    How do I process a list of files?

Use the -F format available in Version 2.30   The list is a ASCII file of a
single file name on each line.  The file name should be a complete file
name.   Wild cards are not available in this list mode.
    /project/src/gcad.c
    /project/src/gcad.h

Q 19:    How do I recurse a directory tree to gather metrics?

Use the -r option to recurse down a directory tree.  This mode is useful
when extracting metrics for an entire project.  You must specify the file
extensions to examine and the starting point for recursive descent.
     rsm.sol -famcnv -r c,h,cc,hh,cpp /projects/src

Q 20:    Can rsm tell if my C source code contains any C++ keywords
              which would prevent the C code from compiling on a C++
compiler?

Yes rsm 2.50 checks for all C++ keywords within C files. Use the -q option
to change this configuration.

Q 21:    For RSM 3.00+ I get a can't find cygwinb19.dll. What is this?

RSM 4.00+ for Windows NT is compiled with GNU Win32.  This executable
requires a shared library called cygwinb19.dll. This file must be copied to
the \windows\system directory or available in the directory where
rsm_nt.exe resides.

Q 22:    How do I calculate metrics differentials?

Go to the base of the source tree you which to process. Run rsm to create a
work file and recurse the source tree. rsm -wr c,cpp,h,hh ./ This step
create a file named rm120219.97. This file contains the metrics for the
source tree. The -w mode always create a file workfile.dat. This file is
the last metrics differential run and is automatically used in the -W mode
Test the file by running differentials on the last -w run.
     rsm -Wr c,cpp,h,hh ./

Q 23:    How can I process two different work files?

Run rsm using the -x mode specifying the oldest file first.
    rsm_nt -x rm092719.97 rm120219.97

Q 24:    How do I extract comments from the source code?
Use the -C mode to extract comment.  This will indicate how well the
comment within the source code tell the story of the process.  It is useful
to also use the -t and -i options to identify the classes and templates as
they are associated with the extracted comments.
    rsm_95 -Cit *.c

Q 25:    What happened to the -t terse output mode?

This mode was moved to the -A mode signifying 'Automatic'.

Q 26:    As a manager how can I track what my developers are doing?

You can run RSM on specific areas in your development tree that each
individual is working in.  RSM with the -w option will capture metrics to a
dated file.  This file can be used with the -W or -x option to extract
metrics differential for the day, week, month or what ever time interval
you choose by the dated work files you process.
    On 07/01/1997 you ran:    rsm.hp -w -r cpp,hh /project/src/iomodule
    This created:  rm070119.97 as a work file.
    On 07/08/1997 you ran:    rsm.hp -w -r cpp,hh /project/src/iomodule
    This created:  rm070819.97
You can now extract metrics between these two time and watch the
productivity of who ever worked in the /project/src/iomodule directory
tree.
    rsm.hp -x rm070119.97 rm070819.97

Q 27:    RSM does not parse embedded functions and notices for embedded
classes, why?

Embedding functions within functions is a syntax error and is very
problematic in software design. Embedding classes within classes hides the
embedded class from a system type. This type of design breaks the pure
specification/implementation design paradigm. RSM is a single pass, non
recursive parser and will not identify embedded functions and will provide
a quality notice for embedded classes.

Q 28:    Can RSM provide estimation factors for future software planning?

Yes, the -e option will provide estimation factors from an existing code
baseline. These factors are provided based upon both LOC and eLOC metrics.

Q 29:    We have to identify files which have changed by more than 10%
between now and the last code pull. Can RSM provide this metric?

Create and RSM work file with the -w option for both trees, then use the -x
option to create a differential file. This reports will provide a metrics
for percent eLOC change.

Q 30:    I need HTML reports for use with my browser.
             Can RSM provide these types of reports?

As of version 4.0, RSM provide both HTML and test based reports. Use the -H
option to turn on HTML mode. You will have to redirect the output to a file
with a .htm or .html extension. rsm -Hfac *.cc > mymetrics.html. If you
specify the exact path for the source files, the HTML output will have
hyperlinks to the source independent of the location of HTML report.

Q 31:    How do I get metrics per class and class implementation?

Use the -o option and RSM will create LOC metrics per class and class
implementation.

Q 32:    RSM complains about a license file, what does that mean?

RSM 4.0+ requires a license file called rsm.lic to be found on your system
path or at the location specified by RSMHOME. On DOS/Windows systems RSM
tries to locate the license file in the directory where RSM is located.
Failure to find a license file or locating a corrupted license file will
place RSM in shareware mode.

Q 33:    Can RSM browse source files?

Yes all HTML reports which include file names, hyperlink the file names. It
is best to use literal file names when processing HTML files.  We modify
our browsers so that our editor is opened when accessing the hyperlink.
    rsm_nt -H c:/project/src/*.c > metrics.htm

Q 34:    Does RSM have a configuration file?

Yes, as of RSM 4.0, RSM uses a configuration file called rsm.cfg. This file
should be located in the rsm directory along the system path. Please refer
to the rsm.txt or rsm help for further information.  See also Question 10.

Q 35:    RSM_NT does not find wildcard files, Why?

RSM_NT is built with Cygnus GNUWIN32 compiler. This is essentially a UNIX
compatible compiler yielding an NT executable. Simply use the forward slash
/ instead of the back slash. i.e. rsm_nt c:\src\*.c FAILS rsm_nt c:/src/*.c
Works Great!

Q 36:    What is the latest version of RSM?

The latest version RSM and the version history of RSM can be found in the
file versions.txt.

Q 37:    What is eLOC?

eLOC is a concept developed by M Squared Technolgies to more accurately
account for the quantity of work performed when creating software.  A line
of code, LOC is any line in the source code which is not a blank line or a
comment.  However, many programmer make source lines with a single brace or
parenthesis.  This creates very readable code but the LOC metric gets
inflated by these gratuitous lines.  eLOC are lines of code which do not
include lines that are not single braces or parenthesis.

Q 38:    Is RSM Year 2000 compliant?

Yes.  RSM uses the standard C library and operating system calls.  We have
tested RSM on Windows 95 rev B. and Windows NT 4.0, Linux 2.0+, Solaris 2.5
and HPUX 10.20 and year 2000 dates are properly used.

Last Update: June 22, 1998
