0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

探讨AI编写代码技术,以及提高代码质量的关键:静态代码分析工具Perforce Helix QAC & Klocwork

龙智 来源:jf_15970448 作者:jf_15970448 2024-06-05 14:10 次阅读

令软件开发人员夜不能寐的事情比比皆是。如今,他们最关心的问题不再是如何用自己喜欢的语言(C、C++、Erlang、Java 等)表达最新的算法,而是人工智能AI)。

本文中,我们将介绍AI编写代码的过程,并回答这个问题:AI会取代程序员吗?

什么是AI代码生成?

近年来,生成式AI的应用呈爆炸式增长,这主要因为现在有足够的计算能力来运行深度学习算法,而且训练机器学习模型所需的海量数据也在增加。

AI代码生成是指使用生成式AI和机器学习编写计算机代码的过程。

生成式AI编码工具正在改变软件开发过程,但这种进步也带来了不确定性。通过AI编写代码,对软件开发人员到底意味着什么?

AI编写代码的未来

生成式AI的潜力已初露端倪。AI正在改变各行各业,并有望加速创新。OpenAI最近进行的一项研究估计,生成式AI工具可能会影响47%的任务,从而大大加快软件开发的过程。

在埃文斯数据公司(Evans Data Corp)进行的一项调查中,550名软件开发人员被问及他们职业生涯中最担心的问题。其中,29%的人担心:“我和我的开发工作被AI所取代”。

美国能源部橡树岭国家实验室(U.S. Department of Energy's Oak Ridge National Laboratory)的一个研究小组对此表示赞同。到2040年,机器学习和自然语言处理技术将非常先进,能够编写更好的软件代码,而且它们会比最好的人类开发人员写得更快。

牛津大学的“未来就业”(The Future of Employment)研究警告说,随着机器学习的发展,软件工程师可能会变得计算机化,软件设计选择将通过算法进行优化。

软件开发,特别是在安全关键型行业,需要确保高质量的代码,以满足功能要求。

因此,如果AI正在开发代码,该代码应该是没有错误和问题的。这也包括软件测试中的AI,因为它能够“以人类难以企及的可靠性”检测编码错误。

如果您正在用AI编写代码,请务必使用静态代码分析器验证代码是否安全、可靠。

AI编写代码可能吗?

AI可以编写代码。

早在2015年,Andrej Karpathy 就运行了一个使用递归神经网络(Recurrent Neural Networks,RNN)生成代码的项目。他获取了GitHub的Linux存储库(所有源文件和头文件),将其组合成一个巨大的文档(超过400 MB的C代码),并用这些代码训练RNN。

以下是它产生的结果:

/*
 * If this error is set, we will need anything right after that BSD.
 */
static void action_new_function(struct s_stat_info *wb)
{
  unsigned long flags;
  int lel_idx_bit = e->edd, *sys & ~((unsigned long) *FIRST_COMPAT);
  buf[0] = 0xFFFFFFFF & (bit < < 4);
  min(inc, slist- >bytes);
  printk(KERN_WARNING "Memory allocated %02x/%02x, "
    "original MLL insteadn"),
    min(min(multi_run - s->len, max) * num_data_in),
    frame_pos, sz + first_seg);
  div_u64_w(val, inb_p);
  spin_unlock(&disk->queue_lock);
  mutex_unlock(&s->sock->mutex);
  mutex_unlock(&func->mutex);
  return disassemble(info->pending_bh);
}

static void num_serial_settings(struct tty_struct *tty)
{
  if (tty == tty)
    disable_single_st_p(dev);
  pci_disable_spool(port);
  return 0;
}

