Possibly we should just remove the commit hook mode from linters and force all linters to operate on the file explicitly.
AFAIK, the commit hook mode is rarely used and is an artefact from Facebook days. One issue with passing data to a linter via stdin is that some linters behave differently when data is piped from stdin versus being passed a path explicitly.
The results from arc lint and just running cpplint.py are different. I suspect the regular expression is broken.
$ arc lint >>> Lint for foo.h: Warning (legal/copyright) legal/copyright No copyright message found. You should have a line: "Copyright [year] <Copyright Owner>" >>> 1 #ifndef __FOO_H__ 2 #define __FOO_H__ 3 4 #endif
$ cpplint.py foo.h foo.h:0: No copyright message found. You should have a line: "Copyright [year] <Copyright Owner>" [legal/copyright]  foo.h:1: #ifndef header guard has wrong style, please use: FOO_H_ [build/header_guard]  foo.h:4: #endif line should be "#endif // FOO_H_" [build/header_guard]  Done processing foo.h Total errors found: 3