pmdk
pmdk copied to clipboard
No checking of all macros in PMDK
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
It causes two problems:
- The libpmemobj is validated differently compared to the rest of the libraries.
- 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.