配置dartanalyzer配置文件 :param params: :return:
(self, params)
| 122 | return issues |
| 123 | |
| 124 | def config(self, params): |
| 125 | """ |
| 126 | 配置dartanalyzer配置文件 |
| 127 | :param params: |
| 128 | :return: |
| 129 | """ |
| 130 | source_dir = params.source_dir |
| 131 | work_dir = params.work_dir |
| 132 | path_exclude = params.path_filters.get("exclusion", []) |
| 133 | enabl_rules = params.rules |
| 134 | envs = os.environ |
| 135 | |
| 136 | # 支持指定代码库下的配置文件 |
| 137 | if "DARTANALYZER_CONFIG" in envs: |
| 138 | return os.path.join(source_dir, envs["DARTANALYZER_CONFIG"]) |
| 139 | |
| 140 | config_file = os.path.join(work_dir, "analysis_options.yml") |
| 141 | if os.path.exists(config_file): |
| 142 | os.remove(config_file) |
| 143 | copyfile(os.path.join(envs.get("DART_HOME"), "analysis_options.yaml"), config_file) |
| 144 | f = open(config_file) |
| 145 | config = yaml.load(f, Loader=yaml.FullLoader) |
| 146 | f.close() |
| 147 | |
| 148 | # 设置过滤 |
| 149 | if path_exclude: |
| 150 | config["analyzer"]["exclude"] = [path.replace("*", "**") for path in path_exclude] |
| 151 | |
| 152 | # 设置开关规则 |
| 153 | analyzer_rules = config["analyzer"]["errors"] |
| 154 | for rule in analyzer_rules: |
| 155 | if rule not in enabl_rules: |
| 156 | continue |
| 157 | analyzer_rules[rule] = "warning" |
| 158 | |
| 159 | linter_rules = config["linter"]["rules"] |
| 160 | for rule in linter_rules: |
| 161 | if rule not in enabl_rules: |
| 162 | continue |
| 163 | linter_rules[rule] = True |
| 164 | |
| 165 | # 设置其他配置,include/strong-mode |
| 166 | |
| 167 | f = open(config_file, "w") |
| 168 | yaml.dump(config, f, default_flow_style=False) |
| 169 | f.close() |
| 170 | |
| 171 | return config_file |
| 172 | |
| 173 | |
| 174 | tool = DartAnalyzer |