Software development organizations trying to implement coding standards without availing themselves of automated tools or the expertise in implementation and deployment most often fail. Failures stem from having poorly defined and enforced practices; poorly defined standards; inflexible and poorly automated tools; poor integration with the development process and development tools; inconsistent use and application of the standards; a poorly executed deployment strategy that overwhelms already beleaguered development teams; and so on. The value and benefits of implementing an automated coding standards analysis practice will be many, but only if implemented correctly.
Coding standards can serve a variety of purposes ranging from preventing common errors for a designated language or technology, to making code more reusable and extensible, to preventing application-specific errors from recurring. Standards can ensure compliance with regulatory requirements (such as Section 508 accessibility requirements or MISRA standards for automotive technology) and help to enforce organization branding requirements. Any language or technology with a syntax can have coding standards defined for it. This includes Java, C++, C, C#, HTML, JavaScript, VBScript, XML, and database structures.
An automated coding standards practice will be driven by a software tool that provides a comprehensive set of coding standards, but which has the flexibility to configure, prioritize, and apply those standards to adapt to an organization's processes and goals. Additionally, the tool should allow standards to be easily modified or added. However, an effective application of a coding standards practice requires more than just the software tool. It requires that the practice be well defined and integrated into your software development lifecycle so that it is used consistently and regularly. It is also critical that the practice be automated. Automation ensures regular execution and consistent results.
Coding standards should be "alive" to be effective, meaning they should be regularly practiced and metrics of the results of their application should be regularly evaluated and used as a guide to the quality of code and effectiveness of the team. It is also critical to have the means to monitor and measure its use to ensure consistent practice and to be able to use the data generated to zero in on problems in both the code and coding behavior. Monitoring the practice and its results is necessary to control your software project, ensure its success, and improve the effectiveness of your team.
With a well-defined and implemented automated coding standards practice and the means to apply and monitor its consistent use across your team, you will significantly improve the consistency and quality of your code, reduce the risk of project failure, and better control the predictability of release cycles and time-to-market demands.