static void do_command(struct seq_file *m, void *v)
{
  int column = 32 < < (cmd[2] & 0x80);
  if (state)
    cmd = (int)(int_state ^ (in_8(&ch- >ch_flags) & Cmd) ? 2 : 1);
  else
    seq = 1;
  for (i = 0; i < 16; i++) {
    if (k & (1 < < 1))
      pipe = (in_use & UMXTHREAD_UNCCA) +
        ((count & 0x00000000fffffff8) & 0x000000f) < < 8;
    if (count == 0)
      sub(pid, ppc_md.kexec_handle, 0x20000000);
    pipe_set_bytes(i, 0);
  }
  /* Free our user pages pointer to place camera if all dash */
  subsystem_info = &of_changes[PAGE_SIZE];
  rek_controls(offset, idx, &soffset);
  /* Now we want to deliberately put it to device */
  control_check_polarity(&context, val, 0);
  for (i = 0; i < COUNTER; i++)
    seq_puts(s, "policy ");
}

AI在一夜之间就生成了代码,包括函数和函数声明。它有参数、变量、循环和正确的缩进。括号也是完成的。甚至还有注释。

但是,AI生成的代码存在语法错误。它没有跟踪变量名称。有时,变量被声明但从未使用过。还有一些时候,变量被使用了,但未定义。代码示例中的第二个函数比较了tty == tty。

生成式AI会取代程序员吗?

AI不会取代程序员。但AI已经在帮助开发人员编写代码。像ChatGPT、Github、CoPilot和OpenAI Codex这样的AI驱动的编码助手都是可以使用的工具,可以帮助嵌入式开发人员更快地编写出更好的代码。AI代码生成器现在可以快速生成高质量的代码片段,识别问题和缺陷,并对代码片段提出改进建议。当然,AI需要时间才能创建跨越几行实际的、具有生产价值的代码,而这些代码的跨度不会超过几行。

AI在不久的将来如何影响软件开发?以下是一些可能的趋势。

▎AI将不断进步

它将有效地实现任务自动化,帮助开发人员了解他们的选择。另外,它将让人类决定如何在AI无法理解的情况下进行优化。

▎AI将成为编码伙伴

软件开发人员将使用AI作为编码伙伴来编写更好的软件。这种情况如今已经出现,而且随着AI学会一次编写多行代码,这种情况将继续普及。开发人员将在集成开发环境中加入AI配对程序员工具。与人类配对编程类似,AI工具将根据提示执行编码任务,然后开发人员将审查代码。过去,这一过程需要耗费更多的人力,但AI工具可以比人类开发人员更快地完成SDLC的某些部分,从而让开发人员能够专注于更复杂的任务。

▎但程序员依然重要

程序员的真正价值不在于知道如何构建,而在于知道要构建什么。

AI还需要更长的时间才能学会如何解释每个功能的商业价值,并向您建议首先开发哪些功能。人类程序员的作用始终存在。

如果AI编写出可靠的代码会怎样?

这是一个很大的假设。大多数人都写不出可靠的代码。而AI只是一种分析大量人类编写的代码的应用程序。因此,AI不太可能写出可靠的代码。

大多数程序员都同意这一点。在CodeSignal最近的一项调查中,全球1,000名开发人员被问及他们对AI编码助手工具的使用情况。虽然81%的开发人员表示他们使用了AI驱动的编码助手,但55%的受访软件工程师表示,他们对AI生成代码的质量感到担忧。

因此,AI并不是提高代码质量的答案。

如何提高代码质量?

您现在就可以提高代码质量,但不是通过AI取代程序员,而是利用静态代码分析工具。

静态代码分析工具可以确保程序员编写的代码符合编码规则,并能够扫描代码,找出潜在的错误和安全漏洞。它还能发现在代码审查和软件测试中经常被忽略的错误,从而提高代码和软件的整体质量。

提高代码质量最简单的方法之一,就是使用静态代码分析工具。

Perforce静态代码分析工具Helix QAC和Klocwork,因提供其他工具所无法提供的准确诊断而备受推崇。使用Helix QAC和Klocwork,您将收到按风险严重程度确定优先级的编码问题诊断,以及有关如何修复代码的建议,帮助您确保代码合规,提高代码效率和质量。

- END -

文章来源:https://bit.ly/3V0921H

作者简介:

Stuart Foster,Klocwork 和 Helix QAC 产品经理,Perforce

