mirror of
https://github.com/ChinaRan0/DeepSeekSelfTool.git
synced 2025-07-09 16:03:52 +00:00
Add files via upload
This commit is contained in:
parent
20cddc05f0
commit
3d4f3c1e6c
@ -398,21 +398,23 @@ class TranslationThread(QThread):
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
self.translation_complete.emit(f"翻译错误: {str(e)}")
|
self.translation_complete.emit(f"翻译错误: {str(e)}")
|
||||||
|
|
||||||
|
|
||||||
class SourceCodeAuditThread(QThread):
|
class SourceCodeAuditThread(QThread):
|
||||||
audit_complete = pyqtSignal(str)
|
audit_complete = pyqtSignal(str)
|
||||||
progress_updated = pyqtSignal(int)
|
progress_updated = pyqtSignal(int)
|
||||||
|
|
||||||
def __init__(self, files, parent=None): # 修改构造函数
|
def __init__(self, files, parent=None):
|
||||||
super().__init__(parent) # 调用父类构造函数
|
super().__init__(parent)
|
||||||
self.files = files # 保存文件列表
|
self.files = files
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
audit_results = []
|
|
||||||
total_files = len(self.files)
|
total_files = len(self.files)
|
||||||
|
total_steps = total_files + 2 # 总步骤 = 文件数 + 2
|
||||||
|
audit_results = []
|
||||||
|
|
||||||
|
# ================= 阶段1:处理所有文件 =================
|
||||||
for i, file_path in enumerate(self.files):
|
for i, file_path in enumerate(self.files):
|
||||||
try:
|
try:
|
||||||
# 文件读取异常处理
|
# 文件读取
|
||||||
try:
|
try:
|
||||||
with open(file_path, 'r', encoding='utf-8', errors='ignore') as f:
|
with open(file_path, 'r', encoding='utf-8', errors='ignore') as f:
|
||||||
content = f.read()
|
content = f.read()
|
||||||
@ -420,10 +422,12 @@ class SourceCodeAuditThread(QThread):
|
|||||||
audit_results.append(f"【文件读取失败】{os.path.basename(file_path)}\n错误原因:{str(e)}")
|
audit_results.append(f"【文件读取失败】{os.path.basename(file_path)}\n错误原因:{str(e)}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
# 进度更新(不受后续处理影响)
|
# 更新进度(每个文件占1步)
|
||||||
self.progress_updated.emit(int((i+1)/total_files*100))
|
current_step = i + 1
|
||||||
|
progress = int( (current_step / total_steps) * 100 )
|
||||||
|
self.progress_updated.emit(progress)
|
||||||
|
|
||||||
# API请求异常处理
|
# API请求
|
||||||
try:
|
try:
|
||||||
headers = {
|
headers = {
|
||||||
"Authorization": f"Bearer {DEEPSEEK_API_KEY}",
|
"Authorization": f"Bearer {DEEPSEEK_API_KEY}",
|
||||||
@ -439,10 +443,10 @@ class SourceCodeAuditThread(QThread):
|
|||||||
- 位置行号:
|
- 位置行号:
|
||||||
- 修复建议:
|
- 修复建议:
|
||||||
4.如果不存在漏洞,则不输出
|
4.如果不存在漏洞,则不输出
|
||||||
5.忽略API请求失败
|
5.忽略API请求失败,不输出
|
||||||
文件内容:
|
文件内容:
|
||||||
{content[:3000]}"""
|
{content[:3000]}""" # 限制每个文件内容长度
|
||||||
|
|
||||||
payload = {
|
payload = {
|
||||||
"model": "deepseek-chat",
|
"model": "deepseek-chat",
|
||||||
"messages": [{"role": "user", "content": prompt}],
|
"messages": [{"role": "user", "content": prompt}],
|
||||||
@ -477,13 +481,16 @@ class SourceCodeAuditThread(QThread):
|
|||||||
f"错误详情:{str(e)}"
|
f"错误详情:{str(e)}"
|
||||||
)
|
)
|
||||||
|
|
||||||
# 最终结果处理(保护汇总阶段)
|
# ================= 阶段2:结果汇总 =================
|
||||||
try:
|
try:
|
||||||
|
# 更新进度到 N+1 步(汇总开始)
|
||||||
|
self.progress_updated.emit( int( (total_files + 1) / total_steps * 100 ) )
|
||||||
|
|
||||||
|
# 生成汇总结果
|
||||||
if len(audit_results) == 0:
|
if len(audit_results) == 0:
|
||||||
final_result = "⚠️ 所有文件处理均失败,请检查网络连接和API密钥"
|
final_result = "⚠️ 所有文件处理均失败,请检查网络连接和API密钥"
|
||||||
else:
|
else:
|
||||||
audit_results_str = '\n'.join(audit_results)
|
audit_results_str = '\n'.join(audit_results)
|
||||||
|
|
||||||
final_prompt = f"""请综合以下审计结果,按危险等级分类整理:
|
final_prompt = f"""请综合以下审计结果,按危险等级分类整理:
|
||||||
{audit_results_str}
|
{audit_results_str}
|
||||||
|
|
||||||
@ -491,8 +498,8 @@ class SourceCodeAuditThread(QThread):
|
|||||||
1. 按【高危】【中危】【低危】三级分类
|
1. 按【高危】【中危】【低危】三级分类
|
||||||
2. 每个漏洞注明文件名和行号
|
2. 每个漏洞注明文件名和行号
|
||||||
3. 同类漏洞合并显示
|
3. 同类漏洞合并显示
|
||||||
4. 使用精简的Markdown格式"""
|
4. 不使用markdown格式,直接输出文本"""
|
||||||
|
|
||||||
payload = {
|
payload = {
|
||||||
"model": "deepseek-chat",
|
"model": "deepseek-chat",
|
||||||
"messages": [{"role": "user", "content": final_prompt}],
|
"messages": [{"role": "user", "content": final_prompt}],
|
||||||
@ -516,7 +523,10 @@ class SourceCodeAuditThread(QThread):
|
|||||||
+ f"\n\n汇总错误:{str(e)}"
|
+ f"\n\n汇总错误:{str(e)}"
|
||||||
)
|
)
|
||||||
|
|
||||||
self.audit_complete.emit(final_result)
|
# ================= 阶段3:最终提交 =================
|
||||||
|
# 强制进度到100%后才发送结果
|
||||||
|
self.progress_updated.emit(100) # 最后一步
|
||||||
|
self.audit_complete.emit(final_result) # 此时必定100%
|
||||||
|
|
||||||
class CyberSecurityApp(QMainWindow):
|
class CyberSecurityApp(QMainWindow):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
@ -1098,7 +1108,7 @@ class CyberSecurityApp(QMainWindow):
|
|||||||
return
|
return
|
||||||
|
|
||||||
self.btn_audit.setEnabled(False)
|
self.btn_audit.setEnabled(False)
|
||||||
self.audit_result.setPlainText("开始审计(到达100%后请等待最后一个文件完成)...")
|
self.audit_result.setPlainText("开始审计...")
|
||||||
|
|
||||||
self.audit_thread = SourceCodeAuditThread(self.audit_files, self) # 添加 self 作为 parent
|
self.audit_thread = SourceCodeAuditThread(self.audit_files, self) # 添加 self 作为 parent
|
||||||
self.audit_thread.audit_complete.connect(self.show_audit_result)
|
self.audit_thread.audit_complete.connect(self.show_audit_result)
|
||||||
@ -1138,4 +1148,4 @@ if __name__ == '__main__':
|
|||||||
|
|
||||||
window = CyberSecurityApp()
|
window = CyberSecurityApp()
|
||||||
window.show()
|
window.show()
|
||||||
sys.exit(app.exec_())
|
sys.exit(app.exec_())
|
Loading…
x
Reference in New Issue
Block a user