2025QECon全球软件质量效能大会:基于 DeepSeek 的代码质量改进_第1页
2025QECon全球软件质量效能大会:基于 DeepSeek 的代码质量改进_第2页
2025QECon全球软件质量效能大会:基于 DeepSeek 的代码质量改进_第3页
2025QECon全球软件质量效能大会:基于 DeepSeek 的代码质量改进_第4页
2025QECon全球软件质量效能大会:基于 DeepSeek 的代码质量改进_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

QECon2025全球软件质量&效能大会

·深圳站2025

GLOBAL

SOFTWARE

QUALITY

&EFFICIENCY

CONFERENOE

SHENZHENZHAN基于

Deep

Seek

的代码质量改进廖斯毅|趣丸科技、平台开发工程师全球软件质量&效能大会廖斯毅趣丸科技平台开发工程师趣丸科技平台开发工程师,专注于软件质量以及DevOps

方向。现负责公司AI

代码质量相关领域建设,为公司研发效能环节提效。曾从0到1参与到公司CICD平台开发工作,为公司业务快速、稳定交付

打下了坚实基础,现聚焦于A

代码质量相关方向。QECon全球软件质量&效能大会01

软件工程代码质量02

LLM赋能CodeReview03构建

ReviewAgent未来展望目录CONTENTSPART01软件工程中的代码质量全球软件质量&效能大会888QE

Con

全球软件质量&效能大会

深圳站提升稳定性,提高满意度增强可靠性,提高用户对软件的满意度。降低风险、确保交付最小化潜在问题并保证项目成功完成。提升效率,增加产品特性精简流程,扩展产品的功能。降低维护成本降低与修复和更新代码相关的费用。正确性代码对所有有效输入产生预期输出。可读性代码易于理解和遵循。可维护性代码易于修改和更新。可靠性代码在各种条件下按预期运行。QE

代码质量与重要性持续提升模型能力可以持续提升模式识别训练数据有大量最佳实践和反模式上下文分析关联代码上下文进行分析理解代码语义深入代码语义级别的理解QE

Con

全球软件质量&效能大会

◎深圳站QE

大模型赋能代码质量OpenAl:GPT-4o-mini>GPT-4o

mini

is

OpenAI's

newest

model

after