Stuart Foster在移动和软件开发方面拥有超过 17 年的经验。他负责管理消费者应用和企业软件的产品开发。目前,他负责管理 Perforce 市场领先的代码质量管理解决方案 Klocwork 和 Helix QAC。他相信开发适合客户业务需求的产品、特性和功能,并帮助开发人员生成安全、可靠和无缺陷的代码。Stuart 拥有卡尔顿大学的信息技术、交互式多媒体和设计学士学位,以及阿冈昆应用艺术与技术学院的多媒体设计高级文凭。

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • AI
    AI
    +关注

    关注

    87

    文章

    27520

    浏览量

    265164
  • 代码
    +关注

    关注

    30

    文章

    4602

    浏览量

    67359
  • 机器学习
    +关注

    关注

    66

    文章

    8208

    浏览量

    131250
  • 代码分析
    +关注

    关注

    0

    文章

    4

    浏览量

    5621
收藏 人收藏

    评论

    相关推荐

    聚焦嵌入式开发的测试工具,确保安全合规:静态代码分析Perforce Helix QAC&;amp;Klocwork、单元测试TESSY

    与管理领域的最新趋势、工具选择以及DevSecOps实践应用等方面展开了深入探讨。 本期对话龙智资深DevSecOps顾问张鼎凯,聚焦于嵌入式开发的趋势与挑战,以及龙智嵌入式开发解决方
    的头像 发表于 07-01 14:26 115次阅读

    该如何提高代码容错率、降低代码耦合度?

    提高RT-Thread代码的容错率和降低耦合度是确保代码质量和可维护性的关键,下面列举了几种在编写
    的头像 发表于 06-26 08:10 92次阅读
    该如何<b class='flag-5'>提高</b><b class='flag-5'>代码</b>容错率、降低<b class='flag-5'>代码</b>耦合度?

    代码静态测试工具 Klocwork 2024.1版新功能解读

    Klocwork 2024.1为Perforce的持续安全和代码合规性平台Validate引入了新的功能和改进。现在,Validate的升级过程更快、更稳健、对用户更友好。您可以去除项目、优先迁移、无需服务器重启单独迁移项目、无
    的头像 发表于 04-26 10:42 241次阅读
    <b class='flag-5'>代码</b><b class='flag-5'>静态</b>测试<b class='flag-5'>工具</b> <b class='flag-5'>Klocwork</b> 2024.1版新功能解读

    代码静态测试工具 Helix QAC 2024.1版新功能解读

    Helix QAC 2024.1改进了对C++20和C23语言特性的支持,并增加了分析使用多个编译器的项目的新功能。此外,Validate增强了对于搜索功能和角色权限的用户体验,并且包括
    的头像 发表于 04-25 12:32 259次阅读
    <b class='flag-5'>代码</b><b class='flag-5'>静态</b>测试<b class='flag-5'>工具</b> <b class='flag-5'>Helix</b> <b class='flag-5'>QAC</b> 2024.1版新功能解读

    Klocwork—符合功能安全要求的自动化静态测试工具

    KlocworkPerforce公司产品,主要用于C、C++、C#、Java、 python和Kotlin代码的自动化静态分析工作,可以提
    的头像 发表于 01-16 16:26 365次阅读
    <b class='flag-5'>Klocwork</b>—符合功能安全要求的自动化<b class='flag-5'>静态</b>测试<b class='flag-5'>工具</b>

    代码静态测试工具Helix QAC 2023.4新发布

    Helix QAC 2023.4 为新的 MISRA C++:2023 指南推出了 100% MISRA C++:2023® 规则覆盖率。此版本还包括扩展的 C++20 语言支持、数据流分析的性能改进
    的头像 发表于 01-13 12:25 243次阅读
    <b class='flag-5'>代码</b><b class='flag-5'>静态</b>测试<b class='flag-5'>工具</b><b class='flag-5'>Helix</b> <b class='flag-5'>QAC</b> 2023.4新发布

    Helix QAC—软件静态测试工具

    Helix QACPerforce公司(原PRQA公司)产品,主要用于C/C++代码的自动化静态分析
    的头像 发表于 01-10 17:35 387次阅读
    <b class='flag-5'>Helix</b> <b class='flag-5'>QAC</b>—软件<b class='flag-5'>静态</b>测试<b class='flag-5'>工具</b>

    静态代码分析工具Helix QAC 2023.3:将100%覆盖MISRA C++:2023®规则

    Helix QAC 2023.3预计将于2023年第四季度发布的新MISRA C++®指南,将100%覆盖MISRA C++:2023®规则。 此外,此版本扩展了对C++20语言支持,并改进了Perforce Validate平
    的头像 发表于 11-08 18:37 322次阅读
    <b class='flag-5'>静态</b><b class='flag-5'>代码</b><b class='flag-5'>分析</b><b class='flag-5'>工具</b><b class='flag-5'>Helix</b> <b class='flag-5'>QAC</b> 2023.3:将100%覆盖MISRA C++:2023®规则

    如何编写高性能的Rust代码

    为了最大限度地提高Rust应用程序的性能,你需要了解支持代码的底层硬件架构,如何优化算法和数据结构,以及如何对代码进行配置和基准测试。在本文中,我们将简要介绍这些主题,希望能更好地理解
    的头像 发表于 11-03 14:28 557次阅读
    如何<b class='flag-5'>编写</b>高性能的Rust<b class='flag-5'>代码</b>

    分享一款不错的嵌入式静态代码扫描工具

    之前给大家分享过嵌入式开发常用的代码静态分析工具,比如:PC-lint、LDRA、VectorCAST等。
    的头像 发表于 10-16 15:39 1286次阅读
    分享一款不错的嵌入式<b class='flag-5'>静态</b><b class='flag-5'>代码</b>扫描<b class='flag-5'>工具</b>

    静态代码块、构造代码块、构造函数及普通代码块的执行顺序

    代码块)使用static关键字和{}声明的代码块: public class CodeBlock { static { System.out. println ( "静态
    的头像 发表于 10-09 15:40 588次阅读
    <b class='flag-5'>静态</b><b class='flag-5'>代码</b>块、构造<b class='flag-5'>代码</b>块、构造函数及普通<b class='flag-5'>代码</b>块的执行顺序

    静态代码分析工具Helix QAC 2023.2: 提供 100% 的 MISRA C:2012 和 MISRA C:2023 规则覆盖率

    本还包括改进的 C23 语言支持、对Validate平台的改进以及 Helix QAC 和 Validate 的集成,以及其他功能改进。
    的头像 发表于 07-31 22:53 872次阅读
    <b class='flag-5'>静态</b><b class='flag-5'>代码</b><b class='flag-5'>分析</b>器<b class='flag-5'>工具</b><b class='flag-5'>Helix</b> <b class='flag-5'>QAC</b> 2023.2: 提供 100% 的 MISRA C:2012 和 MISRA C:2023 规则覆盖率

    什么是ISO 9001?

    ISO 9001是Perforce静态代码分析Helix QAC 和 
    的头像 发表于 07-21 15:34 1412次阅读
    什么是ISO 9001?

    什么是静态代码分析静态代码分析概述

    静态分析可帮助面临压力的开发团队。高质量的版本需要按时交付。需要满足编码和合规性标准。错误不是一种选择。 这就是开发团队使用静态分析
    的头像 发表于 07-19 12:09 1277次阅读
    什么是<b class='flag-5'>静态</b><b class='flag-5'>代码</b><b class='flag-5'>分析</b>?<b class='flag-5'>静态</b><b class='flag-5'>代码</b><b class='flag-5'>分析</b>概述

    如何应用编码标准和自动化工具 提高代码质量

    本文将介绍如何应用编码标准和自动化工具提高代码质量
    的头像 发表于 07-08 10:59 341次阅读
    如何应用编码标准和自动化<b class='flag-5'>工具</b> <b class='flag-5'>提高</b><b class='flag-5'>代码</b><b class='flag-5'>质量</b>