Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1215)

Unified Diff: build/android/lint/suppress.py

Issue 1916603002: [Android] Fix lint suppression generation. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: build/android/lint/suppress.py
diff --git a/build/android/lint/suppress.py b/build/android/lint/suppress.py
index 735758834b1e1d87b78d2fb34020607a46d62f7d..3926d6d3c54e8b87332c4070f3d55a3d1dc87575 100755
--- a/build/android/lint/suppress.py
+++ b/build/android/lint/suppress.py
@@ -43,7 +43,7 @@ _DOC = (
)
-_Issue = collections.namedtuple('Issue', ['severity', 'paths'])
+_Issue = collections.namedtuple('Issue', ['severity', 'paths', 'regexps'])
def _ParseConfigFile(config_path):
@@ -53,10 +53,18 @@ def _ParseConfigFile(config_path):
for issue in dom.getElementsByTagName('issue'):
issue_id = issue.attributes['id'].value
severity = issue.getAttribute('severity')
- paths = set(
- [p.attributes['path'].value for p in
- issue.getElementsByTagName('ignore')])
- issues_dict[issue_id] = _Issue(severity, paths)
+
+ path_elements = (
+ p.attributes.get('path')
+ for p in issue.getElementsByTagName('ignore'))
+ paths = set(p.value for p in path_elements if p)
+
+ regexp_elements = (
+ p.attributes.get('regexp')
+ for p in issue.getElementsByTagName('ignore'))
+ regexps = set(r.value for r in regexp_elements if r)
+
+ issues_dict[issue_id] = _Issue(severity, paths, regexps)
return issues_dict
@@ -68,7 +76,7 @@ def _ParseAndMergeResultFile(result_path, issues_dict):
severity = issue.attributes['severity'].value
path = issue.getElementsByTagName('location')[0].attributes['file'].value
if issue_id not in issues_dict:
- issues_dict[issue_id] = _Issue(severity, set())
+ issues_dict[issue_id] = _Issue(severity, set(), set())
issues_dict[issue_id].paths.add(path)
@@ -76,21 +84,23 @@ def _WriteConfigFile(config_path, issues_dict):
new_dom = minidom.getDOMImplementation().createDocument(None, 'lint', None)
top_element = new_dom.documentElement
top_element.appendChild(new_dom.createComment(_DOC))
- for issue_id in sorted(issues_dict.keys()):
- severity = issues_dict[issue_id].severity
- paths = issues_dict[issue_id].paths
- issue = new_dom.createElement('issue')
- issue.attributes['id'] = issue_id
- if severity:
- issue.attributes['severity'] = severity
- if severity == 'ignore':
+ for issue_id, issue in sorted(issues_dict.iteritems(), key=lambda i: i[0]):
+ issue_element = new_dom.createElement('issue')
+ issue_element.attributes['id'] = issue_id
+ if issue.severity:
+ issue_element.attributes['severity'] = issue.severity
+ if issue.severity == 'ignore':
print 'Warning: [%s] is suppressed globally.' % issue_id
else:
- for path in sorted(paths):
- ignore = new_dom.createElement('ignore')
- ignore.attributes['path'] = path
- issue.appendChild(ignore)
- top_element.appendChild(issue)
+ for path in sorted(issue.paths):
+ ignore_element = new_dom.createElement('ignore')
+ ignore_element.attributes['path'] = path
+ issue_element.appendChild(ignore_element)
+ for regexp in sorted(issue.regexps):
+ ignore_element = new_dom.createElement('ignore')
+ ignore_element.attributes['regexp'] = regexp
+ issue_element.appendChild(ignore_element)
+ top_element.appendChild(issue_element)
with open(config_path, 'w') as f:
f.write(new_dom.toprettyxml(indent=' ', encoding='utf-8'))
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698