开发人员的私人助手:亚马逊 CodeWhisperer
背景
随着大语言模型的兴起,亚马逊 CodeWhisperer 也被更多开发者用于平时的开发,whisperer 意为低语者,我们可以将之理解为:当我们在 coding 时,CodeWhisperer 像一个经验丰富的前辈一样,在我们耳边辅助,帮我们快速完成我们的开发任务。本文介绍我如何使用 CodeWhisperer,协助我快速高效的完成日常开发工作。
使用场景
场景一:根据描述推荐相应的代码
日常工作中,我们需要一些时间转换的公共函数,CodeWhisperer 可以根据我们的描述,给出几种推荐代码供我们选择,tab 键即可采用代码,eg:我们需要将时间格式转换为 str 格式:
场景二:针对特定的函数生成对应的单元测试
在开发过程中,开发为了保证自己代码的质量,会写相应的测试用例,这个过程会耗费大量的时间,我们针对具体的方法生成相应的测试用例。
场景三:根据函数名,推荐相应的代码片段
eg:异步获取百度网页的 html,并且给出几种选择,允许用户选择自己想要的代码。但有个问题,自动导入的 aiohttp 的位置应该在注释上方,需要手动调整一下。
场景四:针对文件进行代码安全扫描,寻找代码的问题
针对上述代码进行安全扫描,我们可以针对性的进行解决。
详细的扫描结果如下,检测出函数 add_two_numbers 的任意函数执行安全漏洞(并给出对应的 CWE 号),datetime 未 import,aiohttp 未安装等问题,当我们在修改代码的过程中,会进行实时扫描。但目前的扫描依然存在一些问题,我们将函数名中的 baidu 故意修改为 badiu,这个操作并不会影响正常的功能,但其实是可能会对后续造成一些隐患的,扫描程序并未扫描出该单词的问题,需要进一步完善。
不足及建议
在日常使用过程中,CodeWhisperer 确实对平时的开发过程有所帮助,但也存在一些需要改进的地方,下面逐一列举:
目前对中文的支持度不够,很多中文描述,模型并不能给出代码推荐;
函数的边界条件考虑不足,这也是我们平时容易踩坑的地方,比如在场景一中,当入参是非 datetime 格式时,会抛出异常;
功能需要完善,想要对话式的进行代码逐步完善,对代码进行改写(命名规范修改或 sql 优化等),对代码生成相应的注释等等。
虽然目前 CodeWhisperer 确实有待改进,但是我们合理的使用,也能提高工作效率,让我们期待 CodeWhisperer 更加完善,成为一个优秀的工具。
版权声明: 本文为 InfoQ 作者【阿呆】的原创文章。
原文链接:【http://xie.infoq.cn/article/8bcfdaa660ed25eb2970bb3ae】。文章转载请联系作者。
评论