MCPcopy Create free account
hub / github.com/CodeBendKit/codeseek / _extract_entities_from_file

Method _extract_entities_from_file

rust-core/src/codegraph/parser.rs:131–182  ·  view source on GitHub ↗

从文件提取实体

(&self, file_path: &PathBuf)

Source from the content-addressed store, hash-verified

129
130 /// 从文件提取实体
131 fn _extract_entities_from_file(&self, file_path: &PathBuf) -> Result<(Vec<ClassInfo>, Vec<FunctionInfo>), String> {
132 let mut classes = Vec::new();
133 let mut functions = Vec::new();
134
135 // 使用TreeSitter解析器解析文件
136 let symbols = self.ts_parser.parse_file(file_path)
137 .map_err(|e| format!("Failed to parse file {}: {:?}", file_path.display(), e))?;
138
139 let language = self._detect_language(file_path);
140 let namespace = self._extract_namespace(file_path);
141
142 for symbol in symbols {
143 let symbol_guard = symbol.read();
144 let symbol_ref = symbol_guard.as_ref();
145
146 match symbol_ref.symbol_type() {
147 crate::codegraph::treesitter::structs::SymbolType::FunctionDeclaration => {
148 let function = FunctionInfo {
149 id: Uuid::new_v4(),
150 name: symbol_ref.name().to_string(),
151 file_path: file_path.clone(),
152 line_start: symbol_ref.full_range().start_point.row + 1,
153 line_end: symbol_ref.full_range().end_point.row + 1,
154 namespace: namespace.clone(),
155 language: language.clone(),
156 signature: Some(symbol_ref.name().to_string()),
157 };
158 functions.push(function);
159 },
160 crate::codegraph::treesitter::structs::SymbolType::StructDeclaration => {
161 let class = ClassInfo {
162 id: Uuid::new_v4(),
163 name: symbol_ref.name().to_string(),
164 file_path: file_path.clone(),
165 line_start: symbol_ref.full_range().start_point.row + 1,
166 line_end: symbol_ref.full_range().end_point.row + 1,
167 namespace: namespace.clone(),
168 language: language.clone(),
169 class_type: ClassType::Struct,
170 parent_class: None,
171 implemented_interfaces: vec![],
172 member_functions: vec![],
173 member_variables: vec![],
174 };
175 classes.push(class);
176 },
177 _ => {}
178 }
179 }
180
181 Ok((classes, functions))
182 }
183
184 /// 分析文件的函数调用
185 fn _analyze_file_calls(

Callers 1

refresh_fileMethod · 0.45

Calls 7

symbol_typeMethod · 0.80
to_stringMethod · 0.80
nameMethod · 0.80
full_rangeMethod · 0.80
parse_fileMethod · 0.45
_detect_languageMethod · 0.45
_extract_namespaceMethod · 0.45

Tested by

no test coverage detected