Bash 如何仅在本地修改的文件上运行PC Lint(不在SVN服务器上提交)

Bash 如何仅在本地修改的文件上运行PC Lint(不在SVN服务器上提交),bash,shell,grep,lint,Bash,Shell,Grep,Lint,我试图编写脚本,只在用户本地修改的文件上运行PCLint静态分析器工具,而不是在整个项目上 为此,我需要对所有本地修改的文件运行Lint命令 使用svn状态 svn status -u | grep -w M 命令I获取本地修改文件及其完整路径的列表 例如,如果本地修改的文件是asn1\u common\u elements.c,则上述svn命令将输出为 M 10014\Implementations\asn1der\src\asn1\u common\u elements.c 现在我只需

我试图编写脚本,只在用户本地修改的文件上运行PCLint静态分析器工具,而不是在整个项目上

为此,我需要对所有本地修改的文件运行
Lint
命令

使用svn状态

 svn status -u | grep -w M 
命令I获取本地修改文件及其完整路径的列表

例如,如果本地修改的文件是
asn1\u common\u elements.c
,则上述
svn
命令将输出为 M 10014\Implementations\asn1der\src\asn1\u common\u elements.c

现在我只需要获取filename
asn1\u common\u elements.c
,并使用
LINT
命令将其作为
LINT asn1\u common\u elements.log
(而不是
。c
需要更改为
.log

如何实现这一点?

您可以使用Makefile的功能,只让编译器编译更改后的文件

在Makefile中执行以下操作:

# Create object from C source code
file.o: file.c
    gcc                -c $(CFLAGS) -o $@
    wine lint-nt.exe   file.c

现在,文件.c只有在更改后才会被分析。

svn status-u | grep-w M的输出是什么?不要认为它会给出您上面提到的文件列表。