The title says it all.
I know blindly following any "best practice" can still lead to a stinking pile of crap that strictly adheres to the best practice. The SOLID principles are just that, principles. They don't apply to every situation but they are still very good heuristics for finding possible improvements in your code.
The downside to them is that they sometime require a deep analysis of your source code to apply them. I, like most programmers am constantly on the lookout for more efficient ways of doing things so I am curious if anyone has heard of an analysis tool that attempts to test for the application of SOLID principles (or lack thereof).
SRP The Single Responsibility Principle
A class should have only one reason to change.
OCP The Open-Closed Principle
Software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification.
LSP The Liskov Substitution Principle
Subtypes must be substitutable for their base types.
ISP The Interface Segregation Principle
Clients should not be forced to depend upon methods that they do not use. Interfaces belong to clients, not to hierarchies.
DIP The Dependency Inversion Principle
Abstractions should not depend upon details. Details should depend upon abstractions.
-From Agile Principles, Patterns and Practices