#! /usr/bin/python# -*- coding: UTF-8 -*-# 添加OC垃圾代码import os, sysimport randomimport stringimport reimport md5import timeimport jsonimport shutilimport hashlibimport timeimport argparseimport sysreload(sys)sys.setdefaultencoding("utf-8")script_path = os.path.split(os.path.realpath(sys.argv[0]))[0]# 忽略文件列表,不给这些文件添加垃圾函数prefix_name = 'ttv_addMix_'# ext_name_list = ['.h', '.m']class RebuildBase(object):def __init__(self):passdef runTask(self, curPath):passclass RebuildHeaderTool(RebuildBase):def runTask(self, curPath):list = []self.listDir(curPath, list)headerList = self.filterExtName(list, '.h')codeList = self.filterExtName(list, '.m')# allList = headerList + codeListfor path in codeList:self.deleteCodeFunction(path)for path in headerList:self.deleteHeaderFunction(path)print("重置主工程索引成功")# 生成替身def deleteHeaderFunction(self, path):try:file_object = open(path, "r+")text = file_object.read()if text.find(prefix_name) != -1:file_object.seek(0)lines = file_object.readlines()filterLines = []for line in lines:if line.find(prefix_name) == -1:filterLines.append(line)file_object.close()filterLines = self.removeLineBreak(filterLines)os.remove(path)file_object = open(path, "w")file_object.seek(0)file_object.writelines(filterLines)file_object.close()except:print("*.h 出错路径 " + path)passfinally:passdef deleteCodeFunction(self, path):try:file_object = open(path, "r+")text = file_object.read()if text.find(prefix_name) != -1:file_object.seek(0)lines = file_object.readlines()filterLines = []isOneFunction = 0for line in lines:if line.find(prefix_name) > 0 or isOneFunction == 1:if line.find('}') == -1:isOneFunction = 1else:isOneFunction = 0else:filterLines.append(line)file_object.close()filterLines = self.removeLineBreak(filterLines)os.remove(path)file_object = open(path, "w")file_object.seek(0)file_object.writelines(filterLines)file_object.close()except:print("*.m 出错路径 " + path)passfinally:pass# 移除多余换行def removeLineBreak(self,list):filterLines = []rows = len(list)if rows < 5:return listfor i in range(0,rows,1) :curline = list[i]if i < rows - 4 :nextLine = list[i+1]nextnextLine = list[i+2]nextnextLine = list[i + 3]if curline == '\n' and nextLine == '\n' and nextnextLine == '\n':passelse:filterLines.append(curline)return filterLines# 过滤指定后缀名def filterExtName(self, list, extName):rstList = []for text in list:if text.lower().rfind(extName.lower()) > 0:rstList.append(text)return rstList# 递归文件def listDir(self, path, list_name): # 传入存储的listfor file in os.listdir(path):file_path = os.path.join(path, file)if os.path.isdir(file_path):self.listDir(file_path, list_name)else:list_name.append(file_path)# 解析参数def parse_args():parser = argparse.ArgumentParser(description='oc垃圾代码生成工具.')parser.add_argument('--oc_folder', dest='oc_folder', type=str, required=True, help='OC代码所在目录')# parser.add_argument('--replace', dest='replace_ios', required=False, help='直接替换oc源代码', action="store_true")args = parser.parse_args()return argsdef main():app_args = parse_args()global ios_src_path, backup_ios_folder, target_ios_folderios_src_path = app_args.oc_folderif not os.path.exists(ios_src_path):print "oc_folder path not exist."exit(0)indexTool = RebuildHeaderTool()indexTool.runTask(ios_src_path)print "\nfinished"if __name__ == "__main__":main()
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。