On Thu, 2019-05-30 at 20:35 -0400, Kevin A. McGrail wrote: > I was curious if anyone noticed the debug output for subtests has > gotten > insane: > > May 30 20:29:35.492 [8403] dbg: check: > subtests=__AM_DYING,__ANY_TEXT_ATTACH,__ANY_TEXT_ATTACH_DOC,__BODY_TE > XT_LINE,__BODY_TEXT_LINE,__BODY_TEXT_LINE,__CT,__CTYPE_HAS_BOUNDARY,_ > _CTYPE_MULTIPART_ANY,__CTYPE_MULTIPART_MIXED,__DKIMWL_FREEMAIL,__DKIM > WL_WL_MED,__DKIM_DEPENDABLE,__DKIM_EXISTS,__DOS_BODY_WED,__DOS_HAS_AN > Y_URI,__DOS_HAS_LIST_ID,__DOS_HAS_LIST_UNSUB,__DOS_HAS_MAILING_LIST,_ > _DOS_LINK,__DOS_RCVD_MON,__DOS_REF_2_WK_DAYS,__DOS_RELAYED_EXT,__DOS_ > SINGLE_EXT_RELAY,__E_LIKE_LETTER,__E_LIKE_LETTER, [...]
Shortened that output of the _SUBTESTS_ Template Tag. Suffice to say it showed both rules __LOWER_E and __E_LIKE_LETTER their respective maxhits times. > 72_active.cf: body __LOWER_E /e/ > 72_active.cf: tflags __LOWER_E multiple maxhits=230 > > 72_active.cf: body __E_LIKE_LETTER /<lcase_e>/ > 72_active.cf: tflags __E_LIKE_LETTER multiple maxhits=320 > > Assuming those maxhits are correct, There are a total of 6 rules with maxhits >= 100 (or > 26 in case you prefer), all sub-rules. Also, all living in Bill's sandbox... > maybe we need something in the debug > output that says __E_LIKE_LETTER (number of hits if more than 1). With maxhits of 20+ I'd be in favor of such an abbreviation. Applied in any case of more than a single hit, I don't mean to collapse in cases exceeding a threshold. I just mean it's not worth bothering if there are only instances of about 10 at most... Do note though that it is the same with regular (non-sub) rules: With tflags multiple they are listed up to maxhits times in both header style _TESTS_ and _REPORT_ as well as body style _SUMMARY_ Template Tags. Reminds me of the multiple and maxhits long pre-dating Rules Emporium backhair and friends rule-sets with a similarly ridiculous tests hit report pattern due to basically implementing these counting features in pure meta... -- char *t="\10pse\0r\0dtu\0.@ghno\x4e\xc8\x79\xf4\xab\x51\x8a\x10\xf4\xf4\xc4"; main(){ char h,m=h=*t++,*x=t+2*h,c,i,l=*x,s=0; for (i=0;i<l;i++){ i%8? c<<=1: (c=*++x); c&128 && (s+=h); if (!(h>>=1)||!t[s+h]){ putchar(t[s]);h=m;s=0; }}}