V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
drymonfidelia
V2EX  ›  C#

Cursor 生成的代码有个大坑,排查了一晚上才找出原因

  •  1
     
  •   drymonfidelia · 2 天前 · 1284 次点击

    我让它判断输入里只能有字母和数字,其它输入要拦截

    结果上生产环境后经常出现奇怪的输入内容没拦截掉

    "测试".All(x=>char.IsLetterOrDigit(x)) 
    

    最后发现原因出在 Cursor 生成的这行代码输入中文结果居然是 ture

    混在一堆代码里面完全想不到这里能出问题,我手写的话根本不知道 C#有这个函数就不会出问题

    C#这起得啥名太具迷惑性了,和 Python 的 rstrip 一样,rstrip 我是没用错过,但看过不止一个开源项目里面用错了

    12 条回复    2025-01-19 15:38:58 +08:00
    AoEiuV020JP
        1
    AoEiuV020JP  
       2 天前
    这个,正常, 目前 AI 写的代码还没到不需要 review 的水平,正相反,每一行都要看过一眼,
    csys
        2
    csys  
       2 天前 via Android
    使用 LLM 写代码节省出来的时间,是用来给你写测试验证代码功能的
    drymonfidelia
        3
    drymonfidelia  
    OP
       2 天前
    @AoEiuV020JP AI 用的冷门函数有些时候 review 也还挺难看出问题,像这个情况看起来还是那回事实际上完全用不了
    AoEiuV020JP
        4
    AoEiuV020JP  
       2 天前
    @drymonfidelia #3 那这种情况属于自己写的话也得反复斟酌来回查文档甚至测试几个 api,
    不如直接让 AI 把单元测试搞出来,这种功能明确的最适合让 AI 写测试了,
    drymonfidelia
        5
    drymonfidelia  
    OP
       2 天前
    @AoEiuV020JP 自己写的话我会用正则,不会用这个很冷门的内置函数
    AI 估计一看这个函数名字 IsLetterOrDigit ,我的要求是 只能有字母和数字 刚好符合就用了,结果这个函数根本不是这么用的
    Anton
        6
    Anton  
       2 天前
    hhhh 老哥惨,这函数没用过的话真发现不了问题
    echohey
        7
    echohey  
       2 天前
    怎么没让 cursor 给你生成单测?
    akira
        8
    akira  
       2 天前
    测试代码呢。。。
    wweerrgtc
        9
    wweerrgtc  
       2 天前
    把代码复制出来 让 gpt 来 review
    drymonfidelia
        10
    drymonfidelia  
    OP
       2 天前
    @wweerrgtc 试过了,除非你明确告诉 GPT 哪一行不符合预期,不然 GPT 完全找不出
    SenLief
        11
    SenLief  
       2 天前
    ai 生成的一定要写测试
    meteora0tkvo
        12
    meteora0tkvo  
       1 天前
    正常,ai 生成的代码也是有 bug 的,所以自己本身要懂代码才能让 ai 生成,压根就不是网传的不懂代码也能利用 ai 写代码
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2806 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 14:45 · PVG 22:45 · LAX 06:45 · JFK 09:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.