每个人。 我想做的事情与objc-diff(https://github.com/mattstevens/objc-diff).I相同,因为发现objc-diff有一些错误,所以我想自己做。
我的目标是:生成关于两个Objective-C库版本之间API差异的文本,XML或HTML报告。它可以帮助图书馆作者为他们的用户创建差异报告,并验证没有意外的API更改。
我想通过使用clang解析Objective-C库头文件来实现这一点。当clang将Objective-C标头文件解析为AST时,我解析AST以查找其他内容。
但是,我找到了这样的头文件
@protocol TestProtocol <NSObject>
+ (id)modgForExpKey:(NSString *)key defaultValue:(id)val;
@end
clang -x Objective-c -Xclang -ast-dump -fsyntax-only -fobjc-arc -isysroot $(xcrun --sdk iphoneos --show-sdk-path)-arch armv7 XXXX.h -I / Applications /Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/include/objc
但是找到两个错误。
TestProtocol.h:12:34: error: cannot find protocol declaration for 'NSObject'
@protocol TestProtocol <NSObject>
^
TestProtocol.h:29:28: error: expected a type
+ (id)modgForExpKey:(NSString *)key defaultValue:(id)val;
^
有人知道如何解决这些错误。