2011-12-06 39 views
3

我想使用make到金培尔PC - 皮棉适用于我的源代码,以增量的方式。如果源文件自上次运行lint以来发生更改,我希望它只针对源文件运行lint。有人在做这个吗?你如何接近它?我如何使用使运行增量PC - 皮棉

+0

请告诉我们相关的makefile文件...做的目的是为这个,所以当然是可以做到的。 – sehe

+0

我的问题是我不知道如何编写make文件,因为pc-lint似乎没有任何输出文件? – lexicalscope

+0

创建一个,如果它必须是人造的。有这样的共同模式。此外,当然pc-lint有输出(如果没有它,这将是相当无用的) – sehe

回答

4

共用图案是创建输出(或创建人工输出,如果是没有的)。

编辑注意$(LINT) $< > [email protected]将扩大到像lint test.cpp > test.lint(输出重定向到该文件)

例如

%.o: %.cpp | %.lint 
     S(CC) -o [email protected] $(CPPFLAGS) $< 

%.lint: %.cpp 
     $(LINT) $< > [email protected] 

或一个过程,而不输出:

%.o: %.cpp | %.emailsent 
     S(CC) -o [email protected] $(CPPFLAGS) $< 

%.emailsent: %.cpp 
     $(DOEMAIL) $^ # no output from mail sender 
     touch [email protected]  # won't be reached DOEMAIL returned error 
+0

很酷,谢谢,这是有帮助的。 – lexicalscope

+0

对于单个文件的LINTING,你需要为“unit-checkout”添加选项'-u',这样PCLint就会知道你并不是一个完整的项目。然后它会压制几个关于未使用的项目或未解决的外部的警告。 –

+0

“在某些演示文稿中,我读到PC Lint比分析现有代码更适合防止错误。” - 我不同意这一点。通过分析代码来预防错误。实际上,我认为他们的意思是像ubsan工具,PVS-Studio中,净化,Coverity公司,做更多的静态分析,使实际的结论,而不是基于指南的诊断/启发式 – sehe

1

无论何时调用gcc(或其他),您都可以将lint编译添加到编译规则中。这会在测试或使用代码之前立即引发任何问题。另一方面,这对于一个更大的项目来说太慢了。

我通常会在检查它们之前检查我的项目。因此,我制作了一个小脚本,用于将所有已检出的所有内容都撕掉。如果你有一个温和的平台(例如在一个合适的服务器上的svn),这甚至可以由服务器完成,因此用户可以工作而无需等待lint完成。