你是一个 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'))
try:
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 检查代码是否符合规范
pylint_output = check_code_conformance(file_path)
if "Your code has been rated at" not in pylint_output:
send_email(file_path, RECIPIENT_EMAIL, CC_EMAIL)
if __name__ == '__main__':
main()
这是一个用大语言模型生成的代码,你觉得如何?
实际上,随着越来越多的开发人员在软件开发中使用大语言模型,业内已经达成一种共识,就是AI 编程依赖于Prompt。Prompt 写得越好,效率就会越高。因此,也被冠以当前程序员需要学习的一项技能。
而一个优秀的大型模型或使用大型模型生成良好代码的最佳实践,往往要经过多轮问询、逐步完善。有人做过一个小实验,使用 GPT-4 完整地生成了一个开源项目,目标是进行完整的双语电子书翻译。这个项目的整体代码库可能有几千行,完全是由 GPT-4 生成的,但是经过了许多轮的对话。而且大型语言模型的多轮对话会受限于容量,可能只有几十KB,因此当面对复杂的项目,或者一个由 10 人或 20 人组成的团队时,其容量可能远远不够。
此外,因为AI 编程依赖于Prompt,所以也意味着代码质量存在极大的不确定性。与传统编程过程中通过编程语言调用特定的 API 不同,AI 编程需要开发者通过提示词让大模型理解开发需求,这就像产品经理与程序员之间的沟通一样,信息量越丰富,对方的理解就越深入。百度 CEO 李彦宏曾经谈及提示词和智能涌现,“大模型本身的能力放在那,谁能把它用好完全靠提示词来决定。提示词写得越好,智能涌现的能力就越多,反馈的结果就更有价值。提示词不好,出来的东西就是一本正经胡说八道。”这种代码质量的不确定性显然与追求结果确定性和计算准确性的企业级应用背道而驰。而代码质量的重要性不言而喻。如果你的代码质量较高,那它将更容易理解,生成代码的可用性也会更高。
诚然,大语言模型用以生成代码虽然仍然存在这样那样的局限,但能够引起软件开发从业者如此程度的关注,其背后恰恰反映出今天软件开发行业所面临的挑战是多么严峻,进而催生出整个行业对于软件开发范式变革的迫切需求。因此除了GPT-4,近年来方兴未艾的低代码、全栈式全自动开发也立足于通过AI技术为软件开发团队带来生产力提升,从而改变传统的软件开发范式,解决行业当前面临的诸多痛点。
其中,作为全栈式全自动开发的代表,飞算科技于2020年发布了全球首款全栈式全自动开发工具——SoFlu 软件机器人,通过自动化、标准化和工具化,改变传统软件工程生产范式,帮助企业实现全链条 IT 生产力提升。
SoFlu 软件机器人基于“业务即图,图即代码”的核心理念打造,提供 Java 可视化开发及执行日志、丰富的组件库、仿真测试等核心技术工具,帮助开发者自动完成包括前端开发、后端开发、测试、运维在内的全栈式软件开发工作,真正实现“软件开发,十倍提效”,大大降低企业开发成本。
近日,SoFlu 软件机器人全新解锁AI功能,重磅推出慧函数(FuncGPT )AI生成器。作为飞算SoFlu软件机器人的一个重要组成部分,慧函数(FuncGPT )AI生成器支持所有类型函数创建,采用代码编写最佳实践及大规模机器联合训练的方式,致力于通过AIGF赋能软件开发,为软件开发者提供全栈式全流程软件开发的最佳体验,以推动软件工程变革。
它具备以下特性:
1、自然语言:通过自然语言即可生成函数,降低软件开发门槛。
2、秒级函数开发:全自动秒级开发函数,秒级完成,效率千倍提升。
3、一站式函数开发应用:函数生成即可直接应用,效率、安全有保障。
4、质量可靠:生成的函数代码符合业界规范、具备良好的可读性,符合最优解。
5、灵活生成:可以根据开发人员的具体需求生成并支持调整和修改。
相较于AIGC 编程,SoFlu软件机器人在 GPT-4 的核心局限性问题上也能够给出令人满意的答案。
专业性方面,除了提供的通用性组件和模型,用户和厂商可以共同基于自身长期积累的大量行业和业务 know-how,搭建个性化组件和模型并进行持续迭代,从而产出最贴近业务需求的应用。
可靠性方面,相比于具备高度不确定性的 GPT-4,SoFlu软件机器人的重要特性即是现实软件开发的标准化,从“人治”到“法治”,对人为变量进行最大限度约束,确保产品质量高度可靠。
代码质量方面,SoFlu软件机器人中所有封装组件均需经含超3000条检验规则的代码质量检测工具检查。同时,JAR包均为经漏洞扫描的保证稳定安全。开发项目导出的源代码,亦能通过代码规范和漏洞扫描。此外,内置一系列基于AI的开发、测试、产品质量分析和安全审核的功能,可在整个应用程序开发生命周期提供“专家级”帮助。针对整个应用开发过程也有细粒度的权限管理,通过项目资产安全管理机制严格管控项目资产的安全并保证信息安全。同时还有审计日志、管理报表等功能。
安全性方面,SoFlu软件机器人允许客户根据需求灵活选择代码的存储和部署方式,私有化部署的支持能够从根本上打消客户对于安全性和知识产权的顾虑。
无论是GPT-4,还是SoFlu 软件机器人,其目标绝不是让程序员丢掉“饭碗”,而是将开发者从日常简单重复的“写代码”中抽离出来,能够有时间站在更高的角度深入思考问题,从“程序员”变成“架构师”,从“写代码”变成“设计程序”,彻底释放每个开发者的创新潜能。
SoFlu 软件机器人试用申请:http://feisuanyz.mikecrm.com/9dW4GeZ