ML救援:AI开发人员工具

机器学习继续渗透到人类活动的最广泛领域,当然,软件开发等技术领域也不例外。根据AI和机器学习专家Sergey Markov的预测,他在“ AI-2019的结果 ”演讲中表示,到2020年,将会出现大量使用机器学习的开发工具。这使我想到了其中一些工具应立即在市场上出售的想法,然后它们可以帮助普通的Web开发人员用Java,Python和JS编写日常生活吗? 

展望未来,很遗憾,我要说的是,目前还没有开放的解决方案可以生成至少一些“战斗”代码。离此最近的地方是Bayou和DeepCoder,但这些项目仍太原始。在相关领域,例如自动完成,静态分析,测试生成,可以看到更大的进步。我将在文章中对此进行讨论。



Kite-Python IDE中的智能自动完成功能和内置文档


网站:https : //kite.com/
价格:完全免费。

插件可借助智能自动补全功能加快代码编写速度。风筝索引了项目的代码库,这意味着显示最相关的技巧。除了自动完成功能本身之外,如有必要,您还可以一键打开包含800多个库的代码示例的内置文档(对numpy或pandas等库最有用)。每周一次将报告发送到邮件,其中包含有关自动替换功能使用情况的统计信息。 
 

风筝建议(带有图标标记)比本地建议更为相关。带有文档的弹出窗口将告诉您可以转移到kwargs的内容

Kite过去曾向服务器发送一小段代码,出于安全原因,这并不适合许多人,但可喜! -现在,风筝放弃了这种做法,整个分析在本地进行。该插件使用起来非常友好-易于安装且无需加载系统即可快速工作。 Kite支持大多数流行的IDE:Idea,PyCharm,Sublime,Vim,VS代码,Spyder和Atom。


最重要的是:在选择中可能是最准备用于战斗的项目。我向所有使用Python编写的人推荐。

对于其他语言,也有类似的产品-支持Java的Codota或TabNine,它支持22种语言。我没有时间尝试它们,但是感觉好像Codota提供了一些保守的提示,而TabNine(用于Java)则提供了完整的代码片段,包括变量名(有时没有任何上下文),并且很准确。

DeepCode-专注于漏洞搜索的静态代码分析器


网站:https : //www.deepcode.ai/
价格:开源项目和最多30人的团队可免费使用云版本。 GitLab和BitBucket Enterprise有一个自托管选项,价格面议。

正如开发人员恰当地指出的那样,DeepCode是代码的语法。目的是帮助开发人员检测代码中的错误和漏洞。自托管的解决方案以docker容器的形式出现,通过钩子集成到版本控制系统中,并在10分钟内完成了配置。机器人也可用于检查请求请求。宣布支持Java,Python,JavaScript和TypeScript。


DeepCode建议示例

使用印象:对误报率低感到非常满意。发现的所有问题都是非常真实的,并且由于与检查质量无关的原因而没有触发(带有错误的代码未启动,不安全的代码未使用用户输入)。性能警告看起来也很合理。与FineBugs Java代码分析器或相同的PVS-Studio相比,检测到的问题数量似乎微不足道-200到2-4千。我不知道是否要考虑这一点,但实际上至少可以拆下200个,不能说大约4000个。 


机器人检查每个拉动请求

最重要的是:如果在使用棉短绒时总是因误报次数而烦恼,则应尝试使用DeepCode。这也是为开源做出贡献的一种好方法:自己为项目创建一个分支,运行测试-口袋里有几个有用的请求。

DiffBlue-Java的单元测试生成器 


网址:https 
://www.diffblue.com/价格:25人团队每月3375美元。个人使用的免费关税仍在计划中。

该产品在选择中看起来最雄心勃勃。去年是一家英国初创公司,获得了高盛(Goldman Sachs)2000万美元的投资。如果最初我在寻找可以生成用于测试的代码的东西,那么DiffBlue可以生成能够嵌入CI的代码测试。该产品具有与Spring Boot测试基础架构的良好集成。与Gradle,Maven,testng,Junit兼容。

开发人员宣布了两种操作模式: 

  • 必不可少:测试是通过方法签名生成的
  • 高级:方法主体也被考虑在内,并为代码中的每个分支生成测试。 

DiffBlue是作为CLI实用程序提供的,用于嵌入CI或作为IntelliJ IDEA的插件提供,以便在开发过程中生成测试。


DiffBlue本身会吸收类,生成固定装置和断言。
 
在实际项目中,DiffBlue被证明是模棱两可的。 

  1. . — «». , , .   Gradle . . jar' , jcover.config. c Serializable, Active Record . — 3000 (sic!), coverage 3%.
  2. 案例二,成功得多。Spring Boot上的无状态微服务。根据开发人员的说法,他们将大量时间用于支持Spring Boot应用程序。一切正常,没有错误,覆盖率从28%上升到42%,但只能按照说明进行操作。在分支机构,覆盖率仅从6%(从41%增至47%)增长了6%。这是因为许多测试是由吸气剂或吸气剂测试的。也许在高级模式下,结果会更有趣。


它也会发生。对于具有十二种公共方法和复杂逻辑的类,它原来是一个虚拟对象。

最重要的是:如果一切都按计划进行,那将会很酷而且很有意义,但是距离还有很长的路要走。0.1版显示这些家伙仍然领先。

结论


使用AI进行编程的势头越来越大,但是到目前为止,该行业仍处于发展的开始。有许多可能的应用程序:在某些情况下已经存在竞争,而在另一些情况下到目前为止仅展示单个产品。任何人都尚未实现主要且看似最明显的目标-代码本身的生成-但它已经能够提高开发速度,减少旧代码中的错误数量并防止出现新的错误。

All Articles