3 # Find missing and extra parameters in documentation compared to
4 # output of: gcc --help=params.
6 # This file is part of GCC.
8 # GCC is free software; you can redistribute it and/or modify it under
9 # the terms of the GNU General Public License as published by the Free
10 # Software Foundation; either version 3, or (at your option) any later
13 # GCC is distributed in the hope that it will be useful, but WITHOUT ANY
14 # WARRANTY; without even the implied warranty of MERCHANTABILITY or
15 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
18 # You should have received a copy of the GNU General Public License
19 # along with GCC; see the file COPYING3. If not see
20 # <http://www.gnu.org/licenses/>. */
29 from itertools
import *
31 def get_param_tuple(line
):
34 return (line
[:i
], line
[i
:].strip())
36 parser
= argparse
.ArgumentParser()
37 parser
.add_argument('texi_file')
38 parser
.add_argument('params_output')
40 args
= parser
.parse_args()
44 for line
in open(args
.params_output
).readlines():
45 if line
.startswith(' '):
46 r
= get_param_tuple(line
)
49 # Find section in .texi manual with parameters
50 texi
= ([x
.strip() for x
in open(args
.texi_file
).readlines()])
51 texi
= dropwhile(lambda x
: not 'item --param' in x
, texi
)
52 texi
= takewhile(lambda x
: not '@node Instrumentation Options' in x
, texi
)
56 texi
= [x
[len(token
):] for x
in texi
if x
.startswith(token
)]
57 sorted_texi
= sorted(texi
)
60 params_set
= set(params
.keys())
62 extra
= texi_set
- params_set
67 missing
= params_set
- texi_set
75 if texi
!= sorted_texi
:
76 print('WARNING: not sorted alphabetically!')