Git预提交挂钩,用于检测和阻止NSLog调试调用



如何创建一个用阻止提交的git预提交挂钩

NSLog(@"random debug stuff");

但跳过

//NSLog(@"useful to keep around");

您需要创建自己的日志记录系统,在该系统中您可以指定消息的级别(错误、警告、信息或调试),然后在未处于调试模式时(即-DDEBUG未传递给编译器),或者在设置了其他编译器定义时,甚至在运行时使用某些配置设置时,忽略调试调用。

我不清楚git预提交钩子在这种情况下是如何工作的,因为提交的状态与应用程序的开发阶段无关。

看看Marcus Zarra很久以前发布的.pch文件,我在每个项目中都使用它

除其他外,它包含称为DLogNSLog替换,使用它的好处是它利用内置的DEUBUG预处理器宏在生产中禁用NSLog

只需在YourProject.pch文件中包含以下代码:

#ifdef DEBUG
  #define DLog(...) NSLog(@"%s %@", __PRETTY_FUNCTION__, [NSString stringWithFormat:__VA_ARGS__])
  #define ALog(...) [[NSAssertionHandler currentHandler] handleFailureInFunction:[NSString stringWithCString:__PRETTY_FUNCTION__ encoding:NSUTF8StringEncoding] file:[NSString stringWithCString:__FILE__ encoding:NSUTF8StringEncoding] lineNumber:__LINE__ description:__VA_ARGS__]
#else
  #define DLog(...) do { } while (0)
  #ifndef NS_BLOCK_ASSERTIONS
    #define NS_BLOCK_ASSERTIONS
  #endif
  #define ALog(...) NSLog(@"%s %@", __PRETTY_FUNCTION__, [NSString stringWithFormat:__VA_ARGS__])
#endif
#define ZAssert(condition, ...) do { if (!(condition)) { ALog(__VA_ARGS__); }} while(0)

最新更新