Android / iOS代码审核

时间:2015-05-05 16:26:32

标签: android ios code-auditing

我刚刚接到一项工作任务,以帮助审核移动应用的代码库。我不是移动应用程序程序员,虽然我多年来一直是软件开发人员,但对移动应用程序一无所知。我想知道是否有任何提示或工具可用于此代码审核。

我已经看到the replies to this older post用于Java EE应用程序,它不能应用于我的情况,因为它们主要基于使用maven来构建应用程序,在我的情况下它们使用Gradle。这些回复也是从2011年开始的,也许还有更近期的回复,我真的很感激听到。

1 个答案:

答案 0 :(得分:3)

就其本身而言,任命一个没有目标环境经验的人的事实对我来说似乎完全是胡说八道,所以我在这里质疑管理层。

我希望你知道至少这些应用程序编写的语言:可能是Android for Android&适用于iOS的Objective-C(您的问题没有提及您过去的经验涉及哪些技术)。如果没有,您只需要对注释,文件大小以及可能的一些命名约定做一些评论,与真实的审计相比,这没有什么意义。

除了编程语言之外,iOS和Android的设计方式也各不相同,具有不同的约定和范围。图案。实际上我很少知道在这两种环境中都非常优秀的人,这是有原因的:这些是​​不同的世界,每一个都可以轻松地花费你的全部时间来学习API,通用库,设计理念,解决方案对于常见问题,并了解内部工作原理。

我不知道你有多少时间执行这项任务,但我建议你学习如何在目标环境中编写基本应用程序代码,并了解关键组件。

我的做法一般是:

  • 从团队中收集一些背景信息
  • 获取来源
  • 构建应用程序&了解它正在做什么(我通常在这个阶段手绘一个屏幕流程图,以后你在代码中导航时很有用),还要注意bug,慢功能,非用户友好的东西(反馈是对团队很重要)
  • 转到源代码,检查它的宏观布局: 。查看构建脚本以查看它正在使用的外部库 。注意一般的包层次结构,检查命名是否一致,包没有重载垃圾 。通常看一下类命名:它是否一致?类名有助于弄清楚里面究竟是什么 。做一些关于文件大小的基本统计数据:它可以快速指出一些设计缺陷
  • 现在关于代码本身: 。阅读它,直到你了解它的一般工作方式(绘制技术流程图有帮助),我喜欢从app入口点开始(通常是Android中的一个活动) 。确保您在测试应用程序时发现您所阅读的内容如何实现您所看到的内容 。注意你在阅读时发现的不良编码习惯(命名,评论,它可以是任何东西:代码有多糟糕没有限制^^) 。记下不可读/过于复杂的代码(但不要花太多时间来理解它们) 。如果您注意到应用程序中的慢速功能,那么可能需要更仔细地查看这些代码 。有一个良好的睡眠,然后重新阅读所有笔记,并尝试提取有关应用程序设计的一些高级别评论

现在,特别针对Android,根据我的经验,这里是最常见的事物列表:

  • 组件生命周期处理问题(对于活动,服务,碎片等组件):症状包括设备轮换和应用程序切换导致问题
  • 线程处理问题(在UI线程上完成的事情,当它们真的应该在后台运行时)
  • 大规模的活动/服务(很多人认为创建活动/片段/服务就是体系结构所需要的 - 只有非常简单的应用才有效)。

我不会更多地了解细节,因为比我更聪明的人写了关于此的书。而且你必须编写应用程序来真正掌握这些主题:很多,所以这就是你应该开始的:代码应用程序自己,否则:1 /你的审计将无关紧要2 /团队将发现你缺乏技能很快 - 根据审计的目的,你可能很难面对他们......