如何在 cpplint 中使用 exclude_files 正则表达式?

How to use the exclude_files regex in cpplint?

我正在使用 cpplint 根据 google 风格指南检查我的源代码。

Cpplint 的帮助说:

cpplint.py supports per-directory configurations specified in CPPLINT.cfg
    files. CPPLINT.cfg file can contain a number of key=value pairs.
    Currently the following options are supported:

    "exclude_files" allows to specify a regular expression to be matched against
    a file name. If the expression matches, the file is skipped and not run
    through liner.

Example file:
        filter=-build/include_order,+build/include_alpha
        exclude_files=.*\.cc

    The above example disables build/include_order warning and enables
    build/include_alpha as well as excludes all .cc from being
    processed by linter, in the current directory (where the .cfg
    file is located) and all sub-directories.

我如何使用 cpplint:

我通过此命令使用 cpplint 检查我的源文件夹中的所有文件: cpplint src/*.c

嗯,有一个特殊的文件foo.cc,不能检查。所以我尝试创建一个CPPLIN.cfg来使用exclude_files属性。我的文件如下所示:

set noparent
filter=-build/include_dir
exclude_files=foo.cc

然而 foo.cc 仍然被选中。

我已经尝试过的事情:

我试过了exclude_files=/.*\.cc/。这应该排除所有以 *.cc 结尾的文件。尽管如此,仍然检查所有文件。

我试图从文件中删除我的 filter。这导致了比以前更多的错误。所以我现在确定我的 CPPLINT.cfg 文件被 cpplint 找到了。

问题:

如何在cpplint中正确使用exclude_files正则表达式?

显然文档是错误的:exclude_files 仅排除与 CPPLINT.cfg 相同目录中的文件,而不排除子目录中的文件。参见 https://github.com/google/styleguide/issues/220

所以解决方案是创建 src/CPPLINT.cfg 并将 exclude_files=.*\.cc 放入其中。