把下边内容转化成思维导图
阶段	任务	子任务
调研	clang warning	检测项check
	Static Analyze	检测项check
	codecc	原理
		检测项check
	OCLint	集成方式/难易度
		检测项check
		如何扩展
	clang	集成方式/难易度
		检测项check
		如何扩展
	Infer	集成方式/难易度
		检测项check
		如何扩展
	竞品分析（Google/字节/内部除codecc外）	
评估	工具对比	选型
工具开发	项目搭建	sdk集成
		待检测项目资源读取
		检测后日志输出模块
	属性检测	对象使用assign修饰
		mutable对象使用copy修饰
		NSString/NSArray等不可变对象使用strong修饰
		delegate未使用weak修饰
		block未使用copy修饰
		对象只存在唯一持有，其他为弱引用持有
	数据结构	未使用 safe category 系列方法
		迭代过程中不要做任何mutable操作
	布局	同一对象同时采用 autolayout/frame布局
	注册与反注册	kvo 判断同一对象是否移除
		layer addAnimation后需要调 removeAllAnimations，判断同一对象是否移除
		peformselector afterdelay 调用后销毁时，需要有时机调用cancel
		VC作为child时，需要didmovetoparentviewcontroller/addchildviewcontroller，销毁前需要willMoveToParentViewController/removefromsuperview
		plugin在enterroom中有注册，在exitroom中需要对应的反注册
	特殊情况	block中 strong需要判空处理
		@try @catch 必须有@finally
工具使用	支持流水线检测	
	支持提单
แปลงเนื้อหาต่อไปนี้เป็นงานแผนผังความคิด งานย่อย การวิจัย การตรวจสอบคำเตือนเสียงดังกราว การตรวจสอบรายการการตรวจจับ การวิเคราะห์แบบคงที่ การตรวจสอบรายการการตรวจจับ การตรวจสอบหลักโค๊ดซีซี วิธีการรวม OCLint/การตรวจสอบรายการการตรวจจับความยาก วิธีขยายวิธีการรวมเสียงดังกราว/การตรวจสอบรายการการตรวจจับความยาก วิธีขยาย สรุป วิธีการบูรณาการ/การตรวจสอบรายการตรวจสอบความยากลำบาก วิธีขยายการวิเคราะห์ผลิตภัณฑ์ของคู่แข่ง (Google/ไบต์/ภายใน ยกเว้นตัวแปลงสัญญาณ) เครื่องมือประเมินผล การเลือกเครื่องมือเปรียบเทียบ การพัฒนาโครงการ การก่อสร้างโครงการ บูรณาการ SDK ที่จะทดสอบ ทรัพยากรโครงการ การอ่านหลังการตรวจจับ บันทึก เอาท์พุต โมดูลเอาท์พุตการตรวจจับแอตทริบิวต์ได้รับการแก้ไขด้วย กำหนด วัตถุที่ไม่เปลี่ยนรูปได้รับการแก้ไขด้วยการคัดลอก วัตถุที่ไม่เปลี่ยนรูปเช่น NSString/NSArray ได้รับการแก้ไขพร้อมสำเนา วัตถุที่ไม่เปลี่ยนรูปเช่น NSString/NSArray ถูกแก้ไขด้วย strong ไม่ได้ใช้ Delegate ไม่ได้ใช้การแก้ไขแบบ Weak ไม่ได้ใช้ Block คัดลอก ไม่ได้ใช้การแก้ไข วัตถุมีเพียงการระงับที่ไม่ซ้ำกันและส่วนที่เหลือถูกเก็บไว้โดยการอ้างอิงที่อ่อนแอ โครงสร้างข้อมูลไม่ได้ใช้หมวดหมู่ที่ปลอดภัย อย่าดำเนินการใด ๆ ที่ไม่แน่นอนในระหว่างการวนซ้ำของชุดวิธีการ วางโครงร่างเดียวกัน วัตถุและใช้การลงทะเบียนโครงร่างอัตโนมัติ / เฟรมและการยกเลิกการลงทะเบียน kvo เพื่อตรวจสอบว่าวัตถุเดียวกันถูกลบออกหรือไม่ หลังจาก addAnimation คุณต้องเรียกใช้ RemoveAllAnimations เพื่อตรวจสอบว่าวัตถุเดียวกันนั้นถูกลบออกหรือไม่ peformselector afterdelay จะถูกทำลายหลังจากการเรียก เมื่อคุณต้องการ มีโอกาสที่จะเรียก cancel VC เมื่อตอนเป็นเด็ก คุณต้องมี Didmovetoparentviewcontroller/addchildviewcontroller ก่อนที่จะทำลาย คุณต้องมีปลั๊กอิน willMoveToParentViewController/removefromsuperview จะต้องลงทะเบียนในห้องเข้า จำเป็นต้องมีการต่อต้านการลงทะเบียนที่เกี่ยวข้องในห้องทางออก กรณีพิเศษ Strong ในบล็อกต้องว่างเปล่า ต้องใช้ @try @catch มีเครื่องมือ @finally ที่รองรับการตรวจจับไปป์ไลน์และใบตราส่ง
spam lang_mismatch pii not_appropriate hate_speech sexual_content quality toxicity humor creativity violence