Man Linux: Main Page and Category List

NAME

       sloccount - count source lines of code (SLOC)

SYNOPSIS

       sloccount  [--version]  [--cached]  [--append]  [ --datadir directory ]
       [--follow] [--duplicates]  [--crossdups]  [--autogen]  [--multiproject]
       [--filecount]  [--wide] [--details] [ --effort F E ] [ --schedule F E ]
       [ --personcost cost ] [ --overhead overhead ] [ --addlang language ]  [
       --addlangall ] [--] directories

DESCRIPTION

       sloccount  counts the physical source lines of code (SLOC) contained in
       descendants of the specified  set  of  directories.   It  automatically
       determines  which  files  are  source  code files, and it automatically
       determines the computer language used in  each  file.   By  default  it
       summarizes  the  SLOC  results  and presents various estimates (such as
       effort and cost to develop),  but  its  output  can  be  controlled  by
       various options.

       If  you  give  sloccount  a list of two or more directories, the counts
       will be broken up according to  that  list.   There  is  one  important
       limitation:  the  basenames of the directories given as parameters must
       be  different,  because  those  names  are  used   to   group   summary
       information.    Thus,   you   can’t   run   "sloccount   /usr/src/hello
       /usr/local/src/hello".  This limitation only applies to  parameters  of
       sloccount  - subdirectories descended from the top directories can have
       the same basename.

       If you give sloccount only  a  single  directory,  sloccount  tries  to
       automatically find a reasonable breakdown for purposes of reporting (so
       it’ll produce a useful report).  In this case, if the directory has  at
       least two subdirectories, then those subdirectories will be used as the
       breakdown.   If  the  single  directory  contains  files  as  well   as
       directories  (or if you give sloccount some files as parameters), those
       files will be assigned to the directory "top_dir" so you can tell  them
       apart  from  other  contents.  Finally, if there’s a subdirectory named
       "src", then that subdirectory  is  again  broken  down,  with  all  the
       further  subdirectories  prefixed  with "src_".  Thus, if directory "X"
       has  a  subdirectory  "src",  which  contains  subdirectory  "modules",
       sloccount will report a separate count for "src_modules".

       sloccount  normally  considers  all  descendants  of these directories,
       though unless told otherwise it ignores symbolic links.

       sloccount is  the  usual  front-end  of  the  package  of  tools  named
       "SLOCCount".   Note  that  the  name  of the entire package has capital
       letters, while the name of this front-end program does not.

       sloccount will normally report estimates of schedule time, effort,  and
       cost,  and  for single projects it also estimates the average number of
       active developers.  These are merely estimates, not  etched  in  stone;
       you can modify the parameters used to improve the estimates.

OPTIONS

       --version   Report  the  version  number  of  SLOCCount and immediately
                   exit.  This option can’t  be  usefully  combined  with  any
                   other option.

       --cached    Do  not  recalculate;  instead,  use  cached results from a
                   previous  execution.   Without  the  --cached  or  --append
                   option,  sloccount automatically removes the data directory
                   and recreates it.

       --append    Do  not  remove  previous  calculations   from   the   data
                   directory;   instead,  add  the  analysis  to  the  current
                   contents of the data directory.

       --datadir directory
                   Store or use cached  data  in  the  given  data  directory;
                   default value is "~/.slocdata".

       --follow    Follow symbolic links.

       --duplicates
                   Count  all  duplicates.   Normally,  if  files  have  equal
                   content (as determined using MD5 hash values), only one  is
                   counted.

       --crossdups Count duplicates if they occur in different portions of the
                   breakdown.   Thus,  if  the  top  directory  contains  many
                   different   projects,   and  you  want  the  duplicates  in
                   different projects to count in each  project,  choose  this
                   option.

       --autogen   Count  source  code  files  that appear to be automatically
                   generated.  Normally these are excluded.

       --multiproject
                   The different  directories  represent  different  projects;
                   otherwise, it’s assumed that all of the source code belongs
                   to a single project.  This doesn’t change the total  number
                   of  files or SLOC values, but it does affect the effort and
                   schedule estimates.  Given this option, effort is  computed
                   separately  for  each  project  (and  then summed), and the
                   schedule is the estimated schedule of the largest  project.

       --filecount Display counts of files instead of SLOC.

       --wide      Display in the "wide" (tab-separated) format.

       --details   Display  details,  that  is,  results for every source code
                   file.

       --effort F E
                   Change the  factor  and  exponent  for  the  effort  model.
                   Effort (in person-months) is computed as F*(SLOC/1000)^E.

       --schedule F E
                   Change  the  factor  and  exponent  for the schedule model.
                   Schedule (in months) is computed as F*(effort)^E.

       --personcost cost
                   Change the average annual salary to cost.

       --overhead overhead
                   Change the overhead value to overhead.  Estimated  cost  is
                   computed as effort * personcost * overhead.

       --addlang language
                   Add   a   language  not  considered  by  default  to  be  a
                   ‘‘language’’ to be  reported.   Currently  the  only  legal
                   values  for  language  are  "makefile",  "sql", and "html".
                   These files are not normally included in the  SLOC  counts,
                   although their SLOCs are internally calculated and they are
                   shown in the file counts.  If you want to include more than
                   one  such  language,  do  it by passing --addlang more than
                   once, e.g., --addlang makefile --addlang sql.

       --addlangall
                   Add all languages not normally included in final reports.

NOTES

       As with many other programs using Unix-like options, directories  whose
       names  begin  with a dash (‘‘-’’) can be misinterpreted as options.  If
       the directories to be analyzed might begin with a dash, use the double-
       dash  (‘‘- -’’)  to  indicate the end of the option list before listing
       the directories.

BUGS

       Filenames  with  embedded  newlines  (in  the  directories   or   their
       descendants)  won’t  be  handled correctly; they will be interpreted as
       separate filenames where the newlines are inserted.  An attacker  could
       prevent  sloccount  from  working  by  creating  filenames  of the form
       /normal/directory ... NEWLINE/dev/zero.  Such filenames are exceedingly
       rare  in  source  code  because they’re a pain to work with using other
       tools, too.  Future versions  of  sloccount  may  internally  use  NUL-
       separated filenames (like GNU find’s -print0 command) to fix this.

       There are many more languages not yet handled by SLOCCount.

       SLOCCount only reports physical source lines of code.  It would be very
       useful if it could also report logical lines of code, and perhaps other
       common  metrics  such  as  McCabe’s  complexity measures and complexity
       density (complexity/SLOC for each function or procedure).

SEE ALSO

       See the SLOCCount website at  http://www.dwheeler.com/sloccount.   Note
       that  more  detailed documentation is available both on the website and
       with the SLOCCount package.

AUTHOR

       David A. Wheeler (dwheeler@dwheeler.com).