msa*_*kya 25 lint makefile gnu-make
我知道有很多棉短绒编程语言,如pep8对python,但我从来没有碰到过一个了makefile.是否有任何这样的短信makefile?
随着我逐渐使用a makefile,它会变得越来越复杂和冗长,对我而言,使用linter来保持makefile更具可读性是有意义的.
我也不知道在哪里找到make文件lint(web搜索"make file lint"让我在这里),但是这里有一个不完整的浅层思想片段列表,用于实现make文件lint实用程序...
空格是可读性的一个方面,因为制表文件中的制表符和空格具有不同的语义.makefile-mode当您尝试使用间隔较差的选项卡保存make文件时,默认情况下Emacs会警告您"可疑"行.也许以批处理模式运行emacs并从该模式调用解析和验证功能是可行的.如果有人要开始实现这样的make文件lint实用程序,emacs lisp模式可能是一个有趣的检查.
关于检查正确性,@ Mark Galeck在他已经提到的答案中--warn-undefined-variables.问题是未定义但标准化的变量有很多输出.为了改进这个想法,可以添加一个简单的包装器来过滤掉有关这些变量的消息,以便发现真正的拼写错误.在这种情况下,make可以使用选项--just-print(aka -n或--dry-run)运行,以便不运行实际命令来构建目标.
使用--just-print选项运行make时,执行任何更改都不是一个好主意.grep $(shell ...)函数调用并尝试确保从它们内部没有任何改变是有用的.我们可以检查的第一次迭代:$(shell pwd)以及其他一些常见的非破坏性用途是可以的,其他任何东西都应该调用手动检查的警告.
我们可能会因为$没有跟随((可能是[$][^$(][[:space:]]用POSIX正则表达式表达的东西)来抓住像$VARIABLE解析那样$(V)ARIABLE并且可能不是作者想要的情况而且也不是好风格的情况.
用make文件的问题是,他们与所有的嵌套结构,像这样复杂的$(shell),$(call),$(eval)和规则评估; 结果可以从环境或命令行的输入或调用make调用中改变; 还有许多隐含的规则或其他定义使任何更深层次的语义分析成为问题.我认为所有罗盘制作lint实用程序是不可行的(除了可能内置在make实用程序中),但某些编码指南和启发式检查确实已经证明是有用的.
| 归档时间: |
|
| 查看次数: |
7227 次 |
| 最近记录: |