Change in osmo-ci[master]: scripts/verify_log_statements.py: on parse error, print file

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

Neels Hofmeyr gerrit-no-reply at lists.osmocom.org
Thu Jul 19 18:51:42 UTC 2018


Neels Hofmeyr has submitted this change and it was merged. ( https://gerrit.osmocom.org/10065 )

Change subject: scripts/verify_log_statements.py: on parse error, print file
......................................................................

scripts/verify_log_statements.py: on parse error, print file

If string eval encounters an uncovered parse error, it's useful to know which
file it happened in.

Change-Id: I5fe9a3bbdbfb8a995f24596bf09e70ca5bb3fe8a
---
M scripts/verify_log_statements.py
1 file changed, 45 insertions(+), 42 deletions(-)

Approvals:
  Neels Hofmeyr: Looks good to me, approved; Verified



diff --git a/scripts/verify_log_statements.py b/scripts/verify_log_statements.py
index 567a96a..9a9cd1b 100755
--- a/scripts/verify_log_statements.py
+++ b/scripts/verify_log_statements.py
@@ -63,59 +63,62 @@
   if not (f.endswith('.h') or f.endswith('.c') or f.endswith('.cpp')):
     return []
 
-  errors_found = []
+  try:
+    errors_found = []
 
-  file_content = codecs.open(f, "r", "utf-8").read()
+    file_content = codecs.open(f, "r", "utf-8").read()
 
-  for log in log_statement_re.finditer(file_content):
-    quoted = log.group(2)
+    for log in log_statement_re.finditer(file_content):
+      quoted = log.group(2)
 
-    # Skip 'LOG("bla" fmt )' strings that typically appear as #defines.
-    if fmt_re.match(quoted):
-      if debug:
-        errors_found.append(error_found(f, log.start(), 'Skipping define', log.group(0)))
-      continue
+      # Skip 'LOG("bla" fmt )' strings that typically appear as #defines.
+      if fmt_re.match(quoted):
+        if debug:
+          errors_found.append(error_found(f, log.start(), 'Skipping define', log.group(0)))
+        continue
 
-    # Drop PRI* parts of 'LOG("bla %"PRIu64" foo")'
-    for n in (16,32,64):
-      quoted = quoted.replace('PRIu' + str(n), '')
-      quoted = quoted.replace('PRId' + str(n), '')
-    quoted = ''.join(osmo_stringify_re.split(quoted))
+      # Drop PRI* parts of 'LOG("bla %"PRIu64" foo")'
+      for n in (16,32,64):
+        quoted = quoted.replace('PRIu' + str(n), '')
+        quoted = quoted.replace('PRId' + str(n), '')
+      quoted = ''.join(osmo_stringify_re.split(quoted))
 
-    # Use py eval to join separate string constants: drop any tabs/newlines
-    # that are not in quotes, between separate string constants.
-    try:
-      quoted = eval('(' + quoted + '\n)' )
-    except:
-      # hopefully eval broke because of some '## args' macro def
-      if debug:
-        ignored.append(error_found(f, log.start(), 'Ignoring', log.group(0)))
-      continue
+      # Use py eval to join separate string constants: drop any tabs/newlines
+      # that are not in quotes, between separate string constants.
+      try:
+        quoted = eval('(' + quoted + '\n)' )
+      except:
+        # hopefully eval broke because of some '## args' macro def
+        if debug:
+          ignored.append(error_found(f, log.start(), 'Ignoring', log.group(0)))
+        continue
 
-    # check for errors...
+      # check for errors...
 
-    # final newline
-    if not quoted.endswith('\n'):
-      errors_found.append(error_found(f, log.start(), 'Missing final newline', log.group(0)))
+      # final newline
+      if not quoted.endswith('\n'):
+        errors_found.append(error_found(f, log.start(), 'Missing final newline', log.group(0)))
 
-    # disallowed chars and extra newlines
-    for c in quoted[:-1]:
-      if not c.isprintable() and not c == '\t':
-        if c == '\n':
-          msg = 'Extraneous newline'
-        else:
-          msg = 'Illegal char'
-        errors_found.append(error_found(f, log.start(), msg + ' %r' % c, log.group(0)))
+      # disallowed chars and extra newlines
+      for c in quoted[:-1]:
+        if not c.isprintable() and not c == '\t':
+          if c == '\n':
+            msg = 'Extraneous newline'
+          else:
+            msg = 'Illegal char'
+          errors_found.append(error_found(f, log.start(), msg + ' %r' % c, log.group(0)))
 
-  if not error_found:
-    return []
+    if not error_found:
+      return []
 
-  line_idx = make_line_idx(file_content)
-  for r, line in zip(errors_found, char_pos_2_line(line_idx, [rr.charpos for rr in errors_found])):
-    r.line = line
+    line_idx = make_line_idx(file_content)
+    for r, line in zip(errors_found, char_pos_2_line(line_idx, [rr.charpos for rr in errors_found])):
+      r.line = line
 
-  return errors_found
-
+    return errors_found
+  except:
+    print("ERROR WHILE PROCESSING %r" % f, file=sys.stderr)
+    raise
 
 all_errors_found = []
 for f in args:

-- 
To view, visit https://gerrit.osmocom.org/10065
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-ci
Gerrit-Branch: master
Gerrit-MessageType: merged
Gerrit-Change-Id: I5fe9a3bbdbfb8a995f24596bf09e70ca5bb3fe8a
Gerrit-Change-Number: 10065
Gerrit-PatchSet: 1
Gerrit-Owner: Neels Hofmeyr <nhofmeyr at sysmocom.de>
Gerrit-Reviewer: Neels Hofmeyr <nhofmeyr at sysmocom.de>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20180719/c94fb600/attachment.htm>


More information about the gerrit-log mailing list