AIGC 生成代码正流行,对程序员是好还是坏?
作者 | 褚杏娟
AIGC 最大的价值将表现为重塑生产力、重塑开发者工作流程。现在,AIGC 生成的代码是否可以同于生产?AIGC 会给开发领域带来什么变化?程序员该拒绝还是适应辅助编程工具? 6 月 16 日,WasmEdge 创始人和核心开发者、 Second State 联合创始人 Michael Yuan 博士,品览联合创始人 &CTO、极客时间《AI 大模型应用开发实战营》讲师彭靖田,亚马逊云科技大中华区首席架构师邓明轩做客《极客有约》,一起聊了聊 AIGC 与程序员的那些事儿。本文根据直播内容整理,大家可以点击查看完整视频(https://www.infoq.cn/video/D8fRLD8POS4Nq0PGHVrH)。
AIGC 生成的代码如何?
吴少杰:我提前给三位老师准备了一个问题。作为管理者,我们可能会遇到一些与大语言模型生成代码相关的考虑。现在我将展示一段设置好的代码,邀请三位老师进行点评。
我给大模型的描述是:
你是一个 python 工程师,写一个自动检查公司 git 代码库代码合规的脚本程序,功能包括:代码里是否包含数据库密码、调用 pylint 工具检查代码是否符合规范等,把不规范的代码文件信息发邮件给提交代码的程序员,并抄送他的直属领导。生成的结果如下:
import os
import re
import subprocess
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
# 邮件相关配置
SMTP_SERVER = 'smtp.example.com'
SMTP_PORT = 587
SMTP_USERNAME = 'your_username'
SMTP_PASSWORD = 'your_password'
SENDER_EMAIL = 'your_email@example.com'
SUBJECT = '不规范的代码文件信息'
# 检查数据库密码
def check_database_password(file_path):
with open(file_path, 'r') as file:
content = file.read()
if re.search(r'\bpassword\b', content, re.IGNORECASE):
return True
return False
# 使用 PyLint 检查代码是否符合规范
def check_code_conformance(file_path):
command = f"pylint {file_path}"
result = subprocess.run(command, shell=True, capture_output=True, text=True)
output = result.stdout
return output
# 发送邮件通知
def send_email(file_path, recipient, cc):
msg = MIMEMultipart()
msg['From'] = SENDER_EMAIL
msg['To'] = recipient
msg['Cc'] = cc
msg['Subject'] = SUBJECT
body = f"不规范的代码文件:{file_path}"
msg.attach(MIMEText(body, 'plain'))
smtp_server = smtplib.SMTP(SMTP_SERVER, SMTP_PORT)
smtp_server.starttls()
smtp_server.login(SMTP_USERNAME, SMTP_PASSWORD)
smtp_server.sendmail(SENDER_EMAIL, [recipient, cc], msg.as_string())
smtp_server.quit()
print("邮件通知已发送")
except Exception as e:
print(f"发送邮件时发生错误:{str(e)}")
# 主函数
def main():
repo_path = '/path/to/your/git/repository'
for root, dirs, files in os.walk(repo_path):
for file in files:
file_path = os.path.join(root, file)
# 检查数据库密码
if check_database_password(file_path):
send_email(file_path, RECIPIENT_EMAIL, CC_EMAIL)
# 使用 PyLint 检查代码是否符合规范