diff contrib/check-params-in-docs.py @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents
children 1830386684a0
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contrib/check-params-in-docs.py	Thu Oct 25 07:37:49 2018 +0900
@@ -0,0 +1,76 @@
+#!/usr/bin/env python3
+#
+# Find missing and extra parameters in documentation compared to
+# output of: gcc --help=params.
+#
+# This file is part of GCC.
+#
+# GCC is free software; you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free
+# Software Foundation; either version 3, or (at your option) any later
+# version.
+#
+# GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING3.  If not see
+# <http://www.gnu.org/licenses/>.  */
+#
+#
+#
+
+import sys
+import json
+import argparse
+
+from itertools import *
+
+def get_param_tuple(line):
+    line = line.strip()
+    i = line.find(' ')
+    return (line[:i], line[i:].strip())
+
+parser = argparse.ArgumentParser()
+parser.add_argument('texi_file')
+parser.add_argument('params_output')
+
+args = parser.parse_args()
+
+params = {}
+
+for line in open(args.params_output).readlines():
+    if line.startswith('  '):
+        r = get_param_tuple(line)
+        params[r[0]] = r[1]
+
+# Find section in .texi manual with parameters
+texi = ([x.strip() for x in open(args.texi_file).readlines()])
+texi = dropwhile(lambda x: not 'item --param' in x, texi)
+texi = takewhile(lambda x: not '@node Instrumentation Options' in x, texi)
+texi = list(texi)[1:]
+
+token = '@item '
+texi = [x[len(token):] for x in texi if x.startswith(token)]
+sorted_texi = sorted(texi)
+
+texi_set = set(texi)
+params_set = set(params.keys())
+
+extra = texi_set - params_set
+if len(extra):
+    print('Extra:')
+    print(extra)
+
+missing = params_set - texi_set
+if len(missing):
+    print('Missing:')
+    for m in missing:
+        print('@item ' + m)
+        print(params[m])
+        print()
+
+if texi != sorted_texi:
+    print('WARNING: not sorted alphabetically!')