Code Quality
- Q310: How does EK9 enforce code quality at compile time?
- Q311: What code quality checks does the EK9 compiler perform?
- Q312: How does EK9 measure complexity?
- Q313: How does EK9 detect code smells?
- Q314: How does EK9 measure cohesion and coupling?
- Q315: Why does EK9 limit inheritance depth?
- Q316: How does EK9 detect discarded return values?
- Q317: How does EK9 detect magic literals?
- Q318: How does EK9 detect self-assignment and self-comparison?
- Q319: How does EK9 detect unused parameters?
- Q320: Why does EK9 report on readability?
- Q321: How do I see the code quality report?
- Q322: How do I see how many times code was called and how long it took?
- Q323: Can AI help me improve code quality?
- Q557: How does EK9 detect dead code and redundant conditions?
- Q558: What are tautological conditions and how do I fix them?
- Q559: Why does EK9 reject my isSet check as redundant?
- Q693: Why must operator and pure function return values be captured?
- Q694: When must named arguments be used in function calls?
- Q695: Why must comparison values use named constants instead of bare literals?
- Q696: How does EK9 enforce complexity limits and what triggers E11010?
- Q698: How does EK9 prevent excessive Boolean parameters?
- Q700: What are the parameter count and line length limits in EK9?
- Q728: What is the maximum nesting depth allowed in EK9 and why?
- Q729: What is the maximum class inheritance depth in EK9?
- Q730: What is a data clump and when does EK9 detect it?
- Q731: What is the type traversal limit and why does EK9 enforce it?
- Q732: Why must every constructor, operator, and pure function return be captured?
- Q733: What is the combined complexity-size check and when does it trigger?
- Q734: How does EK9 detect redundant Boolean comparisons and logical tautologies?
- Q735: How does EK9 detect conditions that are always true or always false?
- Q736: How does EK9 detect redundant empty and isSet checks?
- Q737: Why does EK9 reject reassignment in pure functions and parameter reassignment?
- Q738: Why does EK9 reject mutation operators on function types?
- Q739: How does EK9 detect duplicate names and properties in type hierarchies?
- Q740: How does EK9 detect duplicate trait references and service path conflicts?
- Q741: How does EK9 detect reference conflicts and unresolved references?
- Q742: How does EK9 detect when a function type or generic type is used incorrectly?
- Q743: What are the restrictions on this and super in EK9?
- Q744: How does EK9 validate generic constructors and sealed type allow only lists?
- Q745: How does EK9 validate function and method parameters?
- Q761: What is the LCOM4 cohesion limit and how do I stay within it?
- Q762: What is the efferent coupling limit and how do I stay within it?
- Q763: What is the maximum inheritance depth allowed in EK9?
- Q764: How does EK9 detect confusingly similar variable names?
- Q765: What is the cognitive complexity limit in EK9?
- Q766: What is the module coupling limit in EK9?
- Q767: What is the dev context and how does it relate to testing in EK9?
- Q777: Why does EK9 reject discarded operator return values?
- Q799: Why does EK9 require named arguments when passing multiple Boolean literals?
- Q800: Why does EK9 reject repeated literal values?
- Q801: Why does EK9 reject overrides identical to the parent method?
- Q814: How does EK9 enforce nesting depth limits?
- Q815: Why is calling a computational operator without using its result an error in EK9?
- Q816: Why does EK9 require named arguments for multiple Boolean parameters?
- Q817: Why does EK9 require named arguments for 4+ parameters?
- Q818: Why does EK9 reject self-cancelling arithmetic?
- Q819: Why does EK9 reject duplicate property fields in records?
- Q820: Why does EK9 reject redundant empty checks on collections?
- Q821: Why can't I construct an abstract type directly in EK9?
- Q822: When can I use super in EK9?
- Q823: Why must certain operators return specific types in EK9?
- Q825: Why does EK9 reject 'not empty' on a freshly created collection?
- Q826: Why does EK9 reject override on constructs that cannot override?
- Q827: Why does EK9 reject the ? modifier on function parameters?
- Q828: Why can't I use sanitized at a call site in EK9?
- Q829: Why does EK9 reject duplicate properties in records with JSON support?
- Q830: Why does EK9 reject non-aggregate types in certain contexts?
- Q831: Why can't I use an abstract function as a return type directly in EK9?
- Q832: Why can't I have a local class with the same name as an imported reference in EK9?
- Q853: What happens when parent and child classes have duplicate field names with JSON operator?
- Q855: Why does EK9 reject repeated parameter groups across functions?
- Q856: When should I use a component instead of a class in EK9?
- Q859: When should I use 'by' delegation instead of manual method forwarding?
- Q860: Why can't I mix 'by' delegation with many service fields?
- Q861: Why does EK9 reject classes with too many service and data fields?
- Q863: Why must module constants be in a single file?
- Q865: Why does EK9 flag checking empty on a freshly constructed list?
- Q958: When should I use 'by' delegation instead of manual method forwarding?
- Q959: What is the hybrid class-component anti-pattern in EK9?
- Q962: What is a data clump and how does EK9 detect it?
- Q992: Review this EK9 class. Does it follow EK9 best practices?
- Q1020: My function is too complex and the compiler rejects it. How do I refactor to reduce complexity?
- Q1045: Review this design. Should it use composition instead of inheritance?
- Q1046: Review this EK9 class for naming quality. Are the names descriptive enough?
- Q1302: Why does EK9 reject a single deeply-nested coalescing expression?
- Q1303: Why does EK9 reject a call nested inside a throw expression?
- Q1304: How do I fix E11043 when a method injects too many distinct types?
- Q1335: Why does EK9 reject a method or function that has too many statements?
- Q1337: Why does EK9 reject a module whose constructs are all unrelated?
- Q1338: Why does EK9 report E11018 for an unused captured variable in a dynamic function?
- Q1339: Why does EK9 reject a function whose complexity and size are both individually within limits?
- Q1340: Why does EK9 suggest promoting an injected type to a field when it appears in three or more methods (E11041)?
- Q1341: Why does EK9 require a dedicated constants file once a module has many constants?
- Q1342: Why does EK9 reject a deeply nested higher-order call chain like getMaker(x)(y)(z)?
- Q1362: What is the input-variation (input-variety) metric in EK9?