Difference between revisions of "Verifying Header Comments"

From Pterodactylus
Jump to: navigation, search
(Add shell script to find files with non-current copyright years)
m (Fix formatting)
Line 18: Line 18:
 
And then there’s the ever-occuring issue with the years in the copyright line. Use this to find files that don’t have the current year as last year in the copyright line.
 
And then there’s the ever-occuring issue with the years in the copyright line. Use this to find files that don’t have the current year as last year in the copyright line.
  
# cy=$(date +%Y); grep -r "Copyright" src/ | grep "java:" | while read line; do f="$(echo "$line" | cut -d: -f1)"; v="$(echo "$line" | cut -d- -f3 | cut -d' ' -f4)"; y="${v:(-4)}"; if [ "$y" != "$cy" ]; then echo "$f: $y"; fi; done
+
# cy=$(date +%Y); grep -r "Copyright" src/ | grep "java:" | while read line; do f="$(echo "$line" | cut -d: -f1)"; v="$(echo "$line" | cut -d- -f3 | cut -d' ' -f4)"; y="${v:(-4)}"; if [ "$y" != "$cy" ]; then echo "$f: $y"; fi; done
  
 
[[Category:Programming]]
 
[[Category:Programming]]
 
[[Category:Java]]
 
[[Category:Java]]
 
[[Category:Shell]]
 
[[Category:Shell]]

Revision as of 20:23, 26 November 2015

A normal Java source file (in my projects) consists of a header like the following one:

/*
 * FreenetSone - EditImagePage.java - Copyright © 2010–2012 David Roden
 *
…

It should contain the name of the project and the name of the file. Sometimes, due to refactoring or copy/paste, the filename in the header does not match the name of the file in question. The following bash script will locate those files:

# grep -r "Copyright" src/ | grep "java:" | while read line; do f="$(echo "$line" | cut -d: -f1)"; c="$(echo "$line" | cut -d- -f2 | cut -d' ' -f2)"; f2="$(basename "$f")"; [ "$c" != "$f2" ] && echo "$f: $c"; done

And sometimes you even changed the name of the project at some point in the past. Use the following oneliner to find those files that have a different project name than the one you substitute at the end of the command:

# grep -r "Copyright" src/ | grep "java:" | while read line; do f="$(echo "$line" | cut -d: -f1)"; project="$(echo "$line" | cut -d' ' -f3)"; [ $project != "Sone" ] && echo "$f: $project"; done

And then there’s the ever-occuring issue with the years in the copyright line. Use this to find files that don’t have the current year as last year in the copyright line.

# cy=$(date +%Y); grep -r "Copyright" src/ | grep "java:" | while read line; do f="$(echo "$line" | cut -d: -f1)"; v="$(echo "$line" | cut -d- -f3 | cut -d' ' -f4)"; y="${v:(-4)}"; if [ "$y" != "$cy" ]; then echo "$f: $y"; fi; done