[GPT-4

Omni](/models

…Anthropic:Claude3.7

Sonnet>Claude3.7Sonnet

is

an

advanced

large

language

model

with

improv..Google:Gemini

2.0

Flash

>Gemini

Flash2.0offersasignificantlyfastertimetofirsttoken(TTFT)..Google:Gemini

2.5Pro

Preview>Gemini2.5

ProisGoogle'sstate-of-the-artAlmodel

designedfor

ad...Google:Gemini2.5

Flash

Preview>Gemini2.5

FlashisGoogle'sstate-of-the-artworkhorsemodel,spe..DeepSeek:DeepSeek

V30324(free)>DeepSeekV3,a685B-parameter,mixture-of-expertsmodel,isthe1...DeepSeek:DeepSeek

V30324>DeepSeekV3,a685B-parameter,mixture-of-expertsmodel,isthe

...DeepSeek:R1(free)>DeepSeek

R1ishere:Performanceonparwith

[OpenAlo1](/openai..私有化部署确保代码安全开源开放权重可自定义微调经济无需按token

计费能力V3搭配R1效果好47.2B

tokens↓16%31.3B

tokens

↓16%28.7B

tokens↓3%15.4B

tokens↓9%14.5B

tokens↓20%11.7B

tokens个6%10.9B

tokens↓3%4.84B

tokens个11%QE

DeepSeek

的优势1.2.3.4.5.6.

7.

8.PART02大模型赋能CodeReview全球软件质量&效能大会888O

时间成本O

标准不一O

遗漏问题流程管理○

工具

制保障代码质量保持一致性减少技术债知识共享提前发现问题QE

CodeReview

的双面性价值

挑战QE

LLM赋能多种角色审查人员快速了解变更范围帮助梳理代码逻辑分组开发人员获得修改建议

预防技术债务测试人员明确测试回归点LLM+MergeRequest

赋能CodeReview基于Gitlab

MR的

功能,完成增量代

码的分析、总结。webserverunifieddiffformatSusgestioanSummarizeIssueweb

hookfetch

MRinject

promptefilterRoutergroupLLM相关改动文件测试增强▶2

files功能增强V1

filesVapp.go实现通过名称获取应用信息的功能+33-0services/app/internal/server/app.go。新增GetAppByName方法实现。通过应用名称和项目名称查找应用。返回查找到的应用信息效果-MR

总结啄木鸟@intellicode·1month

ago概况与总结增强MCP

服务功能并实现K8s资源管理和流水线运行新功能:·

增MCP(Multi-Cloud

Platform)

服务,实现了主程序、配置管理、

REST接口等核心功能。·

添加了K8s资源管理相关功能,包括查找资源、删除Pod、重启工作负载等。·

实现了流水线运行功能,支持通过MCP工具触发流水线。·增强了应用管理功能,新增通过名称获取应用信息的方法。测试:·更新了多个模拟测试文件,增加了新功能的模拟实现,如MultiResource

和RunPipeline方法。总结与梳理:·

按变更类型总结·

按变更类型梳理建议类型建议最佳实

践▶添加错误处理和日志记录以提高代码的健壮性和可调试性。使用常量替代魔法数字以提高代码可维护性。建议使用常量来定义固定的分页大小,而不是直接在代码中使用魔法数字。这样可以提高代码的可维护性和可读

性。services/mcpl/internal/service/find/k8s_resource.go

[34-38]+const

defaultPageSize=33+reqParm:=&constack.MultiResourceReq{Search:req.Search,Page:1,-Size:33,+Size:defaultPageSize,}QE

效果-MR

代码建议代码建议侧重于代码质量:·

代码风格·

最佳实践·

可维护性·

可读性QE

效果-MR

Issue

分析相关Issue分析识别到以下潜在问题:(等级:Blocker,Critical,Major,Minor)等

IssuesMinor

▶在错误消息中,"msg"参数应该是"detail"。FastAPI

使

"detail"

作为错误消息的标准参数名。V在日志消息中,"resposne"

应该是"response"

这是一个简单的拼写错误。inteillcode/agent.py

[544-546]logger.warning(▶在

litellm_completion

函数中,非流式响应的处理方式不正确。当前代码使用yield

返回内容,但这个函数并不是一个生成器。▶setup_logger

函数被调用了两次,这可能会导致重复的日志配置。第二次调用是多余的,应该被删除。侧重于分析问题:·

逻辑正确性检查·

性能问题·

安全问题·

拼写错误SUGGESTIONSUGGESTIONunclosed

unclosedresposneresponseRESULTRESULTparser."parser."tag,try

tag,try"LLM"LLMtag

taguseusetoto-+QE

LLM

分析

MR

遇到的问题和挑战01

02

如何传递代码变更

缺失代码上下文

如何准确分析问题LLM

是一个概率模型,那么生成的内容就不是100%可靠的。应该如何提升代码分析场景中的准确率是关键。在

Review

中除了查看变更

代码之外,还需要其他未变更的关联代码进行分析。如

何准确、有效提供关联代码?代码变更需要通过Prompt

提供给大模型进行分析。如

何让模型理解代码变更:哪

些是旧代码?哪些是新代码?系统无法识别这个类。tests/test_agent.py

[55-58]1

-self.num_tools=TestQtoolkit(2

+self.num_tools

=Qtoolkit(3name="math

toolkit",4

-

description="计算数学加和乘表达式",tools=[add,multiply]5

+

description="计算数学加和乘表达式",_tools=[add,multiply]

6

)41424

+class

TestQtoolkit(Qtoolkit):44

tools:List[BaseTool]

4def

load_tools(self)->List[BaseTool:47

return

self.tools484def

setUp(self):52self.chat_model=Chatollama(53model="qwen2.5:72b-instruct",base_url="3:11434"self.num_tools-

TestQtoolkit(56

name="math

toolkit",

严重bug:self.wather_toolkit-TestQtoolkit(68+

name="watchertoolkit”,description=”查询天气情况",tools=[get_162

deftest_tool_use(self):tool_use

-ToolusePlan(

old

hunk

return“多云”classTestAgent(unittest.TestCase):def

setUp(self):self.chat_model=Chatollama(model="qwen2.5:72b-instruct",base_url="3:11434"self.num_tools

=Qtoolkit(name="math

toolkit",description="计算数学加和乘表达式",_tools=[add,multiply]self.wather_toolkit

=Qtoolkit(QE如何让模型理解代码变更@@-39,17

+40,24

@@def

get_weather(location:str)->str:1:在测试代码中使用了未定义的TestQtoolkit类。这可能会导致测试失败或运行时错误,因为name="watcher

toolkit",description=“查询天气情况”,_tools=[get_location,get_weatnerJ]50class

TestAgent(unittest.TestCase):61人不知道提问题开放聊人知道简单说喂模式乔哈里视窗QE

如何找到正确的格式AI

知道AI

不知代码变更使用`gitdiff`格式,如下:@a

classBaseClass@@

def

method

()

:[3lines

of

pre-context]-[old_code

]+[

new_code

][3lines

ofpost-context]gitdiff

式Git

Diff

格式详解git

diff

Git

中用于显示工作区、暂存区和提交之间差异的强大命令。以下是git

diff

输出的标准格式和解读:基本格式diff--git

a/file1

b/file2index1234567..89abcde100644a/file1+++b/file2@@-1,5+1,6@@这是一删除的行+新增的行+另一新增行保持不变的行其他行QE

如何找到正确的格式复制

出下载SAMPLE_GIT_DIFF="""diff--gita/src/main.pyb/src/main.pyindexa123456..b789012100644a/src/main.py+++b/src/main.py@@-10,7+10,8@aclass

Calculator:def

add(self,a,b):return

a

+bdefsubtract(self,a,b):return

a

-b+

result

=a

-b+

return

abs(result)if

absolute

elseresult"""

defmultiply(self,a,b):Prompt

+EngineeringPrompt

可以和

Code

一样编写测试QE

真正的

Prompt

Engineeringdef

test_git_diff_understanding(actual,expected):data=

call_llm(SMPLE_GIT_DIFF

)assert

data.get(actual)==

expected,f"{actual}!={expected}"(FILE_PATH,"src/main.py"

(MODE,"100644"

),(ADD_LINES,3),(REMOVED_LINES,2)+

def

subtract(self,a,b,absolute=False):@pytest.mark.parametrize("actual,expected",[])),在检查followEnermyEnt是否在游戏中时,建议添加对

followEnermyEnt是否存在的检查,以避免

在followEnermyEnt

为null

或undefined

时调用方法导致的潜在错误。server/game/src/service/mingame/mummy/AITest/AIBT/AIBTScript/GameAIBTAttackScript.ts

[34-36]-if(!followEnermyEnt.isInGamePlaying()){+if(followEnermyEnt&!followEnermyEnt.isInGamePlaying()){this.setGlobalValue("followEnermy",null);return;if(meEntity&followEnermyEnt&&spellSkillId){

//判断是否在战斗房间if

(!followEnermyEnt.isStayInBattleRoomArea()){

return;}if(!followEnermyEnt.isInGamePlaying()){this.setGlobalValue("followEnermy",null);return;}缺失代码上下文的问题Bug

V添加对变量存在性的检查以避免潜在错误。Unified

diff生成内容

基于固定行号,容易丢

失代码上下文。导致模型分析给出错误建议。错

变更内容3435363729303233QE

通过

tree-sitter

召回代码上下文Tree-sitter是支持多语言的静态分析工具,可以将源代码解析为一个语法树。只修改了部分代码,整个函数召回。

file1+++

file1@@

-482,3+482,20aa

funcAdd(a,b):if

not

isinstance(a,int

):raiseValueError("amustbeint")

if

notisinstance(b,int

):raiseValueError("bmustbeint")return

a

+b+logging.

info

("aandbare

int")

+.

return

a

+bassignmentvariable_declarationexpression

receivercallLexpressmethod_callmethodidentifierFew-shot、CoT、ToT、GoTPrompt

套路并没有提升效果,如何是好?正解=扎实的领域知识+理性思维##Task##Constraints##Workflow##Output

FormatQE

Prompt困局ModelMARPCCNSMCFRLMAOFCSSOADMUUnsupervisedCoT0.960.940.780.920.800.820.800.840.140.36UnsupervisedToT0.920.900.920.360.880.780.820.940.180.66UnsupervisedGoT1.000.980.900.720.920.880.820.920.200.80Correctlysupervised

CoT1.001.001.000.960.960.940.920.880.440.90QE

SupervisordCoT Let'scountthe"r"sin"Strawberrrry"step

by

step:1.S→02.T→03.R→

1Let's

countthe

numberof"r"s

inStrawberrrry,stepby

step:

ThewordisStrawberrrry.1.S→not

an"r"2.t→notan"r"How

many

"r"s

are

there

in

Strawberrrry,write

down

a

counter

eachstep.(a)Unsupervised

CoT

Justthinkstep

bystep_Howmany"r"sarethere

in

Strawberrrrry,think

step

by

stepRef:/abs/2410.14198I'll

track

ifeach

letter

isa“"r”eachstep(b)SupervisedCoT识别代码变更的背景信息,按照如下格式输出:#-#代背码景:信[

e_path][hunk_

id]-业务逻辑:[使用bullet

point

整理业务逻辑]-变更意图:[识别开发者的变更意图]-技术栈:[使用bullet

point

列举代码涉及的技术信息]梳理Review代码变更时需要注意的审查要点,按照如下格式输出:##审查要点-代码:[file_

path][hunk_

id]-

审查要点:[使用bulletpoint

列举出需要审查的要点]fil息如何推导出有效的Supervisord

CoT?-准确识别需要哪些步骤-明确说明每个步骤需要输出什么-通过bullet

point

鼓励模型思考QE代码分析中使用

Supervisord

CoT术

:x-shot、x-CoT、...道:收敛问题空间核心:找到问题域与

LLM

数据

集的交集,收敛LLM

的解题空

间,尽可能逼近目标答案。

Prompt

的核心全球软件质量&效能大会PART

03基于IDE的Review

Agent888MR

阶段反馈滞后有丰富的工具可用环境有

完整代码IDE

修改问题直接为什么要基于

IDEp.GET(“”,n.GetNoti

ce

)p.POSTC"",n.SaveNotice)fune(n*NoticeController)GetNotice(ctx*gin.Context){1usagezhuangzexiong

·etxWrapper:=

para.WrapperContext(ctx

,true

,“

获取最新公告”)ctxWrapper.

RegisterBind

()List,err:n.ns.GetNotice

(ctx)print(arg⁹.../1)if

err

=

nil

{Log.ErroWithctx(ctx,“获取最新公告错误:%”,err)ctxWrapper.FaiLError(http.StatusInternaLServerError

,err)returnctxwrapper.OK(List)fune(n*NoticecontrolLer)

SaveNotice(ctx*gin.Context

)1

usage

z

huangzexlongvarpostData

model.

AdNoticeParamsctxWrapper

:=para.Wrappercontext

(ctx,true,"

保存公告")iferr:=ctxWraper,Bind(&postData);err!=

nil{Log.

ErrorWithctx

(ctx,“保存公告失败:%0”,

err)ctxrapper.FaiLError(http.StatusBadReques

t,err)returniferr:=n.ns.

SaveNotice

(ctx,postData);errl=

ni{Log.ErrorWithctx

(ctx

,"

保存公告失败:%u",

err)ctxWrapper.FaiLError

(http.

StatusInternaLServerError

,

err)returnetxwrapper.

OK()在SaveNotice函数中同样添加了一个除以零的操作

(print(o/1)。这也是一个严重的运行时错误,会导致程序崩

我的推理过程如下:1.这段代码是在Web

应用的控制器中,用于保存公告。2.在绑定请求数据之前,添加了一个print(0/1)的操作。3.与前一个bug相同,这个除零操作会导致运行时panic,

终止当前的goroutine.4.

在Web

服务器中,这意味着每次调用SaveNotice接口都会导致服务崩溃,无法正常处理保存公告的请求。

因此,这个除零操作必须被移除,以确保服务的正常运行。另外,我注意到这个函数的重构移除了显式的绑定注册

(ctxWrapper.RegisterBlindíctx.ShouldBindJSON))。虽然这不是一个bug.

但可能会影响请求数据的绑定方式。如果ctxWrapper.Bind默认使用不同的绑定方法,可能需要确保它

仍然正确地绑定JSON数据。1ferr:=ctxWrapper.Bind(&postData);errI=n1{Log.ErrorWithctx(ctx

,

"保存公告失败:%u",err)ctxMrapper.FaiLError(http.StatusBadRequest,err)returnif

err:=n.ns.SaveMotice(ctx,postData);errI=nil{Log.ErrorWithctx(ctx

,"

保存公告失败:%V",

err)ctxMrapper.FaiLError(http.StatusInternalServerError,err)return IDE

插件展示func(n★Noticecontroller)SaveNotice(ctxvar

postData

model.AddNoticeParansctxWrapper:=para.Wrapperconext(ctx,true*gin.Context){,“保存公告”)JetDev

本地开发Codefilter

group

Code、unified

diff

format

按照语言、AST

分组

Codecad.Eilegrep

cd-oteWorkflow+Agent的

方式构建整个应用。Workflow

做预处理和

后处理,是一套预定的

流程

。Agent:LLM

tool

use

+ReActReviewRuleGroup1Group2Group3召回关联代码_CodeBaseToolsReview

Agent

流程生成代码SuggestionCodeLLMPotentialIssueCodeBlockReviewIssueSuggestionRejected

+Feedback核心思想:为模型提供优质ContextRef:/engineering/building-effective-agents通过构建一套flow,来解决复杂的问题。

建议

:-保

持NodeKISS原

则-任务太难就拆分多个Node-不要纠结单个Node

的效果

Flow

EngineeringEvaluator-optimizerSolutionOutAcceptedLLM

CallGeneratorLLM

CallEvaluator[e]

merge_request_url[e]

incremental[e]

gitlab_url[e]

gitlab_access_token[e]

super_gitlab_access_to[e]

gl[e]super_gl[e]

id_project[e]

id_mr提供关联代码需要的工具:-了解项目结构、代码关系-

Glob-

Read

File_Outline-

获取代码-Read_File-Fetch_Code_By_SymbolQE

通过

Tool

提供关联代码[e]mr[e]diff_files[e]

git_files[e]

temp_commentsOUTLINE

DiffNotFoundErrorgGitLabProviderReview分析代码场景下,模型缺失的是关联的代码。模型生成

JSON

的挑战:JSON

需要处理字符串转义

生成合法JSON

成功率低生成JSON

格式消耗太多注意力Codingskill

by

modelMarkdown60.6%54.1%51.1%andcodewrapping

strategyJSON

JSON(strict)60.0%

59.6%QE

生成代码实践claude-3.5-sonnet

deepseek-coderV20724ModelRef.https://aider.chat/2024/08/14/code-in-json.html70-6050-40-30-20-Pass

ate

(%,average

of

5runs)60.8%57.6%

56.9%gpt-40-2024-05-13gpt-40-2024-08-0660.5%<file_path>

mathweb/flask/app.py

</file_path><start_row>1</start_row><end_row>2</end_row><suggested_code>import

mathfromflaskimport

Flask</suggested_code>mathweb/flask/app.py

#文件路径SEARCHfrom

flask

import

Flask

#

原始代码=======importmath

#建议代码from

flask

import

FlaskREPLACE

Search

Replace模型不擅长计算行号

直接生成代码模式全球软件质量&效能大会PART04未来演进888QE

仓库级代码评分为Monorepo

项目整体进行质量评分QE

仓库级代码评分-整体流程开始任务Custow创建任务队列FilterWorker

1

Worker

2

Worker

NCodeBasePrompt

CodePrompt展示代码质量评分报告详细评分总体评文件名

复杂度评分

坏味道评分

可维护性评分

总评代码纪0inteillcode/agent.py

3.2

2.8

4.5

良好文件评估:该文件整体结构较为合理,复杂度适中(3.2分),存在一定程度的代码坏味道(2.8分),但可维护性表现优秀(4.5分)。主要优势在于良好的注释覆盖率和命名规范性,建议关注部分方法的复杂度降低和代码重复问题。inteillcode/code_parser.py2.5

1.9

3.7

一般文件评估:该文件存在较高的复杂度问题(2.5分)和明显的代码坏味道(19分),可维护性尚可(3.7分)。主要问题包括递归深度控制不足、异常处理机制简单、缺少

对节点类型的筛选逻辑。建议考虑使用迭代方式替代递归,添加更完善的错误处理机制。inteillcode/repo.py

3.0

2.2

3.5一般文件评估:该文件复杂度评分中等(3.0分),存在一定的代码坏味道(2.2分),可维护性评分尚可(3.5分)。主要问题在于文件操作缺乏错误处理机制,未考虑大文件处理情况,串行处理效率较低。建议添加try-except块处理文件操作异常,使用with上下文管理器确保文件正确关闭。QE

仓库级代码评分-QE

构建业务需求知识库TAPD将代码与需求关联补充代码分析场景Context获取需求CommitMessageCodechanges

LLMToolsReviewAgent需求文档commit

id业务逻辑描述大模型分析仓库:-

图-

图-

层参考:Devin

团队的DeepWiki模块核心组件职责说明cognitionplan_and_execute任务分解与执行控制流executionconstack云原生基础设施抽象层transformervoice_transfer语音处理管道perceptionlark/wechat第三方平台消息适配器schematask/session核心业务对象定义schema所有业务模块

accesscognitionexecutionQE

构建代码仓库的知识库1.架构分层应用层

(perception/access)业务逻辑层

(cognition/execution)

基础设施层(transformer/toolkits)

数据层

(schema)2.关键模块解析3.依赖关系分析transformerperception全球软件质量&效

会感谢聆听关注公众号作为企业第三方专业人力提升培训服务供应商,秉承互联共成长的理念,恪守客户实际业务需求为第一优先级的本职。我们公司定位于专业、专注、全方位服务于IT研发中心,产品、技术、工具、团队管理方向的培训课程;有公开课,定制内训,在线课,T技术峰会一站式采购等产品;更多的从客户需求角度出发,匹配更适合团队学习的资讯和课程推荐;更好的为客户服务,有专业的培训顾问,对整个IT行业峰会,讲师情况,课程方向都有比较深的了解。公开课

微咨询云计算专业

IT

术培训服务供应商产品经理持续运维质量管理大数据数据库前端开发5大服务课程方向为企业人才培养需求提供多方位的讲师课程推荐,在线学习质量把关,资料学习推荐及直播课堂服务。在线

课程技术

峰会内训

定制智盟创课www.zmeng测试开发组织管理敏捷开发架构设计开发编程咨询电话软件研发效能权威指南

大模型时代的软件工程QECon

持续输出AI4SE

案例篇已发布10篇,抢先订阅

编写进行中20+篇案例关注QE公众号

回复“DORA2024”获取报告关注QE

公众号回复“工具指南”获取书籍链接立即参与案例持续收录中个前沿案例实用软件研发质效工具指南汇聚行业系用软件研发质效工具指南一书籍推荐一测试和研发领域的“百科全书”ENGIWEERING

PRODUCTTMITYDEFINITVEGUIDE软件研发效能

权威指南主编

娟腥

乐副主编陈题石需蜂吴酸龙余超

LP

张眸MODERN

SOFTWARETESTINGDEFLNTTIVEGUDE现代软件测试技术

权威指南购买链接威代指南件软件研发效能权威指南测技禾+na

版t⁰

图拿上服性专项测试(含全链路压测、混沌工程、性能测试等)数据驱动测试与精准测试智能化测试的创新实践Al时代下的安全测试自动化测试工具开发LLM赋能下测试管理与流程再造质效度量:从洞察到智能化AI原生应用的质量评测研发数据治理与质效提升多智能体助力效能提升(含MCP、A2A应用)平台工程(设计驱动的质效内建)Vibe

Coding模式下代码质效大模型在研发提效中的深度实践大模型驱动的DevOps工具链大模型时代的质量体系和文化建设2场2小时闭门会2场3小时深度工作坊2025全球软件质量&效能大会10/31-11/1北京-希尔顿逸林酒店09/12-13上海-明捷万丽酒店下一站上

站北

45%研发关键技术能力进阶专场

大数据平台与架构实践

出海与云原生

高可用架构

大前端前沿技术

大前端架构实践

业务架构数据治理数据库架构SECon2025全球软件工程技术大会2025

GLO

B

A

L

SOF

T

WA

RE

E

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论