分析执行函数 :param params: :return:
(self, params)
| 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)) |
nothing calls this directly
no test coverage detected