From 0490e739b0bd661f551323c5151fb91c9e2d8988 Mon Sep 17 00:00:00 2001 From: Jules Villard Date: Thu, 12 Nov 2015 05:22:55 -0800 Subject: [PATCH] move LOCALE to config.py Reviewed By: jeremydubreil Differential Revision: D2642346 fb-gh-sync-id: 43a3b00 --- infer/lib/python/infer | 4 ++-- infer/lib/python/inferTraceBugs | 8 ++++---- infer/lib/python/inferlib/analyze.py | 5 +++-- infer/lib/python/inferlib/config.py | 7 +++++++ infer/lib/python/inferlib/issues.py | 4 ++-- infer/lib/python/inferlib/jwlib.py | 2 ++ infer/lib/python/inferlib/source.py | 8 ++++---- infer/lib/python/inferlib/utils.py | 12 ++++++------ 8 files changed, 30 insertions(+), 20 deletions(-) diff --git a/infer/lib/python/infer b/infer/lib/python/infer index 8ea8d15cc..07f138e35 100755 --- a/infer/lib/python/infer +++ b/infer/lib/python/infer @@ -70,7 +70,7 @@ def split_args_to_parse(): sys.argv.index(CMD_MARKER) if CMD_MARKER in sys.argv else len(sys.argv) cmd_raw = sys.argv[dd_index + 1:] return (sys.argv[1:dd_index], - [arg.decode(utils.LOCALE) for arg in cmd_raw]) + [arg.decode(config.LOCALE) for arg in cmd_raw]) def create_argparser(parents=[]): @@ -171,7 +171,7 @@ def main(): utils.JSON_REPORT_FILENAME) try: with codecs.open(bugs_filename, 'r', - encoding=utils.LOCALE) as bugs_file: + encoding=config.LOCALE) as bugs_file: bugs = json.load(bugs_file) if len(bugs) > 0: sys.exit(config.BUG_FOUND_ERROR_CODE) diff --git a/infer/lib/python/inferTraceBugs b/infer/lib/python/inferTraceBugs index 6443c0b35..d116dae92 100755 --- a/infer/lib/python/inferTraceBugs +++ b/infer/lib/python/inferTraceBugs @@ -21,7 +21,7 @@ import shutil import subprocess import sys -from inferlib import analyze, source, utils +from inferlib import analyze, config, source, utils HTML_REPORT_DIR = 'report.html' TRACES_REPORT_DIR = 'traces' @@ -357,14 +357,14 @@ def generate_html_report(args, reports): for bug in sel: bug_trace_path = path_of_bug_number(traces_dir, i) with codecs.open(bug_trace_path, 'w', - encoding=utils.LOCALE) as bug_trace_file: + encoding=config.LOCALE) as bug_trace_file: bug_trace_file.write(html_bug_trace(args, bug, i)) i += 1 remote_source_template = get_remote_source_template() bug_list_path = os.path.join(html_dir, 'index.html') with codecs.open(bug_list_path, 'w', - encoding=utils.LOCALE) as bug_list_file: + encoding=config.LOCALE) as bug_list_file: bug_list_file.write(html_list_of_bugs(args, remote_source_template, sel)) @@ -377,7 +377,7 @@ def main(): report_filename = os.path.join(args.infer_out, utils.JSON_REPORT_FILENAME) with codecs.open(report_filename, 'r', - encoding=utils.LOCALE) as report_file: + encoding=config.LOCALE) as report_file: reports = json.load(report_file) if args.html: diff --git a/infer/lib/python/inferlib/analyze.py b/infer/lib/python/inferlib/analyze.py index 4dfdb1153..2d32b6e78 100644 --- a/infer/lib/python/inferlib/analyze.py +++ b/infer/lib/python/inferlib/analyze.py @@ -506,7 +506,7 @@ class Infer: # capture and compile mode do not create proc_stats.json if os.path.isfile(proc_stats_path): with codecs.open(proc_stats_path, 'r', - encoding=utils.LOCALE) as proc_stats_file: + encoding=config.LOCALE) as proc_stats_file: proc_stats = json.load(proc_stats_file) self.stats['int'].update(proc_stats) @@ -525,7 +525,8 @@ class Infer: } stats_path = os.path.join(self.args.infer_out, utils.STATS_FILENAME) - with codecs.open(stats_path, 'w', encoding=utils.LOCALE) as stats_file: + with codecs.open(stats_path, 'w', + encoding=config.LOCALE) as stats_file: json.dump(self.stats, stats_file, indent=2) diff --git a/infer/lib/python/inferlib/config.py b/infer/lib/python/inferlib/config.py index b56a8c58f..67907677d 100644 --- a/infer/lib/python/inferlib/config.py +++ b/infer/lib/python/inferlib/config.py @@ -10,9 +10,16 @@ from __future__ import division from __future__ import print_function from __future__ import unicode_literals +import locale + + +LOCALE = locale.getpreferredencoding() + + # exit value when infer finds something to report BUG_FOUND_ERROR_CODE = 2 + # list of possible analyzers ANALYZER_INFER = 'infer' ANALYZER_ERADICATE = 'eradicate' diff --git a/infer/lib/python/inferlib/issues.py b/infer/lib/python/inferlib/issues.py index 7a5101095..f3428a6e9 100644 --- a/infer/lib/python/inferlib/issues.py +++ b/infer/lib/python/inferlib/issues.py @@ -101,14 +101,14 @@ def clean_json(args, json_report): def print_errors(json_report, bugs_out): - with codecs.open(json_report, 'r', encoding=utils.LOCALE) as file_in: + with codecs.open(json_report, 'r', encoding=config.LOCALE) as file_in: errors = json.load(file_in) errors = filter(lambda row: row[utils.JSON_INDEX_KIND] in [ISSUE_KIND_ERROR, ISSUE_KIND_WARNING], errors) - with codecs.open(bugs_out, 'w', encoding=utils.LOCALE) as file_out: + with codecs.open(bugs_out, 'w', encoding=config.LOCALE) as file_out: text_errors_list = [] for row in errors: filename = row[utils.JSON_INDEX_FILENAME] diff --git a/infer/lib/python/inferlib/jwlib.py b/infer/lib/python/inferlib/jwlib.py index 5be559670..3dbdc259c 100644 --- a/infer/lib/python/inferlib/jwlib.py +++ b/infer/lib/python/inferlib/jwlib.py @@ -10,6 +10,8 @@ import argparse import os import tempfile import subprocess + +import config import utils FILELISTS = 'filelists' diff --git a/infer/lib/python/inferlib/source.py b/infer/lib/python/inferlib/source.py index a033a7204..a9211b003 100644 --- a/infer/lib/python/inferlib/source.py +++ b/infer/lib/python/inferlib/source.py @@ -19,7 +19,7 @@ except ImportError: pygments = None import sys -from . import utils +from . import config, utils BASE_INDENT = 2 # how many lines of context around each report @@ -53,7 +53,7 @@ class Indenter(str): def add(self, x): if type(x) != unicode: - x = x.decode(utils.LOCALE) + x = x.decode(config.LOCALE) lines = x.splitlines() indent = self.indent_get() lines = [indent + l for l in lines] @@ -63,7 +63,7 @@ class Indenter(str): return self.text def __str__(self): - return unicode(self).encode(utils.LOCALE) + return unicode(self).encode(config.LOCALE) def build_source_context(source_name, mode, report_line): @@ -74,7 +74,7 @@ def build_source_context(source_name, mode, report_line): n_length = len(str(end_line)) line_number = 1 s = '' - with codecs.open(source_name, 'r', encoding=utils.LOCALE) as source_file: + with codecs.open(source_name, 'r', encoding=config.LOCALE) as source_file: for line in source_file: if start_line <= line_number <= end_line: num = str(line_number).zfill(n_length) diff --git a/infer/lib/python/inferlib/utils.py b/infer/lib/python/inferlib/utils.py index 555a50466..7d4916cde 100644 --- a/infer/lib/python/inferlib/utils.py +++ b/infer/lib/python/inferlib/utils.py @@ -16,7 +16,6 @@ import csv import fnmatch import gzip import json -import locale import logging import os import re @@ -25,13 +24,13 @@ import sys import tempfile import time +from . import config -LOCALE = locale.getpreferredencoding() # this assumes that this file lives in infer/lib/python/infer/ and the binaries # are in infer/bin/ INFER_PYTHON_DIRECTORY = os.path.dirname(os.path.realpath(__file__) - .decode(LOCALE)) + .decode(config.LOCALE)) INFER_INFER_DIRECTORY = os.path.join(INFER_PYTHON_DIRECTORY, os.pardir, os.pardir, os.pardir) INFER_ROOT_DIRECTORY = os.path.join(INFER_INFER_DIRECTORY, os.pardir) @@ -45,7 +44,8 @@ ANNOT_PROCESSOR_JAR = os.path.join(JAVA_LIB_DIRECTORY, 'processor.jar') WRAPPERS_DIRECTORY = os.path.join(LIB_DIRECTORY, 'wrappers') XCODE_WRAPPERS_DIRECTORY = os.path.join(LIB_DIRECTORY, 'xcode_wrappers') -DEFAULT_INFER_OUT = os.path.join(os.getcwd().decode(LOCALE), 'infer-out') +DEFAULT_INFER_OUT = os.path.join(os.getcwd().decode(config.LOCALE), + 'infer-out') CSV_PERF_FILENAME = 'performances.csv' STATS_FILENAME = 'stats.json' PROC_STATS_FILENAME = 'proc_stats.json' @@ -128,7 +128,7 @@ if "check_output" not in dir(subprocess): def locale_csv_reader(iterable, dialect='excel', **kwargs): rows = csv.reader(iterable, dialect=dialect, **kwargs) for row in rows: - yield [unicode(cell, LOCALE) for cell in row] + yield [unicode(cell, config.LOCALE) for cell in row] def configure_logging(debug, quiet=False): @@ -163,7 +163,7 @@ def get_cmd_in_bin_dir(binary_name): def write_cmd_streams_to_file(logfile, cmd=None, out=None, err=None): - with codecs.open(logfile, 'w', encoding=LOCALE) as log_filedesc: + with codecs.open(logfile, 'w', encoding=config.LOCALE) as log_filedesc: if cmd: log_filedesc.write(' '.join(cmd) + '\n') if err is not None: