Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
SLOCCOUNT(1)			    SLOCCount			    SLOCCOUNT(1)

NAME
     sloccount - count source lines of code (SLOC)

SYNOPSIS
     sloccount [--version] [--cached] [--append] [ --datadir directory ] [--fol-
     low]  [--duplicates]  [--crossdups]  [--autogen]  [--multiproject] [--file-
     count] [--wide] [--details] [ --effort F E ] [ --schedule F E ] [ --person-
     cost cost ] [ --overhead overhead ] [ --addlang language ] [ --addlangall ]
     [--] directories

DESCRIPTION
     sloccount counts the physical source lines of code (SLOC) contained in  de-
     scendants of the specified set of directories.  It automatically determines
     which files are source code files, and it automatically determines the com-
     puter  language  used  in each file.  By default it summarizes the SLOC re-
     sults 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 ap-
     plies 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 automati-
     cally  find a reasonable breakdown for purposes of reporting (so it'll pro-
     duce 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  ac-
     tive  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 gener-
		 ated.	Normally these are excluded.

     --multiproject
		 The different directories represent different projects;  other-
		 wise,	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 es-
		 timates.  Given this option, effort is computed separately  for
		 each  project	(and then summed), and the schedule is the esti-
		 mated 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.  Sched-
		 ule (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  com-
		 puted 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 nor-
		 mally included in the SLOC counts, although their SLOCs are in-
		 ternally calculated and they are shown in the file counts.   If
		 you want to include more than one such language, do it by pass-
		 ing  --addlang  more than once, e.g., --addlang makefile --add-
		 lang 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 direc-
     tories.

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 ... NEW-
     LINE/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).

SLOCCount			  31 July 2004			    SLOCCOUNT(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=sloccount&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help