有没有办法在XCode中构建项目时显示自定义警告?

时间:2014-04-29 07:58:15

标签: ios regex xcode

我想说我想在代码中检测出一些我无法通过测试检查的内容。

例如为: - 浏览我的整个代码库以检测我在括号和大括号之间有空格(使用正则表达式)。 - 浏览我的整个代码库并检测风格气味。

等...

如果其中一项检查失败,我想显示我自己定义的自定义警告。

XCode中有这样的东西吗?

感谢。

2 个答案:

答案 0 :(得分:3)

您需要创建一个运行脚本的项目目标,该脚本搜索源文件并进行检查(这不是一件容易的事)并返回非零值以指示错误。

然后使您的应用目标依赖于此“检查目标”,如果检查失败,构建将失败。

如果你想要一些如何的指示你写这个“检查脚本”,那么我倾向于使用clang static analyzer。但是,遗憾的是,scan-build未作为Xcode命令行工具的一部分安装,因此您需要以某种方式使用LLVM二进制文件,或者macports版本可能包含它。

对于与空格和其他风格问题相关的琐碎检查,而不是真实的,实时的,代码问题,那么你将不得不采用其他一些机制,我不知道如何开始,抱歉。

答案 1 :(得分:2)

我为Xcode编写了一个run script,它完全符合您的要求。它通过正则表达式搜索预定义的"代码气味"或"风格气味"并在编译时警告你

阅读博客文章,但最终的脚本在这里

#test if git exists.
command -v git > /dev/null 2>$1 || {exit 0}
#separate code smells with | i.e. (code_smell_1|code_smell_2)
KEYWORDS="(didDeselectRowAtIndexPath)"
git diff --name-only HEAD | grep "\.m" | xargs egrep -s --with-filename --line-number --only-matching "$KEYWORDS.*[^\/]*$" | perl -p -e "s/($KEYWORDS)/ warning: Are you sure you want to use \$1?\nTo remove this warning, append a comment at the end of this line \$1/"

此特定脚本在代码中搜索didDeselectRowAtIndexPath的外观,但您可以将其更改为任何字符串