Findbugs缺陷等級對照表_第1頁
Findbugs缺陷等級對照表_第2頁
Findbugs缺陷等級對照表_第3頁
Findbugs缺陷等級對照表_第4頁
Findbugs缺陷等級對照表_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、FindBugsBugDescriptionsThisdocumentliststhestandardbugpatternsreportedbyversion0.8.5.SummaryEC:Calltoequals()comparingdifferent15AinterfacetypesCorrectness調用 Equal 方法去比較不同的接口類型EC:Calltoequals()comparingdifferent16AtypesCorrectness調用 Equal 方法去比較不同的數(shù)據(jù)類型ES:ComparisonofStringobjectsusing=17Ao二使用=或者!=去比較

2、字符串或對象IJU:TestCaseimplementssetUpbutdoesntNP:Nullpointerdereferenceinmethod 方法中存在空指針Nm:Classdefinesequal();shoulditbeC:中定了 equal 方法,但是沒有重寫序號等級DescriptionCategory14AEC:Calltoequals()withnullargument 調用 Equal 方法的參數(shù)為空Correctness29Bcallsuper.setUp()測試實例實現(xiàn)了 setUpsuper.setUp()()但沒有調用CorrectnessCorrectness

3、36ACorrectnessNP:Nullpointerdereferenceinmethodon37Aexceptionpath方法中存在某異常路徑中的空指針NP:Possiblenullpointerdereferencein38Amethod方法中存在可能在運行時出現(xiàn)的空指針異常NP:Possiblenullpointerdereferenceinmethodonexceptionpath39方法中存在可能在某些異常路徑下出現(xiàn)的空指針異常CorrectnessCorrectnessCorrectness41Correctnessjava.lang.Object 中 equal 方法,這也

4、有可能是有意這么做的42Nm:Confusingmethodnames一些方法名只有大小寫的區(qū)別,容易混繞43Nm:Confusingmethodname方法名和其超類的類名相同m:Classdefineshashcode();shoulditbehashCode()?44類中定義了hashCode()方法,但是沒有重寫ava.lang.Object中的hashCode()方法, 這也有可能是有意這么做的Nm:Classdefinestostring();shoulditbetoString()?45類中定義了tostring()方法,但是沒有重寫java.lang.Object中的tostr

5、ing()方法,這也有可能是有意這么做的46Nm:Veryconfusingmethodnames一些方法名只有大小寫的區(qū)別,特別容易混繞47ODR:Methodmayfailtoclosedatabaseresource方法可能沒有關閉數(shù)據(jù)源48ODR:Methodmayfailtoclosedatabaseresourceonexception49方法在異常時可能無法關閉數(shù)據(jù)源OS:Methodmayfailtoclosestream 方法可能沒有關閉流50OS:Methodmayfailtoclosestreamonexception53方法在異常時可能無法關閉流RCN:Redundan

6、tcomparisiontonullofpreviouslycheckedvalue預測值的幾個比較的值中有 null 值54CRCN:Redundantcomparisontonull幾個比較的值中有 null 值57RV:Methodignoresreturnvalue方法忽略了返回值59SI:Staticinitializerforclasscreatesinstancebeforeallstaticfinalfieldsassigned類的靜態(tài)初始化器實例化一個該類對象要在所有的常量屬性定義之前CorrectnessCorrectnessCorrectnessCorrectnessCo

7、rrectnessCorrectnessCorrectnessCorrectnessCorrectnessCorrectnessCorrectnessCorrectnessCorrectness72CUwF:Unwritten 巾 eld永遠不會寫到的字段,所有讀取將返回默認值83MS:Fieldisntfinalbutshouldbe字段應該為常量的卻不是常量Maliciouscodevulnerability86A88A92CIS2:Inconsistentsynchronization類中字段訪問不同步ML:Methodsynchronizesonanupdatedfield 方法從一個

