pmdk icon indicating copy to clipboard operation
pmdk copied to clipboard

No checking of all macros in PMDK

Open osalyk opened this issue 10 months ago • 1 comments

In the docs_test.py file in the get_macros() function, we only search the libpmemobj path:

def get_macros(pmdk_path):
    """
    Parses all headers from the libpmemobj library, extracts all macros, and
    returns them in a list.
    """
    macros = []
    exceptions = get_exceptions(pmdk_path)
    is_macro_in_next_line = False
    includes_path = path.join(pmdk_path, 'src', 'include', 'libpmemobj')
    # Definition of macro occurs after the phrases: 'static inline' or '#define'
    for header_file in listdir(includes_path):
        with open(path.join(includes_path, header_file), 'r') as f:
            file_lines = f.readlines()
        for line in file_lines:
            if line.startswith('static inline'):
                is_macro_in_next_line = True
            elif is_macro_in_next_line:
                parse_macro_name(exceptions, line,
                                 EXPRESSION_AT_THE_LINE_START, macros)
                is_macro_in_next_line = False
            elif '#define' in line:
                parse_macro_name(exceptions, line,
                                 EXPRESSION_AFTER_DEFINE_PHRASE, macros)
    return macros

osalyk avatar Apr 15 '24 06:04 osalyk

It causes two problems:

  1. The libpmemobj is validated differently compared to the rest of the libraries.
  2. Other libraries cannot introduce manpages for their macro definitions since they will be marked as redundant.

The ideal solution is to:

  • expand the get_macros() function to cover macros from all libraries.
  • add missing macro definitions for libraries other than libpmemobj.

janekmi avatar Apr 15 '24 12:04 janekmi