Xcode 7.x 升级 8.x awakeFromNib 警告处理脚本

升级Xcode后会批量出现这种警告,Xcode 7.x之前版本没有提示。事实上也应该是要调 [super awakeFromNib] 的。 于是写了个脚本批量替换:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# author ervin

import sys
import os


def is_file_contains_sources(file_path):
    if ".m" in file_path:
        return True
    return False


def should_file_upgrade(file_content):
    if "(void)awakeFromNib" in file_content:
        if "[super awakeFromNib]" not in file_content:
            return True
    return False


def upgrade_file(file_path):
    with open(file_path, "rb") as f:
        file_content = f.read()
    if not should_file_upgrade(file_content):
        return
    file_content = file_content.replace("- (void)awakeFromNib {", "- (void)awakeFromNib {\n    [super awakeFromNib];")
    with open(file_path, "wb") as f:
        f.write(file_content)


def upgrade_files(root, files):
    for f in files:
        file_path = os.path.join(root, f)
        if not is_file_contains_sources(file_path):
            continue
        print "processing " + file_path
        upgrade_file(file_path)


def main():
    source_path = sys.argv[1]
    list_dirs = os.walk(source_path)
    for root, dirs, files in list_dirs:
        upgrade_files(root, files)


if __name__ == '__main__':
    if len(sys.argv) != 2:
        name = os.path.basename(sys.argv[0])
        print "Usage: {0} /path/to/source".format(name)
        exit(0)
    main()