| Category | Subcategory | Description |
|---|---|---|
| Design Principles | Ensure adherence to the design principles of object-oriented programming | |
| Complexity | Prevent unnecessarily complex code | |
| Globalization | Ensure that code runs correctly in localized environments | |
| Cultural Formatting | Address data-formatting options that are used in different parts of the world | |
| Encoding | Validate encoding for globalization | |
| Locale Handling | Validate locales for globalization | |
| String Handling | Validate string operations for globalization | |
| Translation | Validate code for translation | |
| UI Specific | Validate UI layout and content for globalization | |
| J2EE Best Practices | Adhere to the best practices for J2EE development and support Web projects that are targeted for WebSphere® servers | |
| Correctness | Detect incorrect method calls | |
| Data Race | Detect method invocations that can cause data race conditions in J2EE applications | |
| Garbage Collection | Detect method invocations that can delay garbage collection | |
| Maintainability | Detect code that might be difficult to maintain in J2EE applications | |
| Performance and Scalability | Detect method invocations that hinder the performance or limit the scalability of a J2EE application | |
| J2EE Security | Validate compliance with Java security standards | |
| J2EE Security | Validate compliance with Java security standards in a J2EE environment | |
| J2SE Best Practices | Validate code for compliance with J2SE best practices for Java development | |
| AWT | Detect issues that are related to using the Abstract Window Toolkit library | |
| Casting | Detect casting and coercion issues | |
| Cloneable | Detect object cloning issues | |
| Comparison | Detect issues that are related to comparing objects and testing object equality | |
| Conditional | Detect issues that are related to using conditionals | |
| Constructors | Detect issues that are related to defining and implementing constructors | |
| Declaration | Contains rules that detect issues related to declaring constants, variables, and fields | |
| Exceptions | Detect issues that are related to exception handling | |
| Initialization | Detect issues that are related to the initialization of primitives and objects | |
| Loop | Detect issues that are related to using loops | |
| Null | Detect issues related to using null values | |
| Portability | Detect portability issues | |
| Reflection | Detect issues that are related to using reflection | |
| Serialization | Detect serialization issues | |
| Statement | Detect general issues in statements | |
| Switch | Detect issues that are related to using switch statements | |
| Threads | Detect issues that are related to using threads | |
| J2SE Security | Validate compliance with Java security standards | |
| J2SE security | Validate compliance with Java security standards in a J2SE environment | |
| JUnit | Address different problems that can occur with JUnit tests | |
| Naming | Ensure adherence to naming conventions for elements in Java source code | |
| Conflicts | Ensure that elements are named consistently in Java source code | |
| Performance | Help improve the performance and reduce the memory footprint in Java applications | |
| Memory | Detect performance issues that are related to memory usage | |
| Profiling | Detect potential performance issues that are related to profiling activities | |
| Speed | Suggest ways to improve the speed of Java code execution | |
| Private API | Locate APIs that do not belong in Java code | |
| Sun | Locate APIs that do not belong in Java code | |
| WebSphere | Locate APIs that do not belong in Java code |