rust-code-analysis 0.0.18

Tool to compute and export code metrics
Documentation
===================================
If, elif and else directives
===================================

#if WIN32
  string os = "Win32";
#elif MACOS
  string os = "MacOS";
#else
  string os = "Unknown";
#endif

---

(compilation_unit
  (preprocessor_call (preprocessor_directive) (identifier))
  (field_declaration
    (variable_declaration
      (predefined_type)
      (variable_declarator (identifier) (equals_value_clause (string_literal)))))
  (preprocessor_call (preprocessor_directive) (identifier))
  (field_declaration
    (variable_declaration
      (predefined_type)
      (variable_declarator (identifier) (equals_value_clause (string_literal)))))
  (preprocessor_call (preprocessor_directive))
  (field_declaration
    (variable_declaration
      (predefined_type)
      (variable_declarator (identifier) (equals_value_clause (string_literal)))))
  (preprocessor_call (preprocessor_directive)))

===========================
Region directives
===========================

#region Here, there, everywhere

// something fast

#endregion

---

(compilation_unit
  (preprocessor_call
    (preprocessor_directive)
    (identifier)
    (identifier)
    (identifier))
  (comment)
  (preprocessor_call (preprocessor_directive)))

===================================
Define and undefine directives
===================================

#define SOMETHING
#undef BAD

---

(compilation_unit
  (preprocessor_call (preprocessor_directive) (identifier))
  (preprocessor_call (preprocessor_directive) (identifier)))

===================================
Warning and error directives
===================================

class Of1879 {
#warning This class is bad.
#error Okay, just stop.
}

---

(compilation_unit
  (class_declaration (identifier) (declaration_list
    (preprocessor_call (preprocessor_directive) (identifier) (identifier) (identifier) (identifier))
    (preprocessor_call (preprocessor_directive) (identifier) (identifier) (identifier)))))

===================================
Line directives
===================================

class Of1879 {
  void AMethod() {
#line 2001 "A Space"
#line hidden
#line default
  }
}

---

(compilation_unit (class_declaration
  (identifier)
  (declaration_list
    (method_declaration
      (void_keyword)
      (identifier)
      (parameter_list)
      (block
        (preprocessor_call (preprocessor_directive) (integer_literal) (string_literal))
        (preprocessor_call (preprocessor_directive) (identifier))
        (preprocessor_call (preprocessor_directive) (identifier)))))))