生成checkstyle-配置文件 :param rules: :return:
(self, rules)
| 127 | node.append(child_node) |
| 128 | |
| 129 | def generate_config(self, rules): |
| 130 | """ |
| 131 | 生成checkstyle-配置文件 |
| 132 | :param rules: |
| 133 | :return: |
| 134 | """ |
| 135 | # 这些规则仅存放于TreeWalker同级 |
| 136 | special_rule_set = [ |
| 137 | "Header", |
| 138 | "RegexpHeader", |
| 139 | "JavadocPackage", |
| 140 | "UniqueProperties", |
| 141 | "Translation", |
| 142 | "NewlineAtEndOfFile", |
| 143 | "RegexpMultiline", |
| 144 | "RegexpOnFilename", |
| 145 | "RegexpSingleline", |
| 146 | "FileLength", |
| 147 | "FileTabCharacter", |
| 148 | "LineLength", |
| 149 | "OrderedProperties", |
| 150 | ] |
| 151 | special_rule = [] |
| 152 | |
| 153 | # 1. 读取空模板 |
| 154 | config_file = os.path.join(os.path.abspath(os.curdir), "config.xml") |
| 155 | if not os.path.exists(self.model_config_file): |
| 156 | raise AnalyzeTaskError( |
| 157 | f"The template configuration file {self.model_config_file} does not exist, please check! " |
| 158 | ) |
| 159 | open(config_file, "wb").write(open(self.model_config_file, "rb").read()) |
| 160 | |
| 161 | config_data = ET.ElementTree(file=config_file) |
| 162 | root = config_data.getroot() |
| 163 | # 添加扫描文件后缀 |
| 164 | property_node = ET.Element("property") |
| 165 | property_node.set("name", "fileExtensions") |
| 166 | property_node.set("value", "java, properties, xml") |
| 167 | root.append(property_node) |
| 168 | |
| 169 | # 2. 普通规则处理 (TreeWalker子节点) |
| 170 | main_node = root.find('module[@name="TreeWalker"]') |
| 171 | for rule in rules: |
| 172 | # 去掉规则名中的后缀 |
| 173 | if rule["name"].find("_") != -1: |
| 174 | rule["name"] = rule["name"][: rule["name"].find("_")] |
| 175 | if not rule["name"] in special_rule_set: |
| 176 | self.insert_rule(main_node, rule["name"], rule.get("params", None)) |
| 177 | else: |
| 178 | special_rule.append(rule) |
| 179 | |
| 180 | # 3. 针对特殊的规则单独处理 |
| 181 | if special_rule: |
| 182 | for rule in special_rule: |
| 183 | self.insert_rule(root, rule["name"], rule.get("params", None)) |
| 184 | |
| 185 | config_data.write(config_file) |
| 186 | # config需要增加注释才可以运行 |
no test coverage detected