【实习】华为实习最终总结
由于个人安排原因,且已完成一开始分配的MinTP项目开源的任务,所以在十月底正式结束为期四个多月的实习。6.25~10.31
任务下发
一入职就接到了内部项目MinTP的开源任务,需要将内部代码开源到统一互连社区。
快速熟悉项目并参与覆盖率补全
为了快速熟悉项目,我申请到了开发权限后,就开始阅读单元测试和模糊测试相关的代码,并结合项目WIKI迅速熟悉项目功能,特别是项目的适用范围和API。恰巧此时由于新更新了一批代码,为项目增加了新的功能,而测试代码尚未及时补充,因此我参与主导了增量开发测试代码。最终达到了80%的增量覆盖率,符合开发要求。
在开发过程中,我们遇到了环境问题,甚至用坏了一台云服务器,但最后我们还是通过使用虚拟机和编译替换成特定linux内核完成了测试环境的搭建。
开源探索
实际上由于这是我所在部门第一次开源项目,并且这个项目实际上已经有源码随着已经开源的鸿蒙内核代码开源出去了,导致对于开源合规和代码外传的道路探索上出现了一些阻碍:
作为公司的商业产品,代码外传必须脱密、合规和保质保量。因此我与部门开源负责人对接需求,参照开源评审文档,协调开源SE、法务、专家等角色对开源代码包作出开源的适配更新。利用内部通讯软件的一键找人、拉群、拉电话和拉会议的功能,提高沟通协调的效率。
不过经过最后的协商和讨论后,我们最还还是决定直接把代码手抄出去就行,不需要重复审批。
为此经过一个月的时间,我通过将代码手抄,再传回内网,上传自己的代码仓和主分支进行差异对比,排除抄错的地方,以及去除掉内网特有的库,成功把代码抄到外网环境,并借用公司的外网服务器搭建qemu测试环境,成功完成项目编译和覆盖率测试报告的产出。
资源探索
项目开发与维护
代码仓
华为内部有自己的代码仓,里面也提供了代码托管、CI、流水线、代码检视打分和合并等功能保证代码的高质量开发。
至于本地代码仓的管理,则依然使用git,我经手的项目的工作流遵循的是fork工作流,然后为了保持commit的整洁性,每一次合并请求只携带一个commit。至于如何实现,有很多种方式,可以rebase,但是我使用了更简单的git rest --soft HEAD~1指令,软回退到上一条commit
代码差异对比
非常好用的一项功能,不论是本地vscode的git插件提供的,还是代码仓网站提供的,都非常好用,可以清楚的看出本次提交或者合并修改了代码的哪些地方,方便检查错误,防止错误提交,以及对他人的提交进行评论
代码检视和评论
实际上我有时候还是会不小心提交一些问题代码上去,好在有代码检视和评论功能,其它维护代码仓的同事看到之后就能给我评论代码并指出问题,让我可以很快地定位并解决问题
AI资源
我组长告诉我说公司还是挺鼓励用AI协作开发的,就我这几个月在公司内找到的信息安全的AI资源,我就找到了四大块
- AI平台网站
公司内网有一个网站,集成了很多主流AI,一部分是部署在公司内网的完全安全的AI大模型,包括DEEPSEEK等,另一部分则是走审计但调用外部API的不安全AI大模型,包括chatGPT5,网站不错,但是有时候会抽风,人多的时候还要排队很久 - 员工助手
华为内部自研的AI员工软件,能够查询内部的文档和网站,包括各种内部博客。也能用它来查人。办公很好用,但是作为AI,感觉不是很聪明。 - AI机器人员工
有人在内部通讯软件开发了一个AI员工,可以和它聊天,也可以让它帮忙识别图片文字和p图,其它功能我尚未使用过 - Vscode的CodeMate插件
华为有华为版的vscode和内部的插件市场,里面就有CodeMate,接入了部分AI模型,也可用于辅助编程
老带新
在我入职差不多一个多月后,我们小组又入职了一名实习生,恰巧当时同事都比较忙,回他消息要好久,我就帮他快速适应了一下我们的开发流程和内部通讯软件。
关于开发流程,就包括怎么fork仓库,怎么按预提交钩子填写commit信息,怎么合入代码到开发分支,怎么选择检视人和合并人。