---
name: "codechanges"
section: "1"
platform: "linux"
package: "pmccabe"
version: "2.8-3"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/codechanges"
---

# codechanges(1)

computes the amount of code changes between two code trees or single files

## NAME

codechanges - computes the amount of code changes between two code trees or single files

## SYNOPSIS

**codechanges \[-n\] old-directory new-directory**

**codechanges \[-n\] old-file new-file**

## DESCRIPTION

*codechanges* recursively compares the two named directories (or files) calculating new/deleted/changed lines, not including comments or blank lines, in files which appear to be source files (C, C++, shell, and Makefiles). To include comments and blank lines, use the **-n** option.

## APPLICATIONS

*codechanges* is purpose designed to measure the amount of code change between milestones in a project's life. The following output is from two stages, plus some artificial test cases, in the *pmccabe* code stream:

```
NEW	DELETED	CHANGED	Old File, New File
11	19	4	old.pmccabe/./Makefile pmccabe/./Makefile
214	10	39	old.pmccabe/./cparse.c pmccabe/./cparse.c
463	0	0	NEWFILE pmccabe/./decomment.c
147	4	39	old.pmccabe/./dmain.c pmccabe/./dmain.c
10	0	0	NEWFILE pmccabe/./dmain.h
407	0	0	NEWFILE pmccabe/./getopt.c
48	0	0	NEWFILE pmccabe/./getopt.h
9	18	12	old.pmccabe/./gettoken.c pmccabe/./gettoken.c
18	18	15	old.pmccabe/./io.c pmccabe/./io.c
175	43	20	old.pmccabe/./nmain.c pmccabe/./nmain.c
194	11	22	old.pmccabe/./pmccabe.c pmccabe/./pmccabe.c
42	0	20	old.pmccabe/./pmccabe.h pmccabe/./pmccabe.h
0	1318	0	old.pmccabe/./test/langMode.c DELETED
24	0	0	NEWFILE pmccabe/./test006/Grapher.H
620	0	0	NEWFILE pmccabe/./test006/Handler.H
442	0	0	NEWFILE pmccabe/./test006/NodeArc.H
764	0	0	NEWFILE pmccabe/./w/parser.C
95	0	0	NEWFILE pmccabe/./w/tokens.h
4	0	0	NEWFILE pmccabe/./x.sh
3687	1441	171	TOTAL
```

## DIAGNOSTICS

There aren't many at this time.

## BUGS

*codechanges* thinks it knows what source files are interesting and the user may not agree with its choices.  It's a script and should be easy to modify.  Ultimately this should probably be configurable.

*codechanges* uses a program called *decomment* which guesses how to de-comment a file based on its file name and it's not always perfect.

## AUTHOR

Paul Bame

## SEE ALSO

[*pmccabe*(1)](/pmccabe/1.md), [*decomment*(1)](/decomment/1.md)
