Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 自定义生成条件和警告Xcode_Ios_Objective C_Xcode_Build_Warnings - Fatal编程技术网

Ios 自定义生成条件和警告Xcode

Ios 自定义生成条件和警告Xcode,ios,objective-c,xcode,build,warnings,Ios,Objective C,Xcode,Build,Warnings,我的iOS项目有一个强制要求,开发人员制作的每个类都必须以“SYV”作为前缀。我必须添加构建设置,如果任何类不遵循此约定,它应该在Xcode中显示为警告 我不知道从哪里开始,甚至不知道是否可能。请给我一些建议 这是可能的,但需要一些我不确定是否值得的工作。该项目将有多少类?如果它不是一个大型项目,那么手动代码审查应该完成这项工作。但是,如果你想按照计划行事,你可以做以下几点: 方法1:将所有类放在一个文件夹(或子文件夹)中。假设您在每个文件中只放置一个类,并且该类是以该文件命名的,那么您可以使用

我的iOS项目有一个强制要求,开发人员制作的每个类都必须以“SYV”作为前缀。我必须添加构建设置,如果任何类不遵循此约定,它应该在Xcode中显示为警告


我不知道从哪里开始,甚至不知道是否可能。请给我一些建议

这是可能的,但需要一些我不确定是否值得的工作。该项目将有多少类?如果它不是一个大型项目,那么手动代码审查应该完成这项工作。但是,如果你想按照计划行事,你可以做以下几点:

方法1:将所有类放在一个文件夹(或子文件夹)中。假设您在每个文件中只放置一个类,并且该类是以该文件命名的,那么您可以使用一个非常简单的脚本来验证所有文件名,如果您希望具有某种结构,可以使用递归方式

方法2:使用:为
*.m
文件指定一个新规则(如果您想确定的话,也可以指定
*.h
)。由于这会覆盖默认规则(编译文件),并且我不知道一个简单的解决方案来执行默认规则,因此我建议您创建一个额外的目标,仅用于验证,而不需要编译。然后,您需要一个自定义脚本来解析源文件,查找类
@implementation
s(假设每个类都实现了,我看不出直接检查
@interface
s的原因,但我可能在这里遗漏了一些内容),并验证它们的名称。您可能可以使用一些正则表达式,或者使用完全解析文件。如果在基于Cube规则脚本的C(C,C++,ObjeVoC,…)命令行工具中实现验证,则可以使用它生成在xCoC:

中显示的警告。
// casts are only added as hints to the types used
printf("%s:%d: warning: %s", (string)symbolName, (int)lineNumber, (string)text);
不过,我还没有找到一种直接从bash脚本生成警告的方法。可以找到有关构建规则的更多信息

方法3:类似于2,但您可以通过定义。这里的挑战是找到目标使用的所有相关类。您可以手动检查以获取该信息(不推荐,但这是一个很好的练习),或者使用(Python)或(Ruby)之类的库。然后按照方法2进行验证

方法4:您还可以通过添加编译器标志和代码来检查前缀,从而实现一个Clang扩展。这可以通过修改编译器本身、添加analyzer插件或编写基于Clang的工具(可以像方法2/3那样从脚本调用)来实现。这不是小事,但可以做到。如果您希望采用此路径,则可以使用修改后的Clang编译器作为示例

推荐阅读: