首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Swift 编写的工程代码静态分析命令行工具 smck

前言 最近几周在用 swift 做一个命令行工具 smck 用来对现有 OC 工程的代码做些分析和处理。日后工程切换成 Swift 可以加上对 Swift 工程代码的支持。...看来这段时间要跟喵神做好多类似的事情了。smck 的代码今天已经放到了 Github 上,地址:https://github.com/ming1016/smck smck 可以做哪些事情呢?...当然需要检查分析和处理的肯定不止这些,所以在 smck 这个程序设计成了一种非常利于添加各种检查功能模块的结构,通过简单的代码编写每个人或团队都可以方便编写添加各种 checker。...因为代码分析的过程会通过一系列已经编写好的 parser 来完成,parser 会完成 token 的分析和上下文还有工程全局分析输出所有节点的数据信息,根据这些完整的信息和已经定义好的一系列具有完整包含关系的结构体就能够进行各种各样功能的定制化了...由于工程检查规则非常多样化,所以需要编写一些 Plugin,后面我会逐渐抽出一些具有共性的放上来,目前在 Plugin 目录下放了两个例子,在例子里可以看出来怎么通过订阅 Parser 输出的不同节点的不同数据来进行不同的检查

1.1K10

发现了用 Python 编写简洁代码的秘诀!

作为一名机器学习工程师,的职责就是确保代码能够顺利地从概念验证阶段过渡到生产环境。 因此,编写简洁的代码对于提高开发效率和降低维护成本至关重要。...在本文中,将分享一些 Python 编程技巧和最佳实践,并通过简洁的代码示例,向您展示如何提高代码的可读性和可维护性。...TDD 的三个核心原则是: 在开始编写生产代码之前,先编写一个失败的单元测试 编写的单元测试内容不要多于足以导致失败的内容 编写的生产代码不能多于足以通过当前失败测试的部分。...这个过程并不完全是 TDD,因为在添加单元测试之前,已经开发了代码。但在理想情况下,你甚至可以在实现 load_data 函数之前编写这些单元测试。...但是,编写简洁代码也是数据科学家的必修课,因为这能确保模型更快地投入生产环境。 当编写需要重复使用的代码时,我们应当坚持编写简洁代码。起步可以从简单开始,不要一开始就过于追求完美,而是要反复打磨代码

10310
您找到你想要的搜索结果了吗?
是的
没有找到

编写完10万行代码发了篇长文吐槽Rust

然而,现在有人花费大量时间编写 10 万行 Rust 代码之后,撰写博客阐明 Rust 语言的一系列缺点,以下是博客的主要内容。...深入研究 Rust 是为了改进由 Xobs 编写的 Xous 操作系统。...然而,Rust 的「std」库并没有为我们构建可审计的代码库带来任何好处。 Rust 不够完善 我们编写 Xous 的代码时,引入了一个叫作「const generic」的新类型。...在编写 Xous 的过程中,Rust 的内联汇编、工作空间等功能逐渐成熟,这意味着我们需要重新审视已经写好的代码,以使关键的初始启动代码集成进我们构建的系统。...针对这个问题,编写了一个名为「crate-scraper」的小工具,它为我们的 Cargo.toml 文件中指定的每个源下载源包,并且将它们存储在本地,这样我们就可以获得用于构建 Xous 版本的代码快照

77130

可读代码编写炸鸡五 - 教练,想要来到第二层

大家好,是多选参数的一员 —— 大炮。...前几篇的炸鸡 (查看专辑即可,可读代码编写炸鸡一 - 可读代码编写炸鸡四),都是针对 命名,注释 等代码范围较小的,针对语法词句上的情况进行优化,而且并不涉及很强的程序逻辑性。...所以这是可读代码编写的第一层。 而第二层开始接触 代码逻辑 上的优化,例如 控制流,逻辑表达式 等等。 我们可以试想一下,阅读代码如下代码的时候会有什么感觉?...顺带一提,的小组一位大哥写了一个功能,几百行一个函数,自行体会一下。 如果你还要帮他修改 bug,你就不得不阅读这些代码,然后再体会一下。...所以,当我们需要过多的精力去注意这些变量逻辑时,就已经背上了 「 思想包袱 」 这已经背离了代码可读性的初衷,使得 代码理解难度攀珠峰。 同时回头看看如上的代码,其实已经存在了一些 bug。

28230

Swift 新语言开发「建议收藏」

大家好,又见面了,是全栈君。...Swift以极好的方式来编写的iOS和OS X应用,并将继续发展与新特性和功能。Swift充满野心。我们已经迫不及待看你能用它创造什么。...2.Swift概览 传统建议新语言的第一个程序应该打印“Hello, World”在屏幕上。在Swift里这仅仅须要一行来完毕。   假设你在C或Objective-C语言编写代码。...这个语法看起来会非常熟悉 —— 在Swift里,这行代码是一个完整的程序,你不须要为input/output或字符串处理等功能导入一个单独的库。...这次概览通过展示怎样完毕各种程序任务来给你足够的信息開始编写Swift代码,假设你不明确的地方。不要操心。这个概览里的一切细节都会在本书后面详解。

70030

写下这行代码时,只有和上帝知道是怎么回事01.烂代码的路径依赖02.对于烂代码应采取零容忍03.代码规范的重要性04.文档的重要性

01.烂代码的路径依赖 如果你维护过运行了几年,甚至十几年的代码库,肯定会有这样的体验: “这一坨代码是干嘛用的?看半天也不知什么意思?” "把这些看不懂的代码删了?要是出事了谁背锅?...于是,烂代码就如同腐烂的苹果,一开始只是烂了几个点,很快就会蔓延,直至烂透,再整体推倒重来 见过很多程序员在遇到前任留下的烂代码时,首先骂几句:”靠,这TM谁写的垃圾,这怎么维护啊?...因此,烂代码是有极强的感染性。破窗原理同样适用于代码。对于烂代码,应该在一开始就采取零容忍的态度。即使有些代码迫于进度压力,不得已而为之,也要充分写好注释,防止污染到其他代码 ?...想大多数程序员的能力都比不上google的工程师吧,而google的开发人员,入职的第一件事就是熟悉他们的代码规范,他们的代码规范极其严谨,细化到每一个细节,如:命名规范,注释规格,大括号是否换行,缩进用...04.文档的重要性 当我写下这一行代码时,只有和上帝知道是什么意思。一个月后,只有上帝才知道是什么意思了... 程序员最痛恨的事:"为什么别人不写个文档?"

91330

编写需求文档,再写30%+的代码,剩下的与你一起开发!

❞ 大家好,是技术UP主小傅哥。 今天小傅哥将开启一个新计划,带着大家一起干"开源"。要说编程能力什么时候提升的最快,就是从开始承接需求并思考着怎么落地,到最后开发实现时,才是成长最快的时候。...小傅哥这里已经编写了30%+的代码,定义基础框架、对接标准和实现手段; 那么,接下来小傅哥就告诉能学习到哪些设计思维、设计原则、设计模式以及怎么进入学习。—— 这个项目涵盖了很多高级的编码思想。...接口实现 - 统一标准 很多伙伴在没看过小傅哥的“代码操盘”前,都是;一个接口、一个实现,一个实现,代码一片。一片一片、又一片,代码行数、两三千。...以上的所有代码实现,都会以当下工程所提到的设计思维、设计原则、设计模式,来编写具体的代码实现,非常锻炼人。...以上开发内容,小傅哥会陆续的提交代码,你可以赶在的前面实现,这样可以很好和我的开发进行对比,学习设计思想和落地实现。

15310

TIOBE 6月榜单:Swift强势挺进,编程语言版图的悄然变革

本文将深入探讨Swift的这一排名跃升背后的原因,通过实例代码展示其魅力,并就这一现象引发的思考与未来展望进行剖析。...代码案例:Swift的简洁之美let name = "Swift"print("Hello, (name)!")...这行简洁的Swift代码展示了变量声明、字符串插值等功能,体现了Swift在保证代码可读性的同时,也不失表达力。...泛型与协议导向编程Swift 强大的泛型系统允许开发者编写复用性强、类型安全的代码,而协议导向编程(Protocol-Oriented Programming, POP)则鼓励使用协议而非类来定义类型,...异步编程与并发支持Swift 5.5 引入了async/await模型,极大地简化了异步编程的复杂度,使得处理网络请求、文件I/O等耗时操作变得如同编写同步代码一样直观。

16710

iOS 问题总结(五)

1.在 swift 工程中 使用 cocoapods 导入第三方库后出现 no such module afnetworking 错误 解决办法: 这是swift项目,在Podfile文件中加入“use_frameworks...这时需要添加一行代码: _searchController.hidesNavigationBarDuringPresentation = YES; 这行代码是声明,哪个viewcontroller显示UISearchController...,苹果开发中心的demo中的对这行代码,注释如下 // know where you want UISearchController to be displayed 如果不添加上面这行代码,在设置 hidesNavigationBarDuringPresentation...然后又添加了下面的代码: _searchController.hidesNavigationBarDuringPresentation = NO; 运行如下图: ?...然后又试着把隐藏导航栏的属性注释掉,然后运行,还是能够正常显示,下面是随后的代码: -(UISearchController *)searchController { if (_searchController

1.5K10

【技术创作101训练营】如何从Objective-C转向Swift开发

技术环境(转向Swift开发的必要性) 随着互联网的快速发展,已经不是当年的小白了,但你们也都知道,程序员这行,想要吃饱饭就要不断地学习,不然就会随着技术的迭代而被淘汰。...Objective-C语言的痛点 这门语言是C的超集,缺点随着时代的变迁和技术的迭代,显得越来越臃肿,难学,包括iOS这行,已经越来越少的新人加入这行,反倒是H5和Java两行的新人越来越多。...面试官过来又问我:请问你会Swift吗,还没有进行这方面的学习,因为那时候可能才是Swift 2和3,听说ABI不稳定就没有急切的进行学习,于是,在这场觉得发挥非常稳定的面试中,因为不会Swift...从阅读翻译开始 怎么样快速的提高自己的能力呢,从阅读和翻译开始,市面上有很多成熟的框架和项目,对着进行翻译,是最快提升能力的方式,在翻译的同时,可以学到对方(大佬)的项目结构、代码逻辑、代码思维、代码规范...试着用更高级的项目架构进行重构 OC老项目的结构和目录势必是臃肿的,为何不用我们新学的Swift重构一遍呢,不仅能够快速提高Swift代码书写能力,还能够完成我们工作的KPI。

1.5K42

译:如何用Swift进行TDD(测试驱动开发)

如果你还没有用类似Swift的编译型语言进行过TDD,你可能想问:如果测试引用的对象不存在,你怎么进行代码编译,又怎么进行TDD呢?...相对于类似Swift的编译型语言,类似Ruby和JavaScript的解释型语言可能天生更适合TDD,因为你可以编写不存在的测试对象,并且不会产生编译错误。 所以该如何用编译型语言进行TDD?...你可以直接编写测试代码,放任它编译失败。如果你把“编译失败”当作解释型语言的测试失败,就简单多了。失败就是失败,无论是由于编译器还是你的测试。...3、在测试中,调用你想要存在的方法 现在我们想用Project实例调用asDictionary方法,这个方法将给我们Project的字典表示。...4、编写你想要存在的方法 在Project类里,我们现在可以实现asDictionary方法了,但是注意我们要用最简短的代码来通过测试。(换句话说,不要用的id属性!)

1.2K110

12岁学习编程,17岁香港高中生成苹果WWDC2020 Swift开发者挑战赛赢家!

这位17岁的香港高中生正是来自世界各地41个国家和地区的350名Swift挑战赛优胜者中的一员,他们提交的代码都获得了苹果高层的认可。...他们提交的 Swift playgrounds 原创作品,运用Swift语言融合自身创意,编写属于自己的App,从全世界青少年中脱颖而出。...该作品要求用户使用预先编写好的代码块来引导Cuby(一个立方体形状的虚拟角色)穿越现实世界的表面,来实现一个特定的目标。...2016年9月,针对刚开始学习代码的年轻学生推出了专用的iPad版本。 想用Swift语言做出自己的小游戏,可以从理解代码所需要的基本概念开始。...写的每一行代码都会导致这个「虚拟角色」的实时反应。如果犯了一个错误,app会立即突出显示出来。一个小时之后,新手就已经可以轻松操纵角色了。

74910

平面检测-搜索真实世界的表面

