<div dir="ltr"><div><div><div><div><br></div>Excellent resource!<br><br></div>I've clued a number of folks in my network within minutes of seeing this (shout out to Steve Holden).<br><br></div>Thanks!  <br><br>Treating security and maintainability holes together under the heading of "anti-patterns" makes so much sense.<br><br></div><div>Risk based thinking <--> awareness of anti-patterns (how to find them, how to not fall into using them).<br></div><div><br></div>Kirby<br><br><br></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Apr 27, 2016 at 12:59 PM, Jurgis Pralgauskis <span dir="ltr"><<a href="mailto:jurgis.pralgauskis@gmail.com" target="_blank">jurgis.pralgauskis@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>Hi, </div><div><br></div><div>I found good collection + tool to match code patterns. </div><div><br></div><div>Guys made a system to crowdsource the (anti)patterns for auto-checking! :)</div><div><br></div><div><a href="http://docs.quantifiedcode.com/python-anti-patterns/" target="_blank">http://docs.quantifiedcode.com/python-anti-patterns/</a><br></div><div><br></div><div>The tool</div><div><a href="http://docs.quantifiedcode.com/patterns/language/index.html" target="_blank">http://docs.quantifiedcode.com/patterns/language/index.html</a></div></div><div class="gmail_extra"><div><div class="h5"><br><div class="gmail_quote">On Wed, Apr 20, 2016 at 11:14 PM, kirby urner <span dir="ltr"><<a href="mailto:kirby.urner@gmail.com" target="_blank">kirby.urner@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><br><div class="gmail_extra"><div class="gmail_quote"><span><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div><br></div><div>ps.: I imagine I could make sth via AST analysis...</div><span><font color="#888888">-- <br></font></span></div></div></blockquote><div><br></div></span><div>Or maybe some regex that looks for<br><br></div><div>"for bar in range(len(foo)): ...foo[bar]"  # (in the for's scope) <br><br></div><div>'cept I don't know regexes well enough to write that. :-D<br><br></div><div>It could just say <br><br>"slap with wet fish ("for block" starting line 10)" <br><br>in a nagnanny.log file someplace, with the user option to care (a "Pythonic" toggle).<span><font color="#888888"><br></font></span></div><span><font color="#888888"><div><br></div><div>Kirby<br><br></div></font></span></div><br></div></div>
</blockquote></div><br><br clear="all"><div><br></div></div></div><span class="">-- <br><div>Jurgis Pralgauskis<br>tel: 8-616 77613;<br>Don't worry, be happy and make things better ;)<br><a href="http://galvosukykla.lt" target="_blank">http://galvosukykla.lt</a></div>
</span></div>
</blockquote></div><br></div>