1. I don't understand some of the rules at all, possibly because I haven't read "Style: Toward Clarity and Grace". In particular, the that/which rules seem to detect any that or which after two words. Why?
2. With just the rules that you've implemented and from your example output, it's already very clear that this approach is too crude to be practical. It simply gives too many false positives. For example, of the 5 "smells" found by the a/an rule, 4 are false positives.
To fix this rule, and many others, in a satisfying manner, you'll need to go beyond "knowledge-free" regular expression parsing and add linguistic knowledge to the system (word lists, part of speech tagging, pronunciation, syntactical parsing etc.).
For one example where you'd really need not just annotated word lists but a proper grammar, look at the false positive for the "No serial comma" rule: "In traditional markets, buyers and sellers are responsible for making".
3. I really like the fact that the rules are easily extensible. It might be challenging to maintain that while allowing for the kind of linguistically rich rules proposed above.
4. Even in its current form, the system could do with some indication of weight and/or certainty. Obviously, not all rules are equally important, nor equally reliable. After adding linguistic knowledge, this would become all the more important, since linguistic ambiguity makes many rules probabilistic by definition.