为了更多地了解Swift中的委派,邀请您访问或查看本书第4章中的委托部分。 扩展课程 为了保持井井有条,让我们创建一个新文件来托管与ARSCNViewDelegate相关的所有代码。...不要担心,我们将继续编写代码并在最后添加缺少的返回值。 平面几何 在此函数中,我们将为节点设置几何,并且该几何是平面。因此,使用其范围属性创建一个大小为planeAnchor的平面。...公式和图表 重构控制流程 在我们继续之前,想重构if else语句。有一种更好的方式来编写它。想从这种方式开始,使其更容易理解。另一种选择是使用guard语句。...替换此代码块: if anchor is ARPlaneAnchor { } else { return } 为这行代码: guard anchor is ARPlaneAnchor else...与此同时,希望您能够在场景编辑器中学到的概念代码中受到教育。通过首先在视觉上向您介绍这些概念,我们相信它更容易掌握并且对代码处理不那么持怀疑态度。

2.9K30

建议大型项目用上Try Catch建议大型项目用上Try Catch

最近写的项目用Swift语法进行编写的,对于之前我们在Object-C中NSError**类型的指针标识遇到了什么错误,现在转成Swift方法直接进行throws进行抛异常。...这样我们就必须使用Do Catch进行捕获异常了,觉得苹果这样做真的挺好的。 比如我刚刚写的项目,就用上了,感觉用完顿时高大上了许多。...但是只是这样,心里面还不是十分强烈想用。 后来线上的App在双11那天晚上突然出现打不开崩溃的情况,在外面准备吃饭庆祝的强行喊回去解决问题。 回去觉得应该是那里崩溃了吧,应该也是十分的容易解决。...虽然我们平时写代码上面,不可能让所有出现异常的地方写上这样的代码。但是对着我们的经验,我们对于一眼就知道会出崩溃的地方加上,还是能让线上的应用少出很多问题的。...关于Try catch的资料可以查看下面资料: iOS捕获异常,常用的异常处理方法 Swift中错误和异常处理

84710

详解Swift和OC的混编

再看下面这张图; 739006-20160409114555218-1014353446.png      直接是截图了Xcode的界面,大家可以看到多了一个选中的这个文件,这个文件的作用   你要在...swift类型的文件中用到OC的文件时候,你就把OC的头文件加到这个 新添加的文件中,如上图,把 octestViewController.h 加到了这个文件中。...你先在你项目的 Build setting 中搜索一个 swift 进去,看图片; 739006-20160409115213343-609326727.png    看我选中的这行,这个有个头文件  ...当然 虽然你调用的是 swift类型的文件,但你是在OC文件里面写的,语法肯定也就是 OC的语法了! 二: 在 OC 项目中的混编    其实经过实践之后,发现是一模一样的。...在build setting 搜 swift 把头文件导入你的OC文件中,你要在swift文件中用OC类型文件呢,也是一样把 OC 类型文件的头文件导入桥头文件中就OK了,顺便说一句,在一些书上看到的

1.1K80

Swift: 有用的标准库全局函数

#0 // - super: NSObject // - bar: "bar" sequence() 全局sequence()函数有点晦涩,但是它是一个非常酷的函数,可让您以更好的语法编写递归函数...标准库如何实现对数组和字符串的写时复制(copy-on-write)语义的实现——在有关值类型的内存管理的文章中已经提到了这一点。...假设您想用另一个数字替换数字数组的特定部分;实现此目的的一种方法是将replaceSubrange与另一个数组一起使用: array.replaceSubrange(2...7, with: [Int]...结论 我们可以看到,尽管这些方法都不是使事情发生的必要方法,但是使用它们可以使您编写代码比以前的解决方案更易于维护,并且有时甚至可以提高性能。...译自 Useful Global Swift Functions

2.7K20

什么是2016年最值得学习的编程语言?

你可以很快地用相对少的代码构建一个应用程序,在你希望用代码实现某个你想要的功能时,没有太多的强制规则限制。...最近也想用Ruby来构建自己的个人博客。 PHP PHP是一门服务器端的脚本语言,由于易于其代码掌握而通常被认为是对初学者友好的语言,PHP入门并不难。...它是设计用来编写系统软件的,但也用来编写游戏或者是游戏引擎,桌面应用,移动应用和web应用。C++非常强大和快速,所以以至于Facebook用它开发了一些高性能的,可靠的组件。...苹果的Swift是一门设计成与Objective-C兼容的的静态语言,但它的静态类型使得他更不容易出错。...受Python的启发,Swift是想成为编程新手易于掌握的语言,也是按照能修复一些Objective-C的问题的方向设计的。

97710
领券