8、可變字段對象的引用中同步。這是不太可能有用的,因為不同的線程可以在不同的對象上同步。Ru:Invokesrunonathread(didyoumeantostartitinstead?)當一個類繼承Runnable接口時候,還去調用 run 方法,實際上只需要調用 Start 方法就可以啟動新的線程,MultithreadedcorrectnessMultithreadedcorrectnessMultithreadedcorrectness93CSC:ConstructorinvokesThread.start()構造函數(shù)調用 Thread.start()Multithreadedcorre

9、ctness102103Dm:MethodinvokesdubiousnewString(String)constructor;justusetheargument方法中調用 String 的構造函數(shù)來新建一個字符用,直接使用其參數(shù)即可Dm:MethodinvokesdubiousString.equals();useString.length()=0instead方法中調用了不確定的 String.equals(),使用String.length()=0 來代替104Dm:MethodinvokestoString()methodonaString;justusetheString方法中用一

10、個字符用去調用方法 toString(),用String 就可以了105Dm:MethodinvokesdubiousnewString()constructor;justuse方法中新建一個空字符串用 newString()。直接用就可以了FI:Emptyfinalizershouldbedeleted106空 finalizer以刪除()方法是沒有用的,所以應該予PerformancePerformancePerformancePerformancePerformance114115C116CUPM:Privatemethodisnevercalled 這個私有方法從來沒有被調用到UrF:

11、Unreadfield讀不到的字段,應該從類中刪除UuF:UnusedfieldPerformancePerformancePerformance讀不到的字段,應該從類中刪除DescriptionsAM:CreatesanemptyjarfileentryThecodecallsputNextEntry(),immediatelyfollowedbyacalltocioseEntry().ThisresultsinanemptyJarFileentry.ThecontentsoftheentryshouldbewrittentotheJarFilebetweenthecallstoputNex

12、tEntry()andcloseEntry().AM:CreatesanemptyzipfileentryThecodecallsputNextEntry(),immediatelyfollowedbyacalltocloseEntry().ThisresultsinanemptyZipFileentry.ThecontentsoftheentryshouldbewrittentotheZipFilebetweenthecallstoputNextEntry()andcloseEntry().BIT:IncompatiblebitmasksThismethodcomparesanexpress

13、ionoftheform(a&C)toD,whichwillalwayscompareunequalduetothespecificvaluesofconstantsCandD.Thismayindicatealogicerrorortypo.BIT:IncompatiblebitmasksThismethodcomparesanexpressionoftheform(a&0)to0,whichwillalwayscompareequal.Thismayindicatealogicerrorortypo.BIT:IncompatiblebitmasksThismethodcom

14、paresanexpressionoftheform(a|C)toD.whichwillalwayscompareunequalduetothespecificvaluesofconstantsCandD.Thismayindicatealogicerrorortypo.Typically,thisbugoccursbecausethecodewantstoperformamembershiptestinabitset,butusesthebitwiseORoperator(|)insteadofbitwiseAND(&).BOA:Classoverridesamethodimplem

15、entedinsuperclassAdapterwronglyThismethodoverridesamethodfoundinaparentclass,wherethatclassisanAdapterthatimplementsalistenerdefinedinthejava.awt.eventorjavax.swing.eventpackage.Asaresult,thismethodwillnotgetcalledwhentheeventoccurs.BRSA:Methodattemptstoaccessaresultsetfieldwithindex0AcalltogetXXXor

16、updateXXXmethodsofaresultsetwasmadewherethefieldindexis0.AsResultSetfieldsstartatindex1,thisisalwaysamistake.CN:ClassimplementsCloneablebutdoesnotdefineoruseclonemethodClassimplementsCloneablebutdoesnotdefineorusetheclonemethod.CN:clonemethoddoesnotcallsuper.clone()Thisclassdefinesaclone()methodthat

17、doesnotcallsuper.clone(),andisnotfinal.Ifthisclass(A)isextendedbyasubclass(B),andthesubclassBcallssuper.clone(),thenitislikelythatBsclone()methodwillreturnanobjectoftypeAwhichviolatesthestandardcontractforclone().Ifallclone()methodscallsuper.clone(),thentheyareguaranteedtouseObject.clone(),whichalwa

18、ysreturnsanobjectofthecorrecttype.Co:CovariantcompareTo()methoddefinedThisclassdefinesacovariantversionofcompareTo().TocorrectlyoverridethecompareTo()methodintheComparableinterface,theparameterofcompareTo()musthavetypejava.lang.Object.DE:MethodmightdropexceptionThismethodmightdropanexception.Ingener

19、al,exceptionsshouldbehandledorreportedinsomeway,ortheyshouldbethrownoutofthemethod.DE:MethodmightignoreexceptionThismethodmightignoreanexception.Ingeneral,exceptionsshouldbehandledorreportedinsomeway,ortheyshouldbethrownoutofthemethod.Dm:MethodinvokesSystem.exit(.)InvokingSystem.exitshutsdowntheenti

20、reJavavirtualmachine.Thisshouldonlybeendonewhenitisappropriate.Suchcallsmakeithardorimpossibleforyourcodetobeinvokedbyothercode.ConsiderthrowingaRuntimeExceptioninstead.EC:Calltoequals()withnullargumentThismethodcallsequals(Object),passinganullvalueastheargument.Accordingtothecontractoftheequals()me

21、thod,thiscallshouldalwaysreturnfalse.EC:Calltoequals()comparingdifferentinterfacetypesThismethodcallsequals(Object)ontworeferencesofunrelatedinterfacetypes(neitherisasubtypeoftheother).Accordingtothecontractofequals(),objectsofdifferentclassesshouldalwayscompareasunequal.Notethatitispossiblethatthep

22、rogramcontainsclassesthatimplementbothinterfaces,sothecomparisonmaybevalid.However,itisworthinspectingclosely.EC:Calltoequals()comparingdifferenttypesThismethodcallsequals(Object)ontworeferencesofdifferenttypes.Accordingtothecontractofequals(),objectsofdifferentclassesshouldalwayscompareasunequal;th

23、erefore,itislikelythattheresultofthiscomparisionwillalwaysbefalseatruntime.ES:ComparisonofStringobjectsusing=or!=Thiscodecomparesjava.lang.Stringobjectsforreferenceequalityusingthe=or!=operators.Unlessbothstringsareeitherconstantsinasourcefile,orhavebeeninternedusingtheSern()method,thesames

24、tringvaluemayberepresentedbytwodifferentStringobjects.Considerusingtheequals(Object)methodinstead.Eq:Covariantequals()methoddefinedThisclassdefinesacovariantversionofequals().Tocorrectlyoverridetheequals。methodinjava.lang.Object,theparameterofequals。musthavetypejava.lang.ObjectEq:Covariantequals()me

25、thoddefined,Object.equals(Object)inheritedThisclassdefinesacovariantversionoftheequals。method,butcallsthenormalequals(Object)methoddefinedinthebasejava.lang.Objectclass.Theclassshouldprobablydefineanon-covariantversionofequals().(I.e.,amethodwiththesignaturebooleanequals(java.lang.Object).FI:Explici

26、tinvocationoffinalizerThismethodcontainsanexplicitinvocationofthefinalize。methodonanobject.Becausefinalizermethodsaresupposedtobeexecutedonce,andonlybytheVM,thisisabadidea.FI:FinalizerdoesnotcallsuperclassfinalizerThisfinalize()methoddoesnotmakeacalltoitssuperclasssfinalize()method.So,anyfinalizerac

27、tionsdefinedforthesuperclasswillnotbeperformed.Addacalltosuper.finalize().FI:FinalizernullifiessuperclassfinalizerThisemptyfinalize。methodexplicitlynegatestheeffectofanyfinalizerdefinedbyitssuperclass.Anyfinalizeractionsdefinedforthesuperclasswillnotbeperformed.Unlessthisisintended,deletethismethod.

28、HE:Classdefinesequals()butnothashCode()Thisclassoverridesequals(Object),butdoesnotoverridehashCode().Therefore,theclassmayviolatetheinvariantthatequalobjectsmusthaveequalhashcodes.HE:Classdefinesequals()andusesObject.hashCode()Thisclassoverridesequals(Object),butdoesnotoverridehashCode(),andinherits

29、theimplementationofhashCode()fromjava.lang.Object(whichreturnstheidentityhashcode,anarbitraryvalueassignedtotheobjectbytheVM).Therefore,theclassisverylikelytoviolatetheinvariantthatequalobjectsmusthaveequalhashcodes.IfyoudontwanttodefineahashCodemethod,and/ordontbelievetheobjectwilleverbeputintoaHas

30、hMap/Hashtable,definethehashCode()methodtothrowUnsupportedOperationExceptionHE:ClassdefineshashCode()butnotequals()ThisclassdefinesahashCode()methodbutnotanequals。method.Therefore,theclassmayviolatetheinvariantthatequalobjectsmusthaveequalhashcodes.HE:ClassdefineshashCode()andusesObject.equals()This

31、classdefinesahashCode()methodbutinheritsitsequals()methodfromjava.lang.Object(whichdefinesequalitybycomparingobjectreferences).Althoughthiswillprobablysatisfythecontractthatequalobjectsmusthaveequalhashcodes,itisprobablynotwhatwasintendedbyoverridingthehashCode()method.(OverridinghashCode()impliesth

32、attheobjectsidentityisbasedoncriteriamorecomplicatedthansimplereferenceequality.)HE:Classinheritsequals()andusesObject.hashCode()Thisclassinheritsequals(Object)fromanabstractsuperclass,andhashCode()fromfromjava.lang.Object(whichreturnstheidentityhashcode,anarbitraryvalueassignedtotheobjectbytheVM).T

33、herefore,theclassisverylikelytoviolatetheinvariantthatequalobjectsmusthaveequalhashcodes.IfyoudontwanttodefineahashCodemethod,and/ordontbelievetheobjectwilleverbeputintoaHashMap/Hashtable,definethehashCode()methodtothrowUnsupportedOperationExceptionIC:InitializationcircularityAcircularitywasdetected

34、inthestaticinitializersofthetwoclassesreferencedbythebuginstance.Manykindsofunexpectedbehaviormayarisefromsuchcircularity.IJU:TestCaseimplementssetUpbutdoesntcallsuper.setUp()ClassisaJUnitTestCaseandimplementsthesetUpmethod.ThesetUpmethodshouldcallsuper.setUp(),butdoesnt.IMSE:DubiouscatchingofIllega

35、lMonitorStateExceptionIllegalMonitorStateExceptionisgenerallyonlythrownincaseofadesignflawinyourcode(callingwaitornotifyonanobjectyoudonotholdalockon).It:Iteratornext()methodcantthrowNoSuchElementexceptionThisclassimplementsthejava.util.Iteratorinterface.However,itsnext()methodisnotcapableofthrowing

36、java.util.NoSuchElementException.Thenext()methodshouldbechangedsoitthrowsNoSuchElementExceptionifiscalledwhentherearenomoreelementstoreturn.MF:ClassdefinesfieldthatobscuresasuperclassfieldThisclassdefinesafieldwiththesamenameasavisibleinstancefieldinasuperclass.Thisisconfusing,andmayindicateanerrori

37、fmethodsupdateoraccessoneofthefieldswhentheywantedtheother.MF:MethoddefinesavariablethatobscuresafieldThismethoddefinesalocalvariablewiththesamenameasafieldinthisclassorasuperclass.Thismaycausethemethodtoreadanuninitializedvaluefromthefield,leavethefielduninitialized,orboth.MWN:Mismatchednotify()Thi

38、smethodcallsObject.notify()orObject.notifyAll()withoutobviouslyholdingalockontheobject.Callingnotify()ornotifyAll()withoutalockheldwillresultinanIllegalMonitorStateExceptionbeingthrown.MWN:Mismatchedwait()ThismethodcallsObject.wait()withoutobviouslyholdingalockontheobject.Callingwait()withoutalockhe

39、ldwillresultinanIllegalMonitorStateExceptionbeingthrown.NP:NullpointerdereferenceinmethodAnullpointerisdereferencedhere.ThiswillleadtoaNullPointerExceptionwhenthecodeisexecuted.NP:NullpointerdereferenceinmethodonexceptionpathApointerwhichisnullonanexceptionpathisdereferencedhere.ThiswillleadtoaNullP

40、ointerExceptionwhenthecodeisexecuted.NotethatbecauseFindBugscurrentlydoesnotpruneinfeasibleexceptionpaths,thismaybeafalsewarning.AlsonotethatFindBugsconsidersthedefaultcaseofaswitchstatementtobeanexceptionpath,sincethedefaultcaseisofteninfeasible.NP:PossiblenullpointerdereferenceinmethodAreferenceva

41、luedereferencedheremightbenullatruntime.ThismayleadtoaNullPointerExceptionwhenthecodeisexecuted.NP:PossiblenullpointerdereferenceinmethodonexceptionpathAreferencevaluewhichisnullonsomeexceptioncontrolpathisdereferencedhere.ThismayleadtoaNullPointerExceptionwhenthecodeisexecuted.NotethatbecauseFindBu

42、gscurrentlydoesnotpruneinfeasibleexceptionpaths,thismaybeafalsewarning.AlsonotethatFindBugsconsidersthedefaultcaseofaswitchstatementtobeanexceptionpath,sincethedefaultcaseisofteninfeasible.NS:Questionableuseofnon-short-circuitlogicThiscodeseemstobeusingnon-short-circuitlogic(e.g.,&or|)ratherthan

43、short-circuitlogic(&or|).Non-short-circuitlogiccausesbothsidesoftheexpressiontobeevaluatedevenwhentheresultcanbeinferredfromknowingtheleft-handside.Thiscanbelessefficientandcanresultinerrorsiftheleft-handsideguardscaseswhenevaluatingtheright-handsidecangenerateanerror.Nm:Classdefinesequal();shou

44、lditbeequals。?Thisclassdefinesamethodequal(Object).Thismethoddoesnotoverridetheequals(Object)methodinjava.lang.Object,whichisprobablywhatwasintended.Nm:ConfusingmethodnamesThereferencedmethodshavenamesthatdifferonlybycapitalization.Nm:ConfusingmethodnameThismethodhasthesamenameasthesuperclassofthecl

45、assitisdefinedin.Nm:Classdefineshashcode();shoulditbehashCode()?Thisclassdefinesamethodcalledhashcode().ThismethoddoesnotoverridethehashCode()methodinjava.lang.Object,whichisprobablywhatwasintended.Nm:Classdefinestostring();shoulditbetoString()?Thisclassdefinesamethodcalledtostring().Thismethoddoesn

46、otoverridethetoString()methodinjava.lang.Object,whichisprobablywhatwasintended.Nm:VeryconfusingmethodnamesThereferencedmethodshavenamesthatdifferonlybycapitalization.ODR:MethodmayfailtoclosedatabaseresourceThemethodcreatesadatabaseresource(suchasadatabaseconnectionorrowset),doesnotassignittoanyfield

47、s,passittoothermethods,orreturnit,anddoesnotappeartoclosetheobjectonallpathsoutofthemethod.Failuretoclosedatabaseresourcesonallpathsoutofamethodmayresultinpoorperformance,andcouldcausetheapplicationtohaveproblemscommunicatingwiththedatabase.ODR:MethodmayfailtoclosedatabaseresourceonexceptionThemetho

48、dcreatesadatabaseresource(suchasadatabaseconnectionorrowset),doesnotassignittoanyfields,passittoothermethods,orreturnit,anddoesnotappeartoclosetheobjectonallexceptionpathsoutofthemethod.Failuretoclosedatabaseresourcesonallpathsoutofamethodmayresultinpoorperformance,andcouldcausetheapplicationtohavep

49、roblemscommunicatingwiththedatabase.OS:MethodmayfailtoclosestreamThemethodcreatesanIOstreamobject,doesnotassignittoanyfields,passittoothermethods,orreturnit,anddoesnotappeartoclosethestreamonallpathsoutofthemethod.Thismayresultinafiledescriptorleak.Itisgenerallyagoodideatouseafinallyblocktoensuretha

50、tstreamsareclosed.OS:MethodmayfailtoclosestreamonexceptionThemethodcreatesanIOstreamobject,doesnotassignittoanyfields,passittoothermethods,orreturnit,anddoesnotappeartocloseitonallpossibleexceptionpathsoutofthemethod.Thismayresultinafiledescriptorleak.Itisgenerallyagoodideatouseafinallyblocktoensure

51、thatstreamsareclosed.PZLA:ConsiderreturningazerolengtharrayratherthannullItisoftenabetterdesigntoreturnalengthzeroarrayratherthananullreferencetoindicatethattherearenoresults(i.e.,anemptylistofresults).Thisway,noexplicitcheckfornullisneededbyclientsofthemethod.Ontheotherhand,usingnulltoindicatethere

52、isnoanswertothisquestion,thenitisprobablyappropriate.Forexample,File.listFiles()returnsanemptylistifgivenadirectorycontainingnofiles,andreturnsnullifthefileisnotadirectory.RC:SuspiciousreferencecomparisonThismethodcomparestworeferencevaluesusingthe=or!=operator,wherethecorrectwaytocompareinstancesof

53、thistypeisgenerallywiththeequals()method.Examplesofclasseswhichshouldgenerallynotbecomparedbyreferencearejava.lang.Integer,java.lang.Float,etc.RCN:RedundantcomparisiontonullofpreviouslycheckedvalueThismethodcontainsaredundantcomparisonofareferencevaluetonull.Twotypesofredundantcomparisonarereported:

54、,BothvaluescomparedaredefinitelynullOnevalueisdefinitelynullandtheotherisdefinitelynotnullThisparticularwarninggenerallyindicatesthatavalueknownnottobenullwascheckedagainstnull.Whilethecheckisnotnecessary,itmaysimplybeacaseofdefensiveprogramming.RCN:RedundantcomparisontonullThismethodcontainsaredund

55、antcomparisonofareferencevaluetonull.Twotypesofredundantcomparisonarereported:BothvaluescomparedaredefinitelynullOnevalueisdefinitelynullandtheotherisdefinitelynotnullThisparticularwarningrepresentstwospecifickindsofredundantcomparisions:1. Avaluewasdereferenced,andlaterexplicitlycomparedtonull:this

56、oftenindicatesanerrorinthemethod2. Aliteralnullvaluewasexplicitlycomparedtonull:thismayindicatethatthemethodwasmodifiedwithoutcompleteunderstandingoftheinvariantsofthemethodRR:MethodignoresresultsofInputStream.read()Thismethodignoresthereturnvalueofoneofthevariantsofjava.io.InputStream.read()whichca

57、nreturnmultiplebytes.Ifthereturnvalueisnotchecked,thecallerwillnotbeabletocorrectlyhandlethecasewherefewerbyteswerereadthanthecallerrequested.Thisisaparticularlyinsidiouskindofbug,becauseinmanyprograms,readsfrominputstreamsusuallydoreadthefullamountofdatarequested,causingtheprogramtofailonlysporadic

58、ally.RR:MethodignoresresultsofInputStream.skip()Thismethodignoresthereturnvalueofjava.io.InputStream.skip()whichcanskipmultiplebytes.Ifthereturnvalueisnotchecked,thecallerwillnotbeabletocorrectlyhandlethecasewherefewerbyteswereskippedthanthecallerrequested.Thisisaparticularlyinsidiouskindofbug,becau

59、seinmanyprograms,skipsfrominputstreamsusuallydoskipthefullamountofdatarequested,causingtheprogramtofailonlysporadically.WithBufferedstreams,however,skip()willonlyskipdatainthebuffer,andwillroutinelyfailtoskiptherequestednumberofbytes.RV:MethodignoresreturnvalueThereturnvalueofthismethodshouldbecheck

60、ed.SA:SelfassignmentoffieldThismethodcontainsaselfassignmentofafield;x;publicvoidfoo()x=x;)Suchassignmentsareuseless,andmayindicatealogicerrorortypo.SI:StaticinitializerforclasscreatesinstancebeforeallstaticfinalfieldsassignedTheclasssstaticinitializercreatesaninstanceoftheclassbeforeallofthestaticfinalfieldsa

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論