From dc3bffc48f5ed04573fea0df7481ebb5d52b7e46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lars=20K=C3=BChne?= Date: Thu, 26 Dec 2002 16:26:22 +0000 Subject: [PATCH] added gui screenshot to writingchecks.html --- docs/gui_screenshot.png | Bin 0 -> 8604 bytes docs/writingchecks.html | 71 +++++++++++++++++++++++++++------------- 2 files changed, 48 insertions(+), 23 deletions(-) create mode 100644 docs/gui_screenshot.png diff --git a/docs/gui_screenshot.png b/docs/gui_screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..49e68fb8f444985f83c1daef673e41982e902d67 GIT binary patch literal 8604 zcmaiac|6qL_rE1d28A?QW)xDHWU>`9A(T)mjJGhnEMX98>@$@%3?stWL#T`xLQ-}! zmdR38@{ggFiZVBhze$xVap?QI5w0rnV- zZ5J089+#w~BnA(7=aQu2lEkCp!jr@RNqAJiu8T?%1AMIF0unG(RKTYy3~&G(R{=lZ zL$Jpk06BuA;506|3)toUfs9>}TzFI%zT&DkKzY25SBx(5JQFy43G4{nxn%9f!vm?~ z{_{RiA<=nwWOy!L)V&$dKWi%lq-d7x8{4zLM&u*|3QtOyLq6!6t1-n%@+m*zf_3V~dDfCS0-G06O$HP^s z=u^ssRWo3^^n<*P4)6|`u@-kwM6S+KVuIYK*4~^?kK8Oh?Yp)<{Ij}_JmKD~5jm$u z`fLn~8#h?4w79Z-HQ%l>8}YTU>u`7Fs)5(5-Cc3knHD*o+Y9KyLfpoOlJEJ1jX!6x zIpx$La)z^#C7qhTv!-*foqGFq+Y#Sd4;4OWh->n_H3 z#c>jwkXP$It!+IW#j9<62su8Zw$B6CMmwE2Av%F*9cB!q)8#@AL}jLz)1Z$7hj(39 zjM*4mj`sz^-|noqu6Ve_vUV-xg^}#%(jCcsY2zm>_%o%x%T-+!SMYW*Ev5W2wS47g zq{E zcTJ{Q8ztly6lKJ+%_rLX71^w>RdD=eCTHcRJ)tGfkk{hvAA+u3L={te#lRKBZ!g@<`t_AURI-G}>8TC3VUoSY-eu1i1zSwn*j_|!S-1c4{)mSD61&*Qw<<5}F!_g1+bZ~2!pMe+ z*F>{e=qAzY1xKb#LvzzrozvOT_B~Z9Rl^nC8PfiyVtRMO-9|pNMV7X8{_|6S-CUhf zQgy9`ZodDDZOGL8?dfS`*KLTkw)%Yk`bHDb9u#~T7=AHa$g0?yU#`Dk8YT4o(bTnx z2g|X!^53>kET7PJ+c{$pjH&Oquo5kP$MIL_zKiYcvkMkF{&~G+!3m-@3#LJj3f)IS ztk0HxyroqBF$8@r1IH>jS%JWylGbE1a)OWf%a_O7^$qy>zYv}yY!xAw{pRUPP<9c! zgO9aGux^#&f;{yQ18A*UzFx73 z(syK8e|sq{l5v+*m{I9a8*F$kY|-rWm7jf*=>v202Xx{lbQ1}{6W0#7!n51A2d8Cb zydU#y)W!+M@jd!;j?`lG?QojQHPdT9$E@ooO~VY=;_D#tl{#jb+RB%!PV32xWtt>nLpjwr(377myAIn3`y?U+T*H=2l zA!)GV##o`wl^rWCniqYpr@iuBe(clTb-M;4d^e-eh{s*_^JwQ;M^}D8V(nUt_Da2I z$;)U;TV2KWZM0EOmZ#~m8R4!@@?*0`Gqc01an7jR!F818x|}epz|JIuva!Cfl)b_J zNqSHYLv^XPV$(a0xBrb($DF1 zy=L*ncvP#n?be`oPS5t+){JgW@<}>AYi%i`l|}FMQz-1r4+_57soo51Z*9&m&1DcY zNY(g|rl*T^$t<0!+a~8v5-3xNsPS)5c--rpG39`3=EXf7Z~nA?EE!STJdCWhI~=Qq zPMjNNDEAgEbT*vof;`&r-BkjpIG&q6=Tq9pwq9Kvs+{@V4Vg0cUt?J-Wk^jI)?iT0VQh|JU2??i-_%1%j`VET;Qml?OiPU#=cZ zYLR}C^+|7|NhmG7I8a3=HT=n^?Mll`=IyA_-_3&GH8zJ)w!5nWe+LL#3D1c8mw1<# zB~!hR7hcDQuEg6c_uPhQov*<-Qv#=dHo##GRkIGHl|UvzD{mk6R`4D%ms^4OqEYus zRj(DXw^uLb^x5Z06IX)p7zkAH3AO$QY2RzDC_b?ssN(f6R2`@D_BPGuwD-}`oxgpf z=;@W$wGAl&*^X-Gi9@%-ExY8u-OF-R$UH-`9v;O%|ZSt`)%W-nW!ZS<8MDJSn#X+Wx` zWr5W4?9p`BoT9&s?Z#bx|S}h=^^H`1-3Dp zLHvDlgt}GJIRY0-9Wtfe#k{fJZTQRJj}(k!WB4?hiKtvpFoe44@1ahHudX#Dfk z@5D!?%CA(%oPc;%1U3KVn-}Z@r6+zzo@peHAcF#A)~>HaLDQQED%yS@LwXc_C@V?R+g7v}rOgN%;>SK&`Zl1K4Jhc=XA+m<6ms`FlVxNR=?&Fl`-#%o z(#AYACWg3RFr~n9le9PhyMcmd(3wB_XZV2Jvc!+R%k-J)Mn~eBfpkfn$hkj3Fp1tk ztPylTjO6x6eje&i+-tpoNeqC5I=^||oVFGp=QD8%R{x=R4^5}DFBz6<2 zr9<26@VWici3Q~M{m!RIwU~2(jB3A=kc1@q9bZgNAVgtjLSy=^lo2YwnK(iOh_)w? zN2v9u?u_oJ<5OO}ZKF)my&)J$C)0uN&wR~psCyiGk~wY^PT9D!*xDSCXYCBQy~(^M zxCtE)R(3SW#0HoI5G8HCFmMQ(3L3+x7vE^KL!=%PAyfW&89l{9Zb5@Xf)2rTNS)ut zMlcKA`%L>L4x*}vHx5ScDD@(LN&e@^eq$&59~;ewk|{Pt32*vgx%+FT6`#^y(0@%` zxEt_k`QTDeMr-4Iyze*C?O>uUt6r-X+AEA<1N?Dc=E)6YbRBs>?D@By*a)OYdMp;^ zr)Ap9OLjy!7$TvHZY<=x{W4AP8=*Nd(1R?xz^Nyvgya?nv5QKMhhZs=t>{_IAlpNzxlL?(TXo`O8qw3o! zKF(5`AecSlqzxofQQO5Rmf{dK_66-^w;#ampIVmp+Hee^q_&ga!GR#&x>3LZYSX8n zTs|a}M7F;#PhilQsky{I^Tk64X=R^yBDbJ-_ZNNKfLn`E}y;uE!j($3!BLJB(S zn@-v5&~w5*3)~$*=tw<88fHSF^};dwC_y4GaQS~wNe3yuz_F!3EfYR~Kl@o>liZX> zAYRqxXHkb7AuQxC`ZTu@g@)mYc_`3sZJz0Z4chJhG{;`Tg`-K&pP6I{Z9=g&?oObx zd4Uu*&|zCM%>tCsZUl&+;w;Jfpxyw#;%^c-zjYG4T9!q0a2q6(XA=ytzvv$@e+Bk9 zLN@3x;flh@j~rvk3~&cK>o%W(7`ET z77z@`ePHh`#f|^Jbb(*=C-H;UdsY6tH_Gr*3KHKp&VyB)wCq3_U_V9TTslb`OL!|i z!Z_a2A?8b&qvPbf&|2a6P@4%0IT!ylh{M*fvgZntlwrG#Q&~n(8Ji zM)Y~j{PK@W9W;acpa+9Z)s$`ja_5zeTuUWCR#AQK#zY;o9Ov?t^hM2Q(X>CAzJ8N} zAo+N>9@``j?I^xklB!I5?P#!x#LY4?;VDhqgJlwNKJs}H6E)0IANfk0QoGg15o(|( zY4b+o<>v=&O6pZg>#jl+UEl)+`ozObeo@ zB8q#B%TFxDe;SY;Aqh;%$=cK2cg=9zc+oeHN;+Ql8>Rf`LFEvZZg3~I)Up8`Z@hzb zQyy97qb19sUNG(JFSKkq+)=!MeqdZQPJKH|3@1JQDQ9CkT!Ey$6j$RQzt0jQxR7nM zx=uU+MVdo^l53;PwhtREFH@Z~^wsMkhKRU!^+UT1=B6$ zC)=uQF9d3$8YMU+KzWA}42xf-&wLkGkhH9W$3YJchGHO=P4MjcdA^w1mUTe&lG04g z<3w?f$OTPX_T?i&N}<7z@Yp{Ii4ZfK8(~J~m`vr~PwyhABlp|l<&L=yYr=oOS62;A z*lpEbRb0<>Ct&%Er4%aDQ8;q@l*Zo7n=2ck=CIiVfXXNOh*R$xeI_OWv`vLBk4;uN7wZ$CV4Qj?u zMvz#0W*s=PL7&k!PxQyXXc4gw+)4gk`J?!9%p5&Syw&1R!clc9K)?=IBet0nB}q1G zA5f>$O#B%`(VaJ}1xm>V@_hNynegni_a*2p>Oy_e@ELna^^*Sk2g_R`>zHNn=oJfe ziO_6L+QcHMztq?y7lfH^Zp%wkwqb{3)P6N^yE{?1Xb}xpivV)Mq&e zWML2brXw}l@f3|R3#5ijSPr_Tfu*FY} zY#b1o;?A4MeqHWZrCOKI2fS~zt2Z4=qIz;|Oo9;Zp%pm+UmAnr7F3;7Bz%^<>A$|m zAdl*lnad~qKHi|2;VOO|_-u#DMPJ&QjmGhpiwV-Z>nr<6* zUmP_oQF)yTx**ii4GIjlJ=~yEo|xX+vHh)&foVRe0DANCo7g!vtvpR&iS#8T(2G!- zYn>u)0dm{h0?1udhmCb}XK^Y|nn@~ryUL$(_^q#_dAJ(paxHWim(YTe>cyf|&{=ZXl*1?EWSxY?*QhkBm_nEh~lHo{bKYir*TDIe=<9v*XBHx^F} z)VeYOFOladS&K*>Bos7=Ai=f1PC)jC^h45T5h(=XJB{Eoin`7+Wr6Y$4h$;-)zejP ziz-CR-B7Yr(;_g#4CEgkvD^o!4J5@75PJZtTaS_oEp>^W=0 z4FHp*KcUVQ96&K8t#Sx)k}8N$Lt6I!JpG)2@OpiN&nd;~=!b;81D&vbX$||SC-g}_ zeOs|UX1Ud}o_e1yEmJ&Gjo3p%dbYG z@tP&36h3;m^M6P0C#gw3s+Z!YE0=0UN;Ebf0Rn#q>2RHhq|)Up=eP@iE!_ z)hbl^DW3QNpv0imQ{u1^#6aq-8((tNY4d0fkkJJn*cveWcIE76i{qa7@H10%odT3g z7;!J{*qaZ~3o}(n%dc<=Gf{{XH05*O7*5ohQvOkaII&1i@QwA%QBE5{8bVuN!pC&( z6#gJl$B=VhvH!9uMU^3GUL?gN3_@)i%Apo0Pkt}zjQbF`Cecv9p&~ZuI^igq7@(!> zSQ5vcr}LcYxiplG;;yT13+fwNyPN$tg}`d_EE@0vk2%Pljx``32zP~N<`i1fV_KUf z<_1GL`!g*L{Ft;rVHnS1Mimf^M8Rl4%MVQY&Nb)eWf2x5ChL2*W)2D1-A~?W5~+PL zQnI34B@QK(8po(oiO{IfZ_TS?-wSPO%nz!OB$_iQXF-e2Ej)B8fexbC-}W)qwGp-N z`;bN}K>5WRCzFsH<~-PTf_5~JF)mjbj@%A*_0RI!Tao@S_+%=3mBPwOL}7^fleJF! z)ZN5p88j}EV|jIcg2&mt1uWj|K*Ui?PtUr_w5#t7NQ(Ntu~8bYOT2VkLcdV57|?wG z8p#aQ)YjY7fsOe_>iRnRl3B5$|HW6~8qYn~Z*1Nlz!3el;8m(+6A??pbK7JPTLToaN07IJ?^Elv!9)*n5KPVzBvH=};pg;F36Wrab)}}y>BynX;M=apU}1O! zKkbhNDj^(vFtEds-9d6519LRT!^O;WUkw%&3o=0;B^jIrv^q%>2dqFIyU!TcDR^(9 zbJwBEfEzShQuGlX!lDign?4r;lScWcC-SA20rn4&4d!tmm^6L?l%W9-97d1L`9CzavDA$IA)9jAuzj*;nNtp%4K^g*fl_!=#R;PN9QedNtI%XLna+EuD z8K~8l&pJ!wX0J?ly$Fu2IG6CTpiB$_YXOmBQ6mTE@mGw}Mg6k5aW!WaY^>O<}U#$gE z*X~{dE4pMlMtL4OgAai8!?=|K(=GtS{A-^JI5+9S5QGa(8KzNmjbCs>f zYPtRIo*SRk-=a=biLI|qm>|C4 zE}ZT3g6Aq%gs>0$`G2ghR0p+4a;`()B^SHj3KB+sm6}!n-C)fTtfFu&|E(X~<=nqG z(+&bCDN-k#WP#+4Yoc5We*CZfIfUjceH735TV%zyfTn||s5bp=o?QKF963XHE(*oz z|18++|6Xv>9+=k5AS|hGq@-U2*6PQTJ=?bfV91CO_l;5&z*lRnjez^|ug|5+KrS`} zM@wDZ`4oS8{Et`2fcMDZnSO(Ukeai^6}1Shnqvw$MVJbU>UIH(edk4Azq@kCn#5m` z_q9K!PRV_O-_U{RvOlbvX_Lx~3cz-dY?UXc>3mlk?~W*!>*)}k&to98UorQQnpj^) zjZvfxY7)cn+`W>QBSo8rDT@NYPf1>?r`e2)Hm;NO7=yjlj{B}>*0_6ag1X9^t!$WG zEjbqH3Cd^kURUv8@#08OSA?b zXzTfRl;9eskMn!|vd-`!gwABC?T$x2E;_qJ#&!UdNnT(K*qINr9tBd$N@Pd^7=*jg zg4r)%mOuAq9s^l^+x0wbX{P9bgHm|-P{|*@?vV&8<71@A>67oz&jdma7%+A27Bz_o z5WzeL3~gnp1jg3qPwW(VjjKH$D$2`Sz4QsC7Mu5ds!>;(&gg=1w~+&6ZSQ+S9{i{N ziw@wbQEX+iZ8JH&lPK`djBc4GHDw+RCeDpFkhXjL6vyk)ll;eY5hGh*@nx;C4eh(k zJc*&Kf@hah+@Xloj<#el>$@>BF_*e7W_7jk- zAWXOgWr!;))r97U)Vvj~wr>w!qd#0Eoyv$99Bb*{NfAME!F}NXc&HI0FF{Obj1mR2 z(8Tc3#21(RycO0sz$KlsZQM~XpVOgnJ?i0q>rvxSy)y3E06Hb|e8+J?o1Go!-%GHN z)Txl1(5qm`mjXjMTD56#VDjDY-(af8LHP zo6Kd+#2V)67#gu_yozDSdG6r_o}QQ=NN4~tEGk*kh@)CLT4y)D+dVDi_XE0)d_&i_ zdos4WrIe+f7|b(W8`13-Wyei2SJ+P-OqXyqIcwmThtB(dfO-{xSQ`CY4wQiXMtL?p zc>R>>0KQrdm>DG%)ROJ87nBWqCTpMp*e5NAVmd5{QSj$lcI0`e=9PK!T-=6ew>C{l z($!};#9k-^uB|SkAP6M3-$%})i%^pg>E@~Z&A$~rp|Si;v|)h&h_=+eiTe-e5wx>^ zp>wkkFh2v2Kgi?~6t5s!KiA-}o^}?Z?(u|<^gqxK{y-p)`&)p?Gn^WX`I}6amb>;F zjcku)D36%7rH&j;2llzzrH0Ic!^EA%ql08Sm$%V0-=<0I7i5l)JVGxrVV5%KdDt=s;asB@7lj96Q7(Q!E(VL3(OP? zl0(*H

- TODO: screenshot + screenshot

In the leftmost column you can open and close branches @@ -269,7 +269,14 @@ public void visitToken(DetailAST ast) { - int methodDefs = ast.getChildCount(TokenTypes.METHOD_DEF); + // find the OBJBLOCK node below the CLASS_DEF/INTERFACE_DEF + DetailAST objBlock = ast.findFirstToken(TokenTypes.OBJBLOCK); + + // count the number of direct children of the OBJBLOCK + // that are METHOD_DEFS + int methodDefs = objBlock.getChildCount(TokenTypes.METHOD_DEF); + + // report error if limit is reached if (methodDefs > max) { log(ast.getLineNo(), "too many methods, only " + max + " are allowed"); @@ -456,7 +463,7 @@

  • You cannot see the content of other files.
  • - This means that you cannot implement most of the code inspection + This means that you cannot implement some of the code inspection features that are available in advanced IDEs like IntelliJ IDEA. For example you will not be able to implement a Check that finds @@ -474,31 +481,48 @@ href="api/com/puppycrawl/tools/checkstyle/api/FileSetCheck.html#process(java.io.File[])">process(File[] files) method and you're done. A very simple example could fire an error if the number of files - that are passed in exceeds a certain limit.

    TODO: - Implement that FSC and provide it as an example. Sketch:

    -      private int max = 100;
    +      that are passed in exceeds a certain limit. Here is a FileSetCheck that does just that:

    - public void setMax(int aMax) - { - max = aMax; - } +
    +      package com.mycompany.checks;
     
    -      public void process(File[] files)
    +      import java.io.File;
    +      import com.puppycrawl.tools.checkstyle.api.*;
    +
    +      public class LimitImplementationFiles
    +          extends AbstractFileSetCheck
           {
    -          if (files != null && files.length > max)
    +          private int max = 100;
    +
    +          public void setMax(int aMax)
               {
    -              // build the error list
    -              Object[] key = new Object[]{it.next()};
    -              LocalizedMessage[] errors = new LocalizedMessage[1];
    -              final String className = getClass().getName();
    -              final int pkgEndIndex = className.lastIndexOf('.');
    -              final String pkgName = className.substring(0, pkgEndIndex);
    -              final String bundle = pkgName + ".messages";
    -              errors[0] = new LocalizedMessage(
    -                      0, bundle, "max.files.exceeded", key);
    +              max = aMax;
    +          }
     
    -              // fire the errors to the AuditListeners
    -              getMessageDispatcher().fireErrors(path, errors);
    +          public void process(File[] files)
    +          {
    +              if (files != null && files.length > max) {
    +
    +                  // Build the error list. Here we fire only one error
    +                  LocalizedMessage[] errors = new LocalizedMessage[1];
    +
    +                  // get the resource bundle to use for the message
    +                  final String className = getClass().getName();
    +                  final int pkgEndIndex = className.lastIndexOf('.');
    +                  final String pkgName = className.substring(0, pkgEndIndex);
    +                  final String bundle = pkgName + ".messages";
    +
    +                  // create the message arguments
    +                  Object[] msgArgs = new Object[]{new Integer(max)};
    +
    +                  // create the actual message
    +                  errors[0] = new LocalizedMessage(
    +                      0, bundle, "max.files.exceeded", msgArgs);
    +
    +                  // fire the errors to the AuditListeners
    +                  final String path = files[max].getPath();
    +                  getMessageDispatcher().fireErrors(path, errors);
    +              }
               }
           }
           
    @@ -551,4 +575,5 @@
    +

    Copyright © 2002 Oliver Burn. All rights Reserved.