MCPcopy Index your code
hub / github.com/Tencent/CodeAnalysis / analyze

Method analyze

client/tool/androidlint.py:62–133  ·  view source on GitHub ↗

分析执行函数 :param params: :return:

(self, params)

Source from the content-addressed store, hash-verified

60 return True
61
62 def analyze(self, params):
63 """
64 分析执行函数
65 :param params:
66 :return:
67 """
68 source_dir = params["source_dir"]
69 build_cwd = os.environ.get("BUILD_CWD", None)
70 # 构建当前目录
71 build_cwd = os.path.join(source_dir, build_cwd) if build_cwd else source_dir
72
73 enabled_rules = params["rules"]
74 error_output = os.path.join(os.path.curdir, "androidlint_result.xml")
75 # 添加构建方式环境变量
76 # 默认是使用gradle方式。也可能是其他的,比如ant
77 build_type = os.environ.get(LINT_BUILD_TYPE_ENV, "gradle").lower()
78
79 # 如果该项目为gradle项目即通过gradle执行lint
80 if build_type == "gradle":
81 return self.gradle_mode_analyze(params)
82 else:
83 # 查看用户是否有传入工具配置参数,若有则按参数传入进行工具适配
84 lint_proj_dir = os.environ.get(PROJECT_DIR_ENV)
85 if lint_proj_dir:
86 self.print_log("get lint project dir: %s" % lint_proj_dir)
87 source_dir = os.path.join(source_dir, lint_proj_dir)
88
89 # gradle项目不可以直接执行lint.jar,因此此处先删除项目中的build.gradle文件,可以保证工具正常执行
90 for root, _, files in os.walk(source_dir):
91 for filename in files:
92 if filename == "build.gradle":
93 try:
94 PathMgr().rmpath(os.path.join(root, "build.gradle"))
95 except Exception as e:
96 LogPrinter.exception(
97 "rmpath gradle config error : %s, exception: %s"
98 % (os.path.join(root, "build.gradle"), str(e))
99 )
100
101 # analyze step
102 scan_cmd = [
103 "java",
104 "-jar",
105 os.path.join(os.environ[SDK_TOOL_ENV], "lib", "lint.jar"),
106 "--quiet",
107 "--nolines",
108 ]
109
110 # 获取用户传入的参数
111 lint_classpath = os.environ.get(CLASSPATH_ENV)
112 if lint_classpath:
113 classpath_list = re.compile("[:,;]").split(lint_classpath)
114 real_classpath_list = []
115 for classpath_path in classpath_list:
116 real_classpath_list.append(os.path.join(source_dir, classpath_path))
117 scan_cmd.append("--classpath")
118 sep = ":"
119 scan_cmd.append(sep.join(real_classpath_list))

Callers

nothing calls this directly

Calls 6

gradle_mode_analyzeMethod · 0.95
exceptionMethod · 0.80
getMethod · 0.45
print_logMethod · 0.45
compileMethod · 0.45

Tested by

no test coverage detected