check header_comments (minimum, 10);
search header_comments (model, "licenseheader.pat");

check pragmas (nonstandard);
check improper_initialization (out_parameter);
-- check improper_initialization (access variable);
search improper_initialization (initialized_variable);

check expressions (and_then, or_else, mixed_operators);
search global_references (all, ahven);

check naming_convention
  (variable, case_sensitive "^[A-Z][A-Z]?[a-z0-9]*(_[A-Z0-9][a-z0-9]*)*$");
check naming_convention
  (type, case_sensitive "^[A-Z][A-Z]?[a-z0-9]*(_[A-Z0-9][a-z0-9]*)*$");
check naming_convention
  (enumeration, case_sensitive "^[A-Z][A-Z0-9]*(_[A-Z0-9][A-Z0-9]*)*$");

check max_statement_nesting (loop, 2);
search max_statement_nesting (all, 3);

check simplifiable_statements (if_for_case, block, null);
check simplifiable_expressions (range, logical);

check characters (control, trailing_space);
check max_line_length (79);
search characters (not_iso_646);
search max_blank_lines (2);

check Multiple_Assignments (repeated);

check entities (Ada.Strings.Unbounded.Unbounded_String);

check declarations (integer_type);
check declarations (multiple_names);

-- Renamed function calls are forbidden since
-- some Ada compiler do not support them.
-- check declarations (function_call_renaming);

check directly_accessed_globals;

check style (positional_association, instantiation, 0, call, 3);

-- No variables in package specs
check usage (variable, from_spec);

Constantable : check usage
  (variable, not from_spec, read, initialized, not written);
Removable : check usage (object, not from_spec, not read);

Hiding: check local_hiding (strict);

check parameter_aliasing (certain);

-- No long code blocks
check Max_Size (if_branch, 30);
check Max_Size (unnamed_loop, 20);
Long_Blocks: check Max_Size (block, 25);

check style (negative_condition);
check style (casing_identifier, original);
check style (multiple_elements);
check style (compound_statement);
check style (casing_keyword, lowercase);
check style (no_closing_name);
search style (exposed_literal, integer, 0, 1, 2, number, constant, var_init);

check with_clauses (reduceable);

check units (unchecked);
