MCPcopy Create free account
hub / github.com/Tencent/CodeAnalysis / generate_config

Method generate_config

client/tool/checkstyle.py:129–203  ·  view source on GitHub ↗

生成checkstyle-配置文件 :param rules: :return:

(self, rules)

Source from the content-addressed store, hash-verified

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需要增加注释才可以运行

Callers 1

analyzeMethod · 0.95

Calls 5

insert_ruleMethod · 0.95
AnalyzeTaskErrorClass · 0.90
writeMethod · 0.45
readMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected