FindBugs Даведка

Original: http://findbugs.sourceforge.net/FAQ.html

1: Я атрымліваю java.lang.UnsupportedClassVersionError, калі я спрабую запусціць FindBugs

FindBugs патрабуе JRE 1.7.0 або больш позняй версіі, каб запусціць. Калі вы выкарыстоўваеце больш раннюю версію, вы ўбачыце паведамленне пра памылку выключэння, падобнае на наступнае:

Выключэнне ў патоку “асноўнай” java.lang.UnsupportedClassVersionError:
Edu / UMD / CS / FindBugs / GUI / FindBugsFrame (падтрымліваецца major.minor версія 51.0)

Рашэнне перайсці на JRE 1.7.0 або больш позняй версіі.
2: Калі я націсніце кнопку “Знайсці Bugs!” Кнопка, я атрымліваю NoSuchMethodError або VerifyError

Прыкметай гэтай памылкі з’яўляецца тое, што, калі вы пачынаеце аналіз FindBugs, вы бачыце выключэнне, падобнае на наступнае:

java.lang.NoSuchMethodError: org.apache.bcel.Repository.setRepository (Lorg / Apache / BCEL / Util / сховішча;) У
у edu.umd.cs.findbugs.FindBugs.clearRepository (FindBugs.java:483)

або

java.lang.VerifyError: не можа успадкаваць ад класа канчатковага
у java.lang.ClassLoader.defineClass0 (Родны метад)
у java.lang.ClassLoader.defineClass (ClassLoader.java:537)

Праблема тут у тым, што няправільная версія бібліятэкі Apache BCEL быў знойдзены. FindBugs патрабуе сваю ўласную версію BCEL, які звычайна будзе выкарыстоўвацца аўтаматычна, калі вы выклікаеце FindBugs або findbugs.bat скрыпты, якія выкарыстоўваюцца для запуску FindBugs. Калі старая версія BCEL усталяваны ў месцы, напрыклад, “Lib / ухваленай” пры ўсталёўцы JRE, дзе яна перакрывае класы на шляху да класаў прыкладання, FindBugs не будуць выконваць належным чынам. Мы ведаем з некалькіх прычын гэта можа адбыцца

Калі вы ўсталюеце Java (TM) Web Services Developer пакет 1.2 ў Lib / ухваленай дырэкторыі вашага Java Runtime Environment (JRE). У файле ёсць xsltc.jar старую версію BCEL, якія несумяшчальныя з FindBugs.
Іншая магчымасць складаецца ў тым, што вы карыстаецеся IBM JDK. Некаторыя версіі ўключаюць у сябе версію BCEL які канфліктуе з адным патрабаванай FindBugs. Гэтая праблема выпраўленая ў версіі 1.4.1 SP1, так абнаўленнем JDK павінны дазволіць FindBugs для паўнавартаснага запуску.
Некаторыя версіі XSLT працэсар Apache Xalan ўключаюць старую версію BCEL ў xalan.jar.

Ва ўсіх гэтых выпадках, вы павінны быць у стане працаваць FindBugs альбо выдаленне парушальніка версію BCEL ад вашага JRE, або усталёўваючы чысты JRE або JDK і выкарыстоўваць іх для запуску FindBugs.

Вялікі дзякуй Пятру Meulmeester, Майкл Леві, і Томас Klaeger для прадастаўлення інфармацыі па гэтай праблеме.
3: FindBugs працуе з памяці, або займае шмат часу, каб скончыць

Увогуле, FindBugs патрабуе шмат памяці і адносна хуткім працэсарам. Для вялікіх прыкладанняў, 1024M ці больш кучы прасторы можа спатрэбіцца. Па змаўчанні, FindBugs вылучае 768M кучно прасторы. Вы можаце павялічыць гэта, выкарыстоўваючы опцыю -maxHeap п, дзе п лік мегабайт кучы месца, каб размясціць.
4: Што такое “дапаможнае класах”? Чаму я павінен паказаць гэта?

Шматлікія важныя факты аб класе Java спатрэбіцца інфармацыя аб класах, што ён спасылаецца. Напрыклад:

Якія іншыя класы і інтэрфейсы клас спадчыну ад
Што выключэння могуць быць кінутыя метадамі знешніх класаў і інтэрфейсаў

“Дапаможных класах” спіс Jar файлаў, каталогаў і файлаў, якія змяшчаюць класа класы, якія выкарыстоўваюцца ў кодзе вы хочаце FindBugs для аналізу, але самі не павінны быць прааналізаваны FindBugs.

Калі FindBugs не мае поўнай інфармацыі аб класах спасылкі, ён не будзе ў стане вырабіць вынікі, якія як мага больш дакладным. Напрыклад, маючы поўнае сховішча спасылаецца класаў дазваляе FindBugs абрэзаць інфармацыю патоку кіравання, таму ён можа засяродзіцца на шляхах з дапамогай метадаў, якія, хутчэй за ўсё, будзе магчыма падчас выканання. Акрамя таго, некаторыя дэтэктары памылак (напрыклад, падазроных апорнага дэтэктара параўнання) спадзявацца на здольнасць выконваць выснову тыпу, які патрабуе поўнай іерархіі тыпаў інфармацыі.

Па гэтых прычынах, мы настойліва рэкамендуем, каб вы цалкам пазначыць дапаможны класах пры запуску FindBugs. Вы можаце зрабіць гэта, выкарыстоўваючы опцыю каманднага радка -auxclasspath, ці “Шлях да класаў запісу” спіс у дыялогавым акне рэдактара праекта графічнага інтэрфейсу.

Калі FindBugs не можа знайсці клас, на які спасылаецца дадатак, яно будзе раздрукаваць паведамленне, калі аналіз завяршаецца указаннем класаў, якія прапалі без вестак. Вы павінны змяніць дапаможнае класах пазначыць, як знайсці не хапае, класы, а затым запусціць FindBugs зноў.
5: Убудова Eclipse, не спрацаваў

Прыкметай гэтай праблемы з’яўляецца тое, што зацьменне не можа загрузіць убудова FindBugs UI з паведамленнем:

Plug-у “edu.umd.cs.findbugs.plugin.eclipse” быў адключаны з-за адсутнасці або адключаная абавязковая ўмова плагіна “org.eclipse.ui.ide”

Прычынай гэтай праблемы з’яўляецца тое, што ўбудова Eclipse, распаўсюджваецца з FindBugs не працуе са старымі версіямі 3.x зацьмення. Калі ласка, выкарыстоўвайце Eclipse, версіі 3.6 (чэрвень 2010) або больш позняй версіі.
6: Я атрымліваю шмат ілжывых “АС” і “УСО” папярэджання

Па змаўчанні, FindBugs мяркуе, што любы выклік метаду можа кінуць выключэнне неправеранае выканання. У выніку, гэта можа выказаць здагадку, што некантралюемы выключэнне выкідваецца метаду можа абыйсці выклік метаду Close () для патоку або базы дадзеных рэсурсу.

Вы можаце выкарыстоўваць -workHard аргумент каманднага радка або лагічнае ўласцівасць аналізу findbugs.workHard зрабіць FindBugs працаваць, каб падрэзаць краю наўрад выключэнняў. Гэта ў цэлым зніжае колькасць ілжывых абвестак, за кошт запаволення аналіз.
7: Нагрузкі убудова Eclipse, але не працуе правільна

Пераканайцеся, што Java код, які вы спрабуеце аналізаваць пабудаваны правільна і не мае класах або памылкі кампіляцыі.

Пераканайцеся ў працоўнай вобласці і праекта налады FindBugs сапраўдныя – сумневы, вярнуцца іх да значэнняў па змаўчанні.

Пераканайцеся, што выгляд часопіса памылак не паказвае памылкі.
Пытанне 8: Дзе убудова Maven для FindBugs?

The Maven убудова для FindBugs можа быць знойдзены тут. Калі ласка, звярніце ўвагу, што ўбудова Maven не падтрымліваюцца распрацоўшчыкамі FindBugs, таму мы не можам адказваць на пытанні пра яе.
Пытанне 9: Дзе убудова ў NetBeans для FindBugs?

Мы рэкамендуем SQE: праграмнае забеспячэнне якасці навакольнага асяроддзя, якія Звязкі FindBugs, PMD і Checkstyle. Выкарыстоўвайце наступную сайт абнаўлення: http://deadlock.netbeans.org/hudson/job/sqe/lastStableBuild/artifact/build/full-sqe-updatecenter/updates.xml

Пиз Звярніце ўвагу, што ўбудова SQE не падтрымліваецца распрацоўшчыкамі FindBugs, таму мы не можам адказваць на пытанні пра яе.

Comments are closed.