Compiler lint checker

Although not technically a developer tool, it is worth mentioning the Logtalk compiler lint checker features as they contribute to earlier detection and warning of source code issues. Lint checks include:

  • Missing directives (including scope, meta-predicate, dynamic, discontiguous, and multifile directives)
  • Duplicated directives
  • Missing predicates (calls to non-declared and non-defined predicates)
  • Calls to declared but not defined static predicates
  • Non-portable predicate calls, arithmetic function calls, directives, flags, and flag values
  • Suspicious calls (syntactically valid calls that are likely semantic errors)
  • Deprecated directives, control constructs, and flags
  • References to unknown entities (objects, protocols, categories, or modules)
  • Goals that are always true or always false
  • Trivial goal fails (due to no matching predicate clause)
  • Redefined built-in predicates
  • Lambda expression unclassified variables and mixed up variables
  • Singleton variables

Additional checks are provided by the make and dead_code_scanner tools.