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
    +关注

    关注

    91

    文章

    40936

    浏览量

    302515
  • 代码
    +关注

    关注

    30

    文章

    4975

    浏览量

    74349
  • 机器学习
    +关注

    关注

    67

    文章

    8561

    浏览量

    137208
  • 代码分析
    +关注

    关注

    0

    文章

    13

    浏览量

    5971
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Perforce 静态分析现已正式支持 Rust语言!

    您是否正计划通过 Rust 编程来提升内存安全性,却又担心它无法覆盖所有的安全漏洞?Perforce QACKlocwork 现在已支持分析 Rust
    的头像 发表于 04-08 15:38 411次阅读
    <b class='flag-5'>Perforce</b> <b class='flag-5'>静态</b><b class='flag-5'>分析</b>现已正式支持 Rust语言!

    AI 辅助代码修复:嵌入式软件开发的突破性进展

    的 DevOps 流程。目前Perforce QAC最新版本已经提供AI辅助代码修复功能,如需试用,请联系北汇信息。
    的头像 发表于 03-26 11:19 1590次阅读
    <b class='flag-5'>AI</b> 辅助<b class='flag-5'>代码</b>修复:嵌入式软件开发的突破性进展

    C语言安全编码指南:MISRA C、CERT C、CWE 与 C Secure 标准对比与Perforce QAC应用详解

    如何编写真正安全的C语言代码?指南涵盖MISRA C、CERT、CWE等国际安全编码标准对比,以及如何借助Perforce QAC自动检测漏
    的头像 发表于 01-26 17:38 1064次阅读
    C语言安全编码指南:MISRA C、CERT C、CWE 与 C Secure 标准对比与<b class='flag-5'>Perforce</b> <b class='flag-5'>QAC</b>应用详解

    Perforce QAC 2025.4 的新特性

    Code 扩展也已更新,为桌面用户提供了 AI 辅助的代码修复功能,利用 QAC质量分析结果为建议的修复提供信息,从而提供更快速的查
    的头像 发表于 12-30 13:50 689次阅读
    <b class='flag-5'>Perforce</b> <b class='flag-5'>QAC</b> 2025.4 的新特性

    汽车网络安全开发语言选型指南:C/C++/Rust/Java等主流语言对比+Perforce QAC/Klocwork工具支持

    汽车网络安全如何选编程语言?C、C++、Rust、Java……谁更适合AUTOSAR、ISO/SAE 21434?一文了解8种主流语言的优劣与适用场景,以及Perforce QAC/Klocw
    的头像 发表于 12-26 11:13 623次阅读
    汽车网络安全开发语言选型指南:C/C++/Rust/Java等主流语言对比+<b class='flag-5'>Perforce</b> <b class='flag-5'>QAC</b>/<b class='flag-5'>Klocwork</b><b class='flag-5'>工具</b>支持

    分析嵌入式软件代码的漏洞-代码注入

    ,寻找目标的知识基础以及如何有效地进行这些工作已经积累了丰富的经验。 这里使用的关键技术是污染分析或危险信息流分析。 这些工具通过首先识别潜
    发表于 12-22 12:53

    HarmonyOS应用代码混淆技术方案

    代码混淆技术可以增加代码的复杂性和模糊性,从而提高攻击者分析代码的难度。
    的头像 发表于 11-21 16:17 5712次阅读
    HarmonyOS应用<b class='flag-5'>代码</b>混淆<b class='flag-5'>技术</b>方案

    什么是CVE?如何通过SAST/静态分析工具Perforce QACKlocwork应对CVE?

    本文将为您详解什么是CVE、CVE标识符的作用,厘清CVE与CWE、CVSS的区别,介绍CVE清单内容,并说明如何借助合适的静态分析工具(如Perforce
    的头像 发表于 10-31 14:24 704次阅读
    什么是CVE?如何通过SAST/<b class='flag-5'>静态</b><b class='flag-5'>分析</b><b class='flag-5'>工具</b><b class='flag-5'>Perforce</b> <b class='flag-5'>QAC</b> 和 <b class='flag-5'>Klocwork</b>应对CVE?

    C/C++代码静态测试工具Perforce QAC 2025.3的新特性

    Perforce QAC 2025.3 通过更新结果存储处理提供了性能改进,可以显著减少总分析时间,具体取决于项目结构和分析所使用的硬件设备。此版本还增强了对 QNX 8.0 编译器的
    的头像 发表于 10-13 18:11 709次阅读
    C/C++<b class='flag-5'>代码</b><b class='flag-5'>静态</b>测试<b class='flag-5'>工具</b><b class='flag-5'>Perforce</b> <b class='flag-5'>QAC</b> 2025.3的新特性

    汽车软件团队必看:基于静态代码分析工具Perforce QAC的ISO 26262合规实践

    ISO 26262合规指南,从ASIL分级到工具落地,手把手教你用静态代码分析Perforce QAC
    的头像 发表于 08-07 17:33 1298次阅读
    汽车软件团队必看:基于<b class='flag-5'>静态</b><b class='flag-5'>代码</b><b class='flag-5'>分析</b><b class='flag-5'>工具</b><b class='flag-5'>Perforce</b> <b class='flag-5'>QAC</b>的ISO 26262合规实践

    HarmonyOS AI辅助编程工具(CodeGenie)代码续写

    利用AI大模型分析并理解开发者在代码编辑区的上下文信息或自然语言描述信息,智能生成符合上下文的ArkTS或C++代码片段。 一、使用约束 建议在编辑区内已有较丰富上下文,能够使模型对编
    发表于 07-15 16:15

    Perforce QAC产品简介:面向C/C++的静态代码分析工具(已通过SO 26262认证)

    Perforce QAC专为C/C++开发者打造,支持多种编码规范、功能安全标准(ISO 26262)等,广泛用于汽车、医疗、嵌入式开发领域,可帮助快速识别关键缺陷、提升代码
    的头像 发表于 07-10 15:57 1440次阅读
    <b class='flag-5'>Perforce</b> <b class='flag-5'>QAC</b>产品简介:面向C/C++的<b class='flag-5'>静态</b><b class='flag-5'>代码</b><b class='flag-5'>分析</b><b class='flag-5'>工具</b>(已通过SO 26262认证)

    2025年汽车行业趋势解读:AI在汽车软件开发中的应用、代码安全挑战等(附Perforce QAC / Klocwork工具推荐)

    随着AI技术深入嵌入式系统,汽车软件已成为智能出行的核心要素。根据Perforce发布的《2025年汽车软件开发现状报告》,全球650多名汽车从业者共同揭示了AI在汽车行业的演进趋势、
    的头像 发表于 06-13 15:03 1708次阅读
    2025年汽车行业趋势解读:<b class='flag-5'>AI</b>在汽车软件开发中的应用、<b class='flag-5'>代码</b>安全挑战等(附<b class='flag-5'>Perforce</b> <b class='flag-5'>QAC</b> / <b class='flag-5'>Klocwork</b><b class='flag-5'>工具</b>推荐)

    Helix QAC 2025.1 重磅发布!MISRA C:2025® 100%覆盖

    Helix QAC 2025.1新增功能 Helix QAC 2025.1实现了对新版MISRA C:2025®标准的 100% 覆盖,并提供对应的合规模块。此版本还扩展了对 CERT
    的头像 发表于 05-13 16:48 1576次阅读
    <b class='flag-5'>Helix</b> <b class='flag-5'>QAC</b> 2025.1 重磅发布!MISRA C:2025® 100%覆盖

    代码静态测试工具Perforce QAC 2025.1新特性

    Perforce QAC 2025.1实现了对新发布的MISRA C:2025®标准的100%覆盖,并提供了对应的新合规模块。该版本还扩展了对CERT C Level 1建议的覆盖范围,改进了与持续
    的头像 发表于 04-21 15:14 1177次阅读
    <b class='flag-5'>代码</b><b class='flag-5'>静态</b>测试<b class='flag-5'>工具</b><b class='flag-5'>Perforce</b> <b class='flag-5'>QAC</b> 2025.1新特性