From de7a7ea4ffa744ea9fa15f4d8847e4914a01ff84 Mon Sep 17 00:00:00 2001 From: Tom Copeland Date: Wed, 22 Jan 2003 15:44:43 +0000 Subject: [PATCH] Added some documentation, updated line counting code git-svn-id: https://pmd.svn.sourceforge.net/svnroot/pmd/trunk@1359 51baf565-9d33-0410-a72c-fc3788e3496d --- pmd-web/readme.txt | 31 +++++++++++++++++++++++++++++++ pmd-web/src/PMD/Project.pm | 9 ++++----- pmd-web/src/jobs.tar.gz | Bin 3469 -> 3467 bytes pmd-web/src/processor.rb | 2 +- pmd-web/src/webpmd.pl | 6 +++--- 5 files changed, 39 insertions(+), 9 deletions(-) create mode 100644 pmd-web/readme.txt diff --git a/pmd-web/readme.txt b/pmd-web/readme.txt new file mode 100644 index 0000000000..b6205de131 --- /dev/null +++ b/pmd-web/readme.txt @@ -0,0 +1,31 @@ +INSTALL +This should work on pretty much any CVS server, however, all the server names and directories are hardcoded. + +- install Perl and Ruby (http://www.ruby-lang.org/) if they're not already installed + +- check out the code from Sourceforge + +- put webpmd.pl and PMD/Project.pm in your cgi-bin directory + +- create a cgi-bin/jobs directory and put jobs in there in the format: +File name: something unique, usually reponame_modulename.txt, i.e., pmd_pmd-jedit.txt +File contents: Sourceforge:PMD-JEdit:pmd:pmd-jedit:pmd-jedit/src + +- create a reports/ directory under htdocs + +- put processor.rb and pmd.rb in your home directory + +- edit processor.rb and point it to your reports directory and your jobs directory + +- set up a cron job: +10 0,3,6,9,12,15,18,21 * * * nice -n 19 /path/to/processor.rb + +- let the fun begin! + +I realize these are lousy instructions, but I'm not sure if anyone other than I will ever read them. Thus, updates are welcome. + + +CHANGELOG +1/22/03 - Added this file + +1/21/03 - Updated to use new SF CVS configuration \ No newline at end of file diff --git a/pmd-web/src/PMD/Project.pm b/pmd-web/src/PMD/Project.pm index ef3c3f473e..8ff9e66ea1 100644 --- a/pmd-web/src/PMD/Project.pm +++ b/pmd-web/src/PMD/Project.pm @@ -35,12 +35,11 @@ sub getLines() { open(FILE,getRptFile($self)); my @x = ; close(FILE); - my $y = @x; - my $lines = sprintf("%0.f", ($y-5)/4); - if ($lines == "-0" || $lines == "-1") { - $lines = "0"; + my $lines; + foreach (@x) { + $lines = $lines + 1 if $_ =~ "} zN|yiuqEeNvKxh&qK!DJa?7ipa+~>L9?)tpeto6>!`pv5mCqo!{u5V5tPP(~VNi9=p z=JAy)(l&Q#YMnboEkD=RcC5`eRyRPt@sr5fz@0-71+t^Dc9 zj4S%FKle5;tb6_V&;8>+H3UAgfxkkoG`cI?VKpn}hu+rEEe&;+x2w#taz_qLyKD24 zuWa?1+oU-vaXsd5V8T{)x@{|)fA*zptB|lGrdB&Cg16m}@#y@zD&j;3S?3TmGV|k} z;5!baBWq2J-CA;k=N9I$&G~VAw(gVrBVE61?-7Du02*CWr~RygbUuTG9jC8`qonjX zJNa5f_be0IV#Q5=ovTvw@QALldGz)OUN+^2Qite2=GSvem~K%oo(gSW^3DfRUL%EgiKgZ!e>a_Aqp0?gm6x#+`M4 zk|4WR;%uYSg2WMU#k!>t9f`@v6Uh_3u;9(j9sz%_g(bgk7@-2ib0!?x&1 zCg0n>!)y|YJ7JzHQ*R)8P??}>-GH%O*Km&1JW0m5RQ_;M%R%+Lrm!Xmx(~@e$@B6I z^_ufQX%@f01;!GMc39l?toZb9)fam_H3Bs4-BMzAW{ro{0h|6v( zaE8Z3boB2UBeKQqgw5J^jDJf&?mMSNF~c|rcd%Y|{ewH$6fq$k>E9k=oOjmDKQC|< zo1dc=W~fFOI+OgzN8wLy%tU|s@7o*g3KlVqk=;Bb^fkr8VAd0BS^i4^S^HU~Il;7` zZ_~GrznA-NDQ*%mZ1wyIp6O%XA*~MFec-nM(d%&C!Q6SW>Ks*aJ*K--PenT@pW)?h z;&*xqee|qiNGeg$i593>zjf@kS{7x(-aOrho}JtqhDBedgWA(v?Xf)VSB>nyr)X z;m2?4vL2$eGoFzn*^#;jK4a>R}h0S~5J? zM~R#0q)DcA<~E5fjI&%4AlV#R+IJ9I>5>;J0S?cba;FDMRn{#tz1;pKxoMMS!<08} zr{-yX!tY)O%39zft@J6OA)9(LPP+U;D`wF;ckYFxez^vwGoH*RZ(K2poT`3?)9()I zt4|bK0@1QBvq5jA^L2y+f}kh%N#IgFio$GzP5)4}!P+^peES{e{Mp0LV-=Pcy+FMw z1zeOC)r8Zz3JIQ-=*Kd!S%A|oPlFzNQOpk zNpyqB(e?Z^-c4owaFkkx;-_jKJ*N9U5U4i$ylAp^EV{UQQYm1Wjabiduk{PpIGS9j zJcCha;Ij{mKbqrUJ1+uIi!yO3Z<|ZrSdqsuvV7wvhbIzc6FXp0fRk$qnqjgArzu|@ zg5Pah22*4w6=(0RQ2Th;^b4tBto&=(vy0b&{vBS<+qvDrqfWPgtRPW970`-H3L2zn z+X;=YOpi7MD7GJJSwtMd=P`;zGn}?`f!&fXc6jJ*-`-ezV0G3|h-}C$9wL8X3Z`Q= z)9r_m-5Uv*i-iq5mU^4D>rU2hWW>pPUj7W(y77|F7~QP5kFs1i48a)9YkvQPQVFyy zFXKSaOP;6leyY=qSB{jh_&)+~1N7VFl5xLNNqzO-cDDK?aF9_n0ae$DoD*o=!w}uE zTBI&?Qn6DYegCxfkZJ@s=r9efb zYUhlOeZ*5f#G|arPO`Vmu2(!nSUHbU=zsaFf1!y+-CHbJM5dl9r>rG+~UiJH0BS~{wRTb4Yx@k-M%KLImQzIC7@^BsM@G? z^Tz>}P1f0eH*GeF9_G8#=42 zx+(_z-9H^uLrKJ#uk1xH2dU3LSbR#PJnw`56x5}Q5vF!Jz)JN(0j(QDu%kj3&gu3Y}1e&KX*1Q5SeZ0%e=Z^dH~7@jJhc z?sC*)6t24I9Q*2i+wXy&M(=IgIx$-RK9J^ReFwHfH+&3@$M>hTl(%=IMZYB=;Pt6P z#oBULd%V%j!6^4IX&@CPH%9TuCtEw|zSY;4two6SJCmhmccmO^2-7D_P{5nB^nMDS zQi4S-ldc4Y{SW%n+$)D4%U5hV=v}q5O5TA(v5vcO8a*Eg?3o%K9D?BI7N#rMq7FL_ zTshJjRn5-HUs5*PHQNO=+hfg92TVdR0n;Djpe%`70Z^=bVH_%&F^ByjDQam_B_S`< zf6$ZaqrQtR?BXMhd@`-fLSLr;MCg1#eQ`V2&#Ggd8VfMtaR5F~bVys{Ydw%)(D;+&h9$rGWU)8qZA?*bZ zy7&;yoLkaRA}xp#nt>?1yF56yHpH;Ts6u&fVs93CfG8F1rJfm=TIG0W60*%;AI`xL zjVbsT9*=KaW}X(vh{&=yfSx3l1Ddu7Gh;DZU3?EVY zKO_X36)dUOq+k1`cAPzi|>ha5TE-W6zhLDxK;Kw zdEJw(mbGb;C;HlO`f0E+*BZq%_R5P;DI%(}^z{x+p_tVVbG=kP{aie1oZloQ-~RLh zI6QE)RkZ+>g1tcRl$h@Oaqd)PoQYiNO9__mSEYn{hxzv&7YF{a_dU4k?aOrp$9hXP zw4}jH_4>;L)MilN@R7U6v7ma06lYhAiW|-qpO8GFuKAs5daR+!@yi$Z9Sk<_Ns3*; zxLqrm-nn7mk5Y$83|pJT6xAs5M4^S(o@F^@nJ9S_rI!(+wbp~13HVE2#E|l(5luG6 zcX9vV`B7apu+UY;yT+?ZK7i)aCfrUFfuuo*Y=UCJl0>o)@j$7P7cn^D5Ypv377tpa zB|;#L`DR1WCX3cf-LBxD20YVOT)3|FzoaM=f{Te?S&uJcN@|5f{2Ef5o^!Ow2>w2S z3Wy=t3~P+GW7|<>c(XZ#M;HBTU~!G4Z`4Uvj#@WJd?76-1@3#GqhPur&cVlp3>hnh zMnc4q1-elLk-_io1)*@LZH&qw;`Uwsmp)xglO^<42Oe0+T-_x3po76DXCRG9Z2l-} zcyC4oxFMu)`*A{lfT)nOAuD7^J_d>od1shXNX)myT=!0x4#pFb`XOi#x6>VKgcHD1 c(aG6dCecA8{Qs+pz6PXk{d8_2Scnn+2fDt6kN^Mx literal 3469 zcmZ{mc|4Tw*T-ipDWiszk;1H-)KSjDOutksb3{Y8MnAka@w2GQbXFx6+xan{hfHDFcIx3 zQ4;x?<*%tTzL0j;WZx72)f(PgeoR{4rkLS6?@Q{O!&jUwlse}li%4nw3EDX;si^s# zhV4*VpSRxF>x+#W?Yg+Zx9wm^GOi@GyzI1ucfEPt>acr#Jvvr&CjP^E1gXe%kkjMo zU%IFuE{;jSH&N2~H`cz*Qan`DL~fE0He9c|#H|cZN$%c#WWg`u%rJ9dCORCMd*eR7 zEzSnag3hL08Y9cESFtyAh* zrJl?D@CDwja1=lPG+!=TFdljB5+0DD4#-9EY|?335z|drzcn&UfkR%uiy!?+XwQEl$StUGN*l;I zu2N1XT)XR&lx%x1&!8|oyjZ+9ojxw2#-~mqoUcZ7io_UBDh6O^>&Cs4j3Z?OAk|p|d zWljm_X;s_Fw9CQDTc~q}W0%z_75#A$$V<5JL@XsQX!Ri6>17b61Lc3TT&i*u{|>gP(YMdu^e z7rLW0mTz2^%F8ae3E|~WaA-3lG_e)^(*d5krJoO*@Ry8EIf7AcJ1TSTeu(RduYV*@dw58LCYHNU7?$n;NIJJKFK>UqSXEBh& zeKDS$g434-s0YF48$ir`N&8x=l=-rvq0P z|A~W+QciJ|Ctl?@p~yDQHpofxGf&36PHNF%mgy{kZQmw^(>O|=0as3f0B!H9?k~iB zm)(ncm2&0tDXr)MrG0q#lpL003IY-JK50>SRjich-1HMr+B@S2O15W3v+#&Vl~3BU z1ZktFEKXxPZtfW!xvppTXRp`0Fw%et*H>@N_qXvg^GYsfGW=H;ERd9jCi2-v51>PW zzH9`0mJrZGSYQo=R1?f{($_nm^J{ueo$Gsd)!vfmnG}eO0_x-RMi{LWGZ&xhf$uG= zyi-Y|hQBdQW8b@B5!9q+^V|HSfb$r;4jv1rB@sY=lMa+=BLS}n@eB4&o^Rz%NU;r1 zO6tDcv5PB26+2sms9NX$ZbiqUuo^~rMTN0Cd8NxO`2&QpFJQAZ1g<(HO1BH3Em5Xr z;xcTXR*K!Dp&dVPeYRFkvW`Uec<9<4FxowaAMB(;2OnadM-PY;#^Cj(F)4TsUUaQ) z{C=b?CA$$HeTt`$&_eB8@e&Q+;^4yH;%~iD<~Pu13yrHI@LLr!L7(ekALq=d_luR{ zkLvB+Bycer8yqH10m8-yay!5y3a{ns;O?AuG4F~V!E`I#)6M^|H;qn6@#(R2A+PO) zWg>PI3*B2_cU?9qNjo3KvLvYGq}Nw^FHyYQ!uMTC%LPk*O<_6IJ~P1ed;S?7lAs%| zh>*2|gOF45{;&#tKBa5?45{9vH5cCGdX#HMB;WrkT;)eY!HDl#q9&2 zi@)aQ6=LvplFajlHL$U#wj^t{ z>Ye?#v!QKq2IXs+DxW)^x1J08Mn@*u4qG>yI8Gwg`M_PUMQrX7roW`3y^QX6tZ4tB zlq`S!(}3`}(^S`BAQ)Arh|~SXKwu5dO>OMQgngk}I+7UOcSlbMJrIc%P!#?{_@(WtYBQC*(3Y1X$X5@|DgZU#bfOb zO~5EniR;tva3G0!1yEas4tw`_JJh1XUFmRDfP}tutw?&v4Zde%#(aEyNz$`VEe99* zr2U-Qcj$xJ5qBZ_$L}QVD*oc%@wIc|M7yA!GStI6T$w<|Fq+G&yoYBlqskvH5oY5Dd z4LE`XbxZ$p8b18yxJjR6FCm>kELz15wwu+ubCyd^PgKt4@zJokJ#2f~OCi;x6qH`2~@@(3E5{}|k6hUN8Oetv_-QLQ}XV@t7qFrbABaP$+L zR9c3)ETY#xnlpPjMwgtqs{Y`y`&a`gwTTdB*qX`YR-`5${<=Jzv8b4OzOPfs*m_ai zvFiyQkE&uc{)A(I`eTP~hLbjQexsyB8|wS?fX1*kTMg|O`s9pfo) z5mTDiP!h_CvwHhKy5Bbad{ZoMMQ5z)4=yd~&KmT?99W``Nv}MR1Oap9xoM+46GQP! zXonSZ_c?-&(^H?M^p)|5={gkoa`X zu0z2cCLAN}O>rh(_ibfRdg;an{ZsAWqh#F&Q>z>PdJaZ)NhLH)FwUPYaBAbnR2Qp` zDOeuA*M0C)|Ha=O_k%M8?2}w@lELBPtyBrfX;;XW{!}fb%DpnE7TX8J2TmEQWrq-g zQPowwJMV>SehL3a5ClplBKF)GUvSVt=S}kFY!N4`1m!MPblvga=j#&jAjd2P^$RsQ zh0g`3Dcp+M-XNlWQzOVi!~X?C9SL!Jv(>tXlkArXQuEv|669jpau~rNMvKP4*V99! zC~MxY_n9sEDwJR?lO6Nken~Vub~AI>i}P>A?Tm)FRr^0KK|@MbGB6>UEu|8-w^m!3 z2vJuAlzP$7fRdobGY9j{Up4V!uU(Cs+CXl(^YBSApUvVUU5IK&1kUAc#4k+e?Ww3U zj0;}KwOyXTQBzULIT2IsUn#3viueM%lyL3%2jE@7*r84Bz@#v>|CAwU{Teg>q+Y!P zNhI(6DJq(BW3T-qsQrhIE&Y%NrXqG*tzqZCATL2#87yGSa&ju^$T)kA4tbUk%&dL3 z;;jK8(8a$I-pqjR&S{KCtNP0nFLOXi1N&XR`*(WABvd%{dZ*fwoTjqNJgf6~M45%$ z#8=P%eW)58nn#Dc#YF<(T7Drq2gk5BH=Edu$5!r0JJ7p(;_8VF+5RIEwAGjCiy1Wu zp^iq7PMD-WEB"); print "PMD is a Java source code analysis tool - it checks your code for unused fields, empty try/catch/finally/if/while blocks, unused method parameters, and stuff like that. There's much more info here.

This table contains the results of running PMD's unused code ruleset against a bunch of Sourceforge and Jakarta projects."; - print "

1/21/03: This page has been down for a few days due to Sourceforge CVS migrations, but it's back on the hourly cycle now"; + print "

1/21/03: This page has been down for a few days due to Sourceforge CVS migrations, but it's back on the three hour cycle now"; print hr(); if (param("location")) { @@ -66,14 +66,14 @@ sub printStats() { print br(); print "The last run took ", sprintf("%.0f", $lastruntime/60), " minutes"; print br(); - print "This report is regenerated every two hours at 10 minutes past the hour"; + print "This report is regenerated every three hours at 10 minutes past the hour"; print br(); } sub getTimeUntil() { # we're starting each build at 10 past the hour, so... my $offset = 10; - my $everyXHours = 2; + my $everyXHours = 3; my $minutes = ((60 + $offset) - localtime()->min) % 60; if (localtime()->hour % $everyXHours != 0) { $minutes += 60;