agent-ide 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/change-signature/change-signature-service.d.ts.map +1 -1
- package/dist/core/change-signature/change-signature-service.js +5 -9
- package/dist/core/change-signature/change-signature-service.js.map +1 -1
- package/dist/core/change-signature/signature-parser.d.ts +0 -16
- package/dist/core/change-signature/signature-parser.d.ts.map +1 -1
- package/dist/core/change-signature/signature-parser.js +0 -109
- package/dist/core/change-signature/signature-parser.js.map +1 -1
- package/dist/core/dead-code/dead-code-detector.d.ts +63 -0
- package/dist/core/dead-code/dead-code-detector.d.ts.map +1 -0
- package/dist/core/dead-code/dead-code-detector.js +256 -0
- package/dist/core/dead-code/dead-code-detector.js.map +1 -0
- package/dist/core/dead-code/index.d.ts +8 -0
- package/dist/core/dead-code/index.d.ts.map +1 -0
- package/dist/core/dead-code/index.js +7 -0
- package/dist/core/dead-code/index.js.map +1 -0
- package/dist/core/dead-code/types.d.ts +68 -0
- package/dist/core/dead-code/types.d.ts.map +1 -0
- package/dist/core/dead-code/types.js +20 -0
- package/dist/core/dead-code/types.js.map +1 -0
- package/dist/core/dependency/dependency-analyzer.d.ts.map +1 -1
- package/dist/core/dependency/dependency-analyzer.js +2 -15
- package/dist/core/dependency/dependency-analyzer.js.map +1 -1
- package/dist/core/indexing/index-engine.d.ts.map +1 -1
- package/dist/core/indexing/index-engine.js +0 -12
- package/dist/core/indexing/index-engine.js.map +1 -1
- package/dist/core/indexing/types.d.ts +1 -1
- package/dist/core/indexing/types.js +1 -1
- package/dist/core/indexing/types.js.map +1 -1
- package/dist/core/move-file/import-resolver.d.ts +1 -1
- package/dist/core/move-file/import-resolver.d.ts.map +1 -1
- package/dist/core/move-file/import-resolver.js +1 -9
- package/dist/core/move-file/import-resolver.js.map +1 -1
- package/dist/core/move-file/move-service.d.ts +8 -0
- package/dist/core/move-file/move-service.d.ts.map +1 -1
- package/dist/core/move-file/move-service.js +102 -21
- package/dist/core/move-file/move-service.js.map +1 -1
- package/dist/core/move-member/member-extractor.d.ts +0 -8
- package/dist/core/move-member/member-extractor.d.ts.map +1 -1
- package/dist/core/move-member/member-extractor.js +0 -49
- package/dist/core/move-member/member-extractor.js.map +1 -1
- package/dist/core/move-member/move-member-service.js +1 -1
- package/dist/core/move-member/move-member-service.js.map +1 -1
- package/dist/core/rename/reference-updater.d.ts +4 -0
- package/dist/core/rename/reference-updater.d.ts.map +1 -1
- package/dist/core/rename/reference-updater.js +30 -0
- package/dist/core/rename/reference-updater.js.map +1 -1
- package/dist/core/snapshot/index.d.ts +2 -0
- package/dist/core/snapshot/index.d.ts.map +1 -1
- package/dist/core/snapshot/index.js +1 -0
- package/dist/core/snapshot/index.js.map +1 -1
- package/dist/core/snapshot/snapshot-cache.d.ts +103 -0
- package/dist/core/snapshot/snapshot-cache.d.ts.map +1 -0
- package/dist/core/snapshot/snapshot-cache.js +249 -0
- package/dist/core/snapshot/snapshot-cache.js.map +1 -0
- package/dist/core/snapshot/snapshot-generator.d.ts +12 -0
- package/dist/core/snapshot/snapshot-generator.d.ts.map +1 -1
- package/dist/core/snapshot/snapshot-generator.js +61 -3
- package/dist/core/snapshot/snapshot-generator.js.map +1 -1
- package/dist/infrastructure/formatters/index.d.ts +1 -1
- package/dist/infrastructure/formatters/index.d.ts.map +1 -1
- package/dist/infrastructure/formatters/index.js.map +1 -1
- package/dist/infrastructure/formatters/query-formatter.d.ts +16 -0
- package/dist/infrastructure/formatters/query-formatter.d.ts.map +1 -1
- package/dist/infrastructure/formatters/query-formatter.js +155 -3
- package/dist/infrastructure/formatters/query-formatter.js.map +1 -1
- package/dist/infrastructure/formatters/query-types.d.ts +73 -2
- package/dist/infrastructure/formatters/query-types.d.ts.map +1 -1
- package/dist/interfaces/cli/cli.d.ts.map +1 -1
- package/dist/interfaces/cli/cli.js +2 -29
- package/dist/interfaces/cli/cli.js.map +1 -1
- package/dist/interfaces/cli/commands/deadcode.command.d.ts +11 -0
- package/dist/interfaces/cli/commands/deadcode.command.d.ts.map +1 -0
- package/dist/interfaces/cli/commands/deadcode.command.js +103 -0
- package/dist/interfaces/cli/commands/deadcode.command.js.map +1 -0
- package/dist/interfaces/cli/commands/index.d.ts +1 -0
- package/dist/interfaces/cli/commands/index.d.ts.map +1 -1
- package/dist/interfaces/cli/commands/index.js +1 -0
- package/dist/interfaces/cli/commands/index.js.map +1 -1
- package/dist/interfaces/cli/commands/move.command.js +1 -1
- package/dist/interfaces/cli/commands/move.command.js.map +1 -1
- package/dist/interfaces/cli/commands/rename.command.js +2 -3
- package/dist/interfaces/cli/commands/rename.command.js.map +1 -1
- package/dist/interfaces/cli/commands/snapshot.command.d.ts.map +1 -1
- package/dist/interfaces/cli/commands/snapshot.command.js +20 -0
- package/dist/interfaces/cli/commands/snapshot.command.js.map +1 -1
- package/package.json +10 -12
- package/dist/plugins/python/dependency-analyzer.d.ts +0 -86
- package/dist/plugins/python/dependency-analyzer.d.ts.map +0 -1
- package/dist/plugins/python/dependency-analyzer.js +0 -252
- package/dist/plugins/python/dependency-analyzer.js.map +0 -1
- package/dist/plugins/python/index.d.ts +0 -9
- package/dist/plugins/python/index.d.ts.map +0 -1
- package/dist/plugins/python/index.js +0 -14
- package/dist/plugins/python/index.js.map +0 -1
- package/dist/plugins/python/parser.d.ts +0 -117
- package/dist/plugins/python/parser.d.ts.map +0 -1
- package/dist/plugins/python/parser.js +0 -414
- package/dist/plugins/python/parser.js.map +0 -1
- package/dist/plugins/python/symbol-extractor.d.ts +0 -108
- package/dist/plugins/python/symbol-extractor.d.ts.map +0 -1
- package/dist/plugins/python/symbol-extractor.js +0 -389
- package/dist/plugins/python/symbol-extractor.js.map +0 -1
- package/dist/plugins/python/tree-sitter-bridge.d.ts +0 -57
- package/dist/plugins/python/tree-sitter-bridge.d.ts.map +0 -1
- package/dist/plugins/python/tree-sitter-bridge.js +0 -269
- package/dist/plugins/python/tree-sitter-bridge.js.map +0 -1
- package/dist/plugins/python/types.d.ts +0 -191
- package/dist/plugins/python/types.d.ts.map +0 -1
- package/dist/plugins/python/types.js +0 -279
- package/dist/plugins/python/types.js.map +0 -1
- package/dist/plugins/swift/dependency-analyzer.d.ts +0 -33
- package/dist/plugins/swift/dependency-analyzer.d.ts.map +0 -1
- package/dist/plugins/swift/dependency-analyzer.js +0 -95
- package/dist/plugins/swift/dependency-analyzer.js.map +0 -1
- package/dist/plugins/swift/index.d.ts +0 -14
- package/dist/plugins/swift/index.d.ts.map +0 -1
- package/dist/plugins/swift/index.js +0 -19
- package/dist/plugins/swift/index.js.map +0 -1
- package/dist/plugins/swift/parser.d.ts +0 -164
- package/dist/plugins/swift/parser.d.ts.map +0 -1
- package/dist/plugins/swift/parser.js +0 -688
- package/dist/plugins/swift/parser.js.map +0 -1
- package/dist/plugins/swift/swift-bridge/swift-parser +0 -0
- package/dist/plugins/swift/symbol-extractor.d.ts +0 -46
- package/dist/plugins/swift/symbol-extractor.d.ts.map +0 -1
- package/dist/plugins/swift/symbol-extractor.js +0 -187
- package/dist/plugins/swift/symbol-extractor.js.map +0 -1
- package/dist/plugins/swift/types.d.ts +0 -149
- package/dist/plugins/swift/types.d.ts.map +0 -1
- package/dist/plugins/swift/types.js +0 -251
- package/dist/plugins/swift/types.js.map +0 -1
|
@@ -1,279 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Python Parser 特定型別定義
|
|
3
|
-
*/
|
|
4
|
-
import { SymbolType } from '../../shared/types/index.js';
|
|
5
|
-
/**
|
|
6
|
-
* Python AST 節點類型(對應 tree-sitter-python)
|
|
7
|
-
*/
|
|
8
|
-
export var PythonNodeKind;
|
|
9
|
-
(function (PythonNodeKind) {
|
|
10
|
-
// 模組和結構
|
|
11
|
-
PythonNodeKind["Module"] = "module";
|
|
12
|
-
PythonNodeKind["ClassDefinition"] = "class_definition";
|
|
13
|
-
PythonNodeKind["FunctionDefinition"] = "function_definition";
|
|
14
|
-
PythonNodeKind["AsyncFunctionDefinition"] = "async_function_definition";
|
|
15
|
-
PythonNodeKind["DecoratedDefinition"] = "decorated_definition";
|
|
16
|
-
PythonNodeKind["Decorator"] = "decorator";
|
|
17
|
-
// 語句
|
|
18
|
-
PythonNodeKind["ImportStatement"] = "import_statement";
|
|
19
|
-
PythonNodeKind["ImportFromStatement"] = "import_from_statement";
|
|
20
|
-
PythonNodeKind["Assignment"] = "assignment";
|
|
21
|
-
PythonNodeKind["AugmentedAssignment"] = "augmented_assignment";
|
|
22
|
-
PythonNodeKind["AnnotatedAssignment"] = "annotated_assignment";
|
|
23
|
-
PythonNodeKind["GlobalStatement"] = "global_statement";
|
|
24
|
-
PythonNodeKind["NonlocalStatement"] = "nonlocal_statement";
|
|
25
|
-
PythonNodeKind["ExpressionStatement"] = "expression_statement";
|
|
26
|
-
PythonNodeKind["ReturnStatement"] = "return_statement";
|
|
27
|
-
PythonNodeKind["PassStatement"] = "pass_statement";
|
|
28
|
-
PythonNodeKind["BreakStatement"] = "break_statement";
|
|
29
|
-
PythonNodeKind["ContinueStatement"] = "continue_statement";
|
|
30
|
-
PythonNodeKind["RaiseStatement"] = "raise_statement";
|
|
31
|
-
PythonNodeKind["AssertStatement"] = "assert_statement";
|
|
32
|
-
PythonNodeKind["DeleteStatement"] = "delete_statement";
|
|
33
|
-
PythonNodeKind["PrintStatement"] = "print_statement";
|
|
34
|
-
// 控制流
|
|
35
|
-
PythonNodeKind["IfStatement"] = "if_statement";
|
|
36
|
-
PythonNodeKind["ElifClause"] = "elif_clause";
|
|
37
|
-
PythonNodeKind["ElseClause"] = "else_clause";
|
|
38
|
-
PythonNodeKind["ForStatement"] = "for_statement";
|
|
39
|
-
PythonNodeKind["WhileStatement"] = "while_statement";
|
|
40
|
-
PythonNodeKind["TryStatement"] = "try_statement";
|
|
41
|
-
PythonNodeKind["ExceptClause"] = "except_clause";
|
|
42
|
-
PythonNodeKind["FinallyClause"] = "finally_clause";
|
|
43
|
-
PythonNodeKind["WithStatement"] = "with_statement";
|
|
44
|
-
PythonNodeKind["AsyncForStatement"] = "async_for_statement";
|
|
45
|
-
PythonNodeKind["AsyncWithStatement"] = "async_with_statement";
|
|
46
|
-
// Python 3.10+ match-case
|
|
47
|
-
PythonNodeKind["MatchStatement"] = "match_statement";
|
|
48
|
-
PythonNodeKind["CaseClause"] = "case_clause";
|
|
49
|
-
PythonNodeKind["CasePattern"] = "case_pattern";
|
|
50
|
-
// 表達式
|
|
51
|
-
PythonNodeKind["BinaryOperator"] = "binary_operator";
|
|
52
|
-
PythonNodeKind["UnaryOperator"] = "unary_operator";
|
|
53
|
-
PythonNodeKind["BooleanOperator"] = "boolean_operator";
|
|
54
|
-
PythonNodeKind["ComparisonOperator"] = "comparison_operator";
|
|
55
|
-
PythonNodeKind["ConditionalExpression"] = "conditional_expression";
|
|
56
|
-
PythonNodeKind["LambdaExpression"] = "lambda";
|
|
57
|
-
PythonNodeKind["Call"] = "call";
|
|
58
|
-
PythonNodeKind["Attribute"] = "attribute";
|
|
59
|
-
PythonNodeKind["Subscript"] = "subscript";
|
|
60
|
-
PythonNodeKind["Slice"] = "slice";
|
|
61
|
-
// 容器
|
|
62
|
-
PythonNodeKind["List"] = "list";
|
|
63
|
-
PythonNodeKind["Dictionary"] = "dictionary";
|
|
64
|
-
PythonNodeKind["Set"] = "set";
|
|
65
|
-
PythonNodeKind["Tuple"] = "tuple";
|
|
66
|
-
PythonNodeKind["ListComprehension"] = "list_comprehension";
|
|
67
|
-
PythonNodeKind["DictionaryComprehension"] = "dictionary_comprehension";
|
|
68
|
-
PythonNodeKind["SetComprehension"] = "set_comprehension";
|
|
69
|
-
PythonNodeKind["GeneratorExpression"] = "generator_expression";
|
|
70
|
-
// 基本元素
|
|
71
|
-
PythonNodeKind["Identifier"] = "identifier";
|
|
72
|
-
PythonNodeKind["Integer"] = "integer";
|
|
73
|
-
PythonNodeKind["Float"] = "float";
|
|
74
|
-
PythonNodeKind["String"] = "string";
|
|
75
|
-
PythonNodeKind["ConcatenatedString"] = "concatenated_string";
|
|
76
|
-
PythonNodeKind["True"] = "true";
|
|
77
|
-
PythonNodeKind["False"] = "false";
|
|
78
|
-
PythonNodeKind["None"] = "none";
|
|
79
|
-
PythonNodeKind["Comment"] = "comment";
|
|
80
|
-
// 參數和型別
|
|
81
|
-
PythonNodeKind["Parameters"] = "parameters";
|
|
82
|
-
PythonNodeKind["Parameter"] = "parameter";
|
|
83
|
-
PythonNodeKind["DefaultParameter"] = "default_parameter";
|
|
84
|
-
PythonNodeKind["TypedParameter"] = "typed_parameter";
|
|
85
|
-
PythonNodeKind["TypedDefaultParameter"] = "typed_default_parameter";
|
|
86
|
-
PythonNodeKind["ListSplatPattern"] = "list_splat_pattern";
|
|
87
|
-
PythonNodeKind["DictionarySplatPattern"] = "dictionary_splat_pattern";
|
|
88
|
-
PythonNodeKind["KeywordArgument"] = "keyword_argument";
|
|
89
|
-
PythonNodeKind["Type"] = "type";
|
|
90
|
-
// 區塊
|
|
91
|
-
PythonNodeKind["Block"] = "block";
|
|
92
|
-
PythonNodeKind["ArgumentList"] = "argument_list";
|
|
93
|
-
// Import 相關
|
|
94
|
-
PythonNodeKind["DottedName"] = "dotted_name";
|
|
95
|
-
PythonNodeKind["AliasedImport"] = "aliased_import";
|
|
96
|
-
PythonNodeKind["WildcardImport"] = "wildcard_import";
|
|
97
|
-
PythonNodeKind["RelativeImport"] = "relative_import";
|
|
98
|
-
PythonNodeKind["ImportPrefix"] = "import_prefix";
|
|
99
|
-
})(PythonNodeKind || (PythonNodeKind = {}));
|
|
100
|
-
/**
|
|
101
|
-
* Python 符號類型映射
|
|
102
|
-
*/
|
|
103
|
-
export const PYTHON_SYMBOL_TYPE_MAP = {
|
|
104
|
-
[PythonNodeKind.ClassDefinition]: SymbolType.Class,
|
|
105
|
-
[PythonNodeKind.FunctionDefinition]: SymbolType.Function,
|
|
106
|
-
[PythonNodeKind.AsyncFunctionDefinition]: SymbolType.Function,
|
|
107
|
-
[PythonNodeKind.Assignment]: SymbolType.Variable,
|
|
108
|
-
[PythonNodeKind.AnnotatedAssignment]: SymbolType.Variable,
|
|
109
|
-
[PythonNodeKind.Parameter]: SymbolType.Variable,
|
|
110
|
-
[PythonNodeKind.TypedParameter]: SymbolType.Variable,
|
|
111
|
-
[PythonNodeKind.DefaultParameter]: SymbolType.Variable,
|
|
112
|
-
[PythonNodeKind.TypedDefaultParameter]: SymbolType.Variable,
|
|
113
|
-
[PythonNodeKind.ImportStatement]: SymbolType.Module,
|
|
114
|
-
[PythonNodeKind.ImportFromStatement]: SymbolType.Module
|
|
115
|
-
};
|
|
116
|
-
/**
|
|
117
|
-
* 控制流節點複雜度權重(用於複雜度分析)
|
|
118
|
-
*/
|
|
119
|
-
export const COMPLEXITY_WEIGHTS = {
|
|
120
|
-
[PythonNodeKind.IfStatement]: 1,
|
|
121
|
-
[PythonNodeKind.ElifClause]: 1,
|
|
122
|
-
[PythonNodeKind.ForStatement]: 1,
|
|
123
|
-
[PythonNodeKind.AsyncForStatement]: 1,
|
|
124
|
-
[PythonNodeKind.WhileStatement]: 1,
|
|
125
|
-
[PythonNodeKind.TryStatement]: 1,
|
|
126
|
-
[PythonNodeKind.ExceptClause]: 1,
|
|
127
|
-
[PythonNodeKind.MatchStatement]: 1,
|
|
128
|
-
[PythonNodeKind.CaseClause]: 1,
|
|
129
|
-
[PythonNodeKind.BooleanOperator]: 1,
|
|
130
|
-
[PythonNodeKind.ConditionalExpression]: 1,
|
|
131
|
-
[PythonNodeKind.ListComprehension]: 1,
|
|
132
|
-
[PythonNodeKind.DictionaryComprehension]: 1,
|
|
133
|
-
[PythonNodeKind.SetComprehension]: 1,
|
|
134
|
-
[PythonNodeKind.GeneratorExpression]: 1
|
|
135
|
-
};
|
|
136
|
-
/**
|
|
137
|
-
* 位置轉換:tree-sitter Point → Position
|
|
138
|
-
*/
|
|
139
|
-
export function tsPointToPosition(point, offset) {
|
|
140
|
-
return {
|
|
141
|
-
line: point.row,
|
|
142
|
-
column: point.column,
|
|
143
|
-
offset
|
|
144
|
-
};
|
|
145
|
-
}
|
|
146
|
-
/**
|
|
147
|
-
* 範圍轉換:tree-sitter Node → Range
|
|
148
|
-
*/
|
|
149
|
-
export function tsNodeToRange(node) {
|
|
150
|
-
return {
|
|
151
|
-
start: tsPointToPosition(node.startPosition, node.startIndex),
|
|
152
|
-
end: tsPointToPosition(node.endPosition, node.endIndex)
|
|
153
|
-
};
|
|
154
|
-
}
|
|
155
|
-
/**
|
|
156
|
-
* 節點類型字串轉 PythonNodeKind
|
|
157
|
-
*/
|
|
158
|
-
export function nodeTypeToKind(type) {
|
|
159
|
-
const kindMap = {};
|
|
160
|
-
// 反向映射 enum
|
|
161
|
-
for (const [key, value] of Object.entries(PythonNodeKind)) {
|
|
162
|
-
kindMap[value] = value;
|
|
163
|
-
}
|
|
164
|
-
return kindMap[type] || type;
|
|
165
|
-
}
|
|
166
|
-
/**
|
|
167
|
-
* 檢查路徑是否為相對導入
|
|
168
|
-
*/
|
|
169
|
-
export function isRelativePath(path) {
|
|
170
|
-
return path.startsWith('.');
|
|
171
|
-
}
|
|
172
|
-
/**
|
|
173
|
-
* Python 保留字列表
|
|
174
|
-
*/
|
|
175
|
-
const PYTHON_RESERVED_WORDS = new Set([
|
|
176
|
-
// Keywords
|
|
177
|
-
'False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await',
|
|
178
|
-
'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except',
|
|
179
|
-
'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is',
|
|
180
|
-
'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try',
|
|
181
|
-
'while', 'with', 'yield',
|
|
182
|
-
// Python 3.10+ soft keywords
|
|
183
|
-
'match', 'case', 'type', '_'
|
|
184
|
-
]);
|
|
185
|
-
/** 預編譯的 Unicode 識別符正則表達式 */
|
|
186
|
-
const PYTHON_UNICODE_IDENTIFIER_PATTERN = /^[\p{ID_Start}_][\p{ID_Continue}]*$/u;
|
|
187
|
-
/**
|
|
188
|
-
* 驗證 Python 識別符名稱
|
|
189
|
-
*
|
|
190
|
-
* Python 3 支援 Unicode 識別符(PEP 3131):
|
|
191
|
-
* - 第一個字元:Unicode 類別 ID_Start 或底線
|
|
192
|
-
* - 後續字元:Unicode 類別 ID_Continue
|
|
193
|
-
*
|
|
194
|
-
* 範例:
|
|
195
|
-
* - 用戶名稱 = "John" # 合法
|
|
196
|
-
* - データ = 123 # 合法(日文)
|
|
197
|
-
*/
|
|
198
|
-
export function isValidPythonIdentifier(name) {
|
|
199
|
-
if (!name || name.length === 0) {
|
|
200
|
-
return false;
|
|
201
|
-
}
|
|
202
|
-
return PYTHON_UNICODE_IDENTIFIER_PATTERN.test(name) && !isPythonReservedWord(name);
|
|
203
|
-
}
|
|
204
|
-
/**
|
|
205
|
-
* 檢查是否為 Python 保留字
|
|
206
|
-
*/
|
|
207
|
-
export function isPythonReservedWord(name) {
|
|
208
|
-
return PYTHON_RESERVED_WORDS.has(name);
|
|
209
|
-
}
|
|
210
|
-
/**
|
|
211
|
-
* Python 解析錯誤類別
|
|
212
|
-
*/
|
|
213
|
-
export class PythonParseError extends Error {
|
|
214
|
-
filePath;
|
|
215
|
-
position;
|
|
216
|
-
constructor(message, filePath, position) {
|
|
217
|
-
super(message);
|
|
218
|
-
this.filePath = filePath;
|
|
219
|
-
this.position = position;
|
|
220
|
-
this.name = 'PythonParseError';
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
/**
|
|
224
|
-
* 創建解析錯誤
|
|
225
|
-
*/
|
|
226
|
-
export function createParseError(message, filePath, position) {
|
|
227
|
-
return new PythonParseError(message, filePath, position);
|
|
228
|
-
}
|
|
229
|
-
/**
|
|
230
|
-
* Python 常用內建函數(用於安全檢查)
|
|
231
|
-
*/
|
|
232
|
-
export const DANGEROUS_FUNCTIONS = new Set([
|
|
233
|
-
'eval',
|
|
234
|
-
'exec',
|
|
235
|
-
'compile',
|
|
236
|
-
'__import__',
|
|
237
|
-
'open',
|
|
238
|
-
'input'
|
|
239
|
-
]);
|
|
240
|
-
/**
|
|
241
|
-
* Python 安全性相關模組
|
|
242
|
-
*/
|
|
243
|
-
export const SECURITY_SENSITIVE_MODULES = new Set([
|
|
244
|
-
'pickle',
|
|
245
|
-
'marshal',
|
|
246
|
-
'shelve',
|
|
247
|
-
'subprocess',
|
|
248
|
-
'os',
|
|
249
|
-
'sys',
|
|
250
|
-
'shutil',
|
|
251
|
-
'tempfile'
|
|
252
|
-
]);
|
|
253
|
-
/**
|
|
254
|
-
* PEP8 命名規範模式
|
|
255
|
-
*/
|
|
256
|
-
export const NAMING_PATTERNS = {
|
|
257
|
-
/** snake_case:變數、函式、方法 */
|
|
258
|
-
snakeCase: /^[a-z][a-z0-9_]*$/,
|
|
259
|
-
/** UPPER_SNAKE_CASE:常量 */
|
|
260
|
-
upperSnakeCase: /^[A-Z][A-Z0-9_]*$/,
|
|
261
|
-
/** PascalCase:類別 */
|
|
262
|
-
pascalCase: /^[A-Z][a-zA-Z0-9]*$/,
|
|
263
|
-
/** _private:私有成員 */
|
|
264
|
-
privatePrefix: /^_[a-z][a-z0-9_]*$/,
|
|
265
|
-
/** __dunder__:特殊方法 */
|
|
266
|
-
dunderPattern: /^__[a-z][a-z0-9_]*__$/
|
|
267
|
-
};
|
|
268
|
-
/**
|
|
269
|
-
* 檢查是否為測試檔案
|
|
270
|
-
*/
|
|
271
|
-
export function isPythonTestFile(filePath) {
|
|
272
|
-
const fileName = filePath.split('/').pop() || '';
|
|
273
|
-
return (fileName.startsWith('test_')
|
|
274
|
-
|| fileName.endsWith('_test.py')
|
|
275
|
-
|| fileName === 'conftest.py'
|
|
276
|
-
|| filePath.includes('/tests/')
|
|
277
|
-
|| filePath.includes('/test/'));
|
|
278
|
-
}
|
|
279
|
-
//# sourceMappingURL=types.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/plugins/python/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGpD;;GAEG;AACH,MAAM,CAAN,IAAY,cAmGX;AAnGD,WAAY,cAAc;IACxB,QAAQ;IACR,mCAAiB,CAAA;IACjB,sDAAoC,CAAA;IACpC,4DAA0C,CAAA;IAC1C,uEAAqD,CAAA;IACrD,8DAA4C,CAAA;IAC5C,yCAAuB,CAAA;IAEvB,KAAK;IACL,sDAAoC,CAAA;IACpC,+DAA6C,CAAA;IAC7C,2CAAyB,CAAA;IACzB,8DAA4C,CAAA;IAC5C,8DAA4C,CAAA;IAC5C,sDAAoC,CAAA;IACpC,0DAAwC,CAAA;IACxC,8DAA4C,CAAA;IAC5C,sDAAoC,CAAA;IACpC,kDAAgC,CAAA;IAChC,oDAAkC,CAAA;IAClC,0DAAwC,CAAA;IACxC,oDAAkC,CAAA;IAClC,sDAAoC,CAAA;IACpC,sDAAoC,CAAA;IACpC,oDAAkC,CAAA;IAElC,MAAM;IACN,8CAA4B,CAAA;IAC5B,4CAA0B,CAAA;IAC1B,4CAA0B,CAAA;IAC1B,gDAA8B,CAAA;IAC9B,oDAAkC,CAAA;IAClC,gDAA8B,CAAA;IAC9B,gDAA8B,CAAA;IAC9B,kDAAgC,CAAA;IAChC,kDAAgC,CAAA;IAChC,2DAAyC,CAAA;IACzC,6DAA2C,CAAA;IAE3C,0BAA0B;IAC1B,oDAAkC,CAAA;IAClC,4CAA0B,CAAA;IAC1B,8CAA4B,CAAA;IAE5B,MAAM;IACN,oDAAkC,CAAA;IAClC,kDAAgC,CAAA;IAChC,sDAAoC,CAAA;IACpC,4DAA0C,CAAA;IAC1C,kEAAgD,CAAA;IAChD,6CAA2B,CAAA;IAC3B,+BAAa,CAAA;IACb,yCAAuB,CAAA;IACvB,yCAAuB,CAAA;IACvB,iCAAe,CAAA;IAEf,KAAK;IACL,+BAAa,CAAA;IACb,2CAAyB,CAAA;IACzB,6BAAW,CAAA;IACX,iCAAe,CAAA;IACf,0DAAwC,CAAA;IACxC,sEAAoD,CAAA;IACpD,wDAAsC,CAAA;IACtC,8DAA4C,CAAA;IAE5C,OAAO;IACP,2CAAyB,CAAA;IACzB,qCAAmB,CAAA;IACnB,iCAAe,CAAA;IACf,mCAAiB,CAAA;IACjB,4DAA0C,CAAA;IAC1C,+BAAa,CAAA;IACb,iCAAe,CAAA;IACf,+BAAa,CAAA;IACb,qCAAmB,CAAA;IAEnB,QAAQ;IACR,2CAAyB,CAAA;IACzB,yCAAuB,CAAA;IACvB,wDAAsC,CAAA;IACtC,oDAAkC,CAAA;IAClC,mEAAiD,CAAA;IACjD,yDAAuC,CAAA;IACvC,qEAAmD,CAAA;IACnD,sDAAoC,CAAA;IACpC,+BAAa,CAAA;IAEb,KAAK;IACL,iCAAe,CAAA;IACf,gDAA8B,CAAA;IAE9B,YAAY;IACZ,4CAA0B,CAAA;IAC1B,kDAAgC,CAAA;IAChC,oDAAkC,CAAA;IAClC,oDAAkC,CAAA;IAClC,gDAA8B,CAAA;AAChC,CAAC,EAnGW,cAAc,KAAd,cAAc,QAmGzB;AAyBD;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAgD;IACjF,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE,UAAU,CAAC,KAAK;IAClD,CAAC,cAAc,CAAC,kBAAkB,CAAC,EAAE,UAAU,CAAC,QAAQ;IACxD,CAAC,cAAc,CAAC,uBAAuB,CAAC,EAAE,UAAU,CAAC,QAAQ;IAC7D,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC,QAAQ;IAChD,CAAC,cAAc,CAAC,mBAAmB,CAAC,EAAE,UAAU,CAAC,QAAQ;IACzD,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC,QAAQ;IAC/C,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC,QAAQ;IACpD,CAAC,cAAc,CAAC,gBAAgB,CAAC,EAAE,UAAU,CAAC,QAAQ;IACtD,CAAC,cAAc,CAAC,qBAAqB,CAAC,EAAE,UAAU,CAAC,QAAQ;IAC3D,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE,UAAU,CAAC,MAAM;IACnD,CAAC,cAAc,CAAC,mBAAmB,CAAC,EAAE,UAAU,CAAC,MAAM;CACxD,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAA4C;IACzE,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,CAAC;IAC/B,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC;IAC9B,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE,CAAC;IAChC,CAAC,cAAc,CAAC,iBAAiB,CAAC,EAAE,CAAC;IACrC,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,CAAC;IAClC,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE,CAAC;IAChC,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE,CAAC;IAChC,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,CAAC;IAClC,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC;IAC9B,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE,CAAC;IACnC,CAAC,cAAc,CAAC,qBAAqB,CAAC,EAAE,CAAC;IACzC,CAAC,cAAc,CAAC,iBAAiB,CAAC,EAAE,CAAC;IACrC,CAAC,cAAc,CAAC,uBAAuB,CAAC,EAAE,CAAC;IAC3C,CAAC,cAAc,CAAC,gBAAgB,CAAC,EAAE,CAAC;IACpC,CAAC,cAAc,CAAC,mBAAmB,CAAC,EAAE,CAAC;CACxC,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAsB,EAAE,MAAc;IACtE,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,GAAG;QACf,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,MAAM;KACP,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,IAAoB;IAChD,OAAO;QACL,KAAK,EAAE,iBAAiB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC;QAC7D,GAAG,EAAE,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC;KACxD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,OAAO,GAAmC,EAAE,CAAC;IAEnD,YAAY;IACZ,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;QAC1D,OAAO,CAAC,KAAK,CAAC,GAAG,KAAuB,CAAC;IAC3C,CAAC;IAED,OAAO,OAAO,CAAC,IAAI,CAAC,IAAK,IAAuB,CAAC;AACnD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC;IACpC,WAAW;IACX,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO;IAChE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ;IACpE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI;IAC9D,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK;IACnE,OAAO,EAAE,MAAM,EAAE,OAAO;IACxB,6BAA6B;IAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG;CAC7B,CAAC,CAAC;AAEH,4BAA4B;AAC5B,MAAM,iCAAiC,GAAG,sCAAsC,CAAC;AAEjF;;;;;;;;;;GAUG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAAY;IAClD,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,iCAAiC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;AACrF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,OAAO,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IAGvB;IACA;IAHlB,YACE,OAAe,EACC,QAAiB,EACjB,QAAmB;QAEnC,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,aAAQ,GAAR,QAAQ,CAAS;QACjB,aAAQ,GAAR,QAAQ,CAAW;QAGnC,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAe,EAAE,QAAiB,EAAE,QAAmB;IACtF,OAAO,IAAI,gBAAgB,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC3D,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC;IACzC,MAAM;IACN,MAAM;IACN,SAAS;IACT,YAAY;IACZ,MAAM;IACN,OAAO;CACR,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,IAAI,GAAG,CAAC;IAChD,QAAQ;IACR,SAAS;IACT,QAAQ;IACR,YAAY;IACZ,IAAI;IACJ,KAAK;IACL,QAAQ;IACR,UAAU;CACX,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,0BAA0B;IAC1B,SAAS,EAAE,mBAAmB;IAC9B,0BAA0B;IAC1B,cAAc,EAAE,mBAAmB;IACnC,oBAAoB;IACpB,UAAU,EAAE,qBAAqB;IACjC,oBAAoB;IACpB,aAAa,EAAE,oBAAoB;IACnC,sBAAsB;IACtB,aAAa,EAAE,uBAAuB;CACvC,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAgB;IAC/C,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;IACjD,OAAO,CACL,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC;WACzB,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC;WAC7B,QAAQ,KAAK,aAAa;WAC1B,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC;WAC5B,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAC/B,CAAC;AACJ,CAAC"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Swift Dependency Analyzer
|
|
3
|
-
* 分析 Swift 程式碼的依賴關係
|
|
4
|
-
*/
|
|
5
|
-
import type { Dependency } from '../../shared/types/index.js';
|
|
6
|
-
import type { SwiftAST } from '../swift/types.js';
|
|
7
|
-
/**
|
|
8
|
-
* Swift 依賴分析器
|
|
9
|
-
*/
|
|
10
|
-
export declare class SwiftDependencyAnalyzer {
|
|
11
|
-
/**
|
|
12
|
-
* 從 AST 提取依賴關係
|
|
13
|
-
*/
|
|
14
|
-
extractDependencies(ast: SwiftAST): Promise<Dependency[]>;
|
|
15
|
-
/**
|
|
16
|
-
* 從節點遞歸提取依賴
|
|
17
|
-
*/
|
|
18
|
-
private extractDependenciesFromNode;
|
|
19
|
-
/**
|
|
20
|
-
* 從 import 節點提取依賴
|
|
21
|
-
*/
|
|
22
|
-
private extractImportDependency;
|
|
23
|
-
/**
|
|
24
|
-
* 判斷是否為外部依賴
|
|
25
|
-
* Swift 系統 framework 視為外部依賴
|
|
26
|
-
*/
|
|
27
|
-
private isExternalDependency;
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* 建立依賴分析器實例
|
|
31
|
-
*/
|
|
32
|
-
export declare function createDependencyAnalyzer(): SwiftDependencyAnalyzer;
|
|
33
|
-
//# sourceMappingURL=dependency-analyzer.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dependency-analyzer.d.ts","sourceRoot":"","sources":["../../../src/plugins/swift/dependency-analyzer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,KAAK,EAAE,QAAQ,EAAgB,MAAM,yBAAyB,CAAC;AAGtE;;GAEG;AACH,qBAAa,uBAAuB;IAClC;;OAEG;IACG,mBAAmB,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAM/D;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAyBnC;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAiC/B;;;OAGG;IACH,OAAO,CAAC,oBAAoB;CAmB7B;AAED;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,uBAAuB,CAElE"}
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Swift Dependency Analyzer
|
|
3
|
-
* 分析 Swift 程式碼的依賴關係
|
|
4
|
-
*/
|
|
5
|
-
import { DependencyType } from '../../shared/types/index.js';
|
|
6
|
-
import { SwiftNodeKind } from '../swift/types.js';
|
|
7
|
-
/**
|
|
8
|
-
* Swift 依賴分析器
|
|
9
|
-
*/
|
|
10
|
-
export class SwiftDependencyAnalyzer {
|
|
11
|
-
/**
|
|
12
|
-
* 從 AST 提取依賴關係
|
|
13
|
-
*/
|
|
14
|
-
async extractDependencies(ast) {
|
|
15
|
-
const dependencies = [];
|
|
16
|
-
this.extractDependenciesFromNode(ast.root, ast.sourceFile, dependencies);
|
|
17
|
-
return dependencies;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* 從節點遞歸提取依賴
|
|
21
|
-
*/
|
|
22
|
-
extractDependenciesFromNode(node, filePath, dependencies) {
|
|
23
|
-
// 處理 import 語句
|
|
24
|
-
if (node.swiftKind === SwiftNodeKind.Import) {
|
|
25
|
-
const dependency = this.extractImportDependency(node, filePath);
|
|
26
|
-
if (dependency) {
|
|
27
|
-
dependencies.push(dependency);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
// 遞歸處理子節點
|
|
31
|
-
if (node.children) {
|
|
32
|
-
for (const child of node.children) {
|
|
33
|
-
this.extractDependenciesFromNode(child, filePath, dependencies);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* 從 import 節點提取依賴
|
|
39
|
-
*/
|
|
40
|
-
extractImportDependency(node, filePath) {
|
|
41
|
-
// 從 properties 或 source 取得 import 路徑
|
|
42
|
-
if (node.properties?.path) {
|
|
43
|
-
return {
|
|
44
|
-
path: node.properties.path,
|
|
45
|
-
type: DependencyType.Import,
|
|
46
|
-
isRelative: false,
|
|
47
|
-
importedSymbols: []
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
// 解析 import 語句:import Foundation, import UIKit, import SwiftUI
|
|
51
|
-
if (!node.source) {
|
|
52
|
-
return null;
|
|
53
|
-
}
|
|
54
|
-
const importMatch = node.source.match(/import\s+([A-Za-z0-9_.]+)/);
|
|
55
|
-
if (!importMatch) {
|
|
56
|
-
return null;
|
|
57
|
-
}
|
|
58
|
-
const moduleName = importMatch[1];
|
|
59
|
-
return {
|
|
60
|
-
path: moduleName,
|
|
61
|
-
type: DependencyType.Import,
|
|
62
|
-
isRelative: false,
|
|
63
|
-
importedSymbols: []
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* 判斷是否為外部依賴
|
|
68
|
-
* Swift 系統 framework 視為外部依賴
|
|
69
|
-
*/
|
|
70
|
-
isExternalDependency(moduleName) {
|
|
71
|
-
const systemFrameworks = [
|
|
72
|
-
'Foundation',
|
|
73
|
-
'UIKit',
|
|
74
|
-
'SwiftUI',
|
|
75
|
-
'Combine',
|
|
76
|
-
'CoreData',
|
|
77
|
-
'CoreGraphics',
|
|
78
|
-
'CoreLocation',
|
|
79
|
-
'MapKit',
|
|
80
|
-
'AVFoundation',
|
|
81
|
-
'WebKit',
|
|
82
|
-
'Network',
|
|
83
|
-
'Dispatch',
|
|
84
|
-
'XCTest'
|
|
85
|
-
];
|
|
86
|
-
return systemFrameworks.includes(moduleName);
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* 建立依賴分析器實例
|
|
91
|
-
*/
|
|
92
|
-
export function createDependencyAnalyzer() {
|
|
93
|
-
return new SwiftDependencyAnalyzer();
|
|
94
|
-
}
|
|
95
|
-
//# sourceMappingURL=dependency-analyzer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dependency-analyzer.js","sourceRoot":"","sources":["../../../src/plugins/swift/dependency-analyzer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD;;GAEG;AACH,MAAM,OAAO,uBAAuB;IAClC;;OAEG;IACH,KAAK,CAAC,mBAAmB,CAAC,GAAa;QACrC,MAAM,YAAY,GAAiB,EAAE,CAAC;QACtC,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QACzE,OAAO,YAAY,CAAC;IACtB,CAAC;IAED;;OAEG;IACK,2BAA2B,CACjC,IAAkB,EAClB,QAAgB,EAChB,YAA0B;QAE1B,eAAe;QACf,IAAI,IAAI,CAAC,SAAS,KAAK,aAAa,CAAC,MAAM,EAAE,CAAC;YAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAChE,IAAI,UAAU,EAAE,CAAC;gBACf,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QAED,UAAU;QACV,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClC,IAAI,CAAC,2BAA2B,CAC9B,KAAqB,EACrB,QAAQ,EACR,YAAY,CACb,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACK,uBAAuB,CAC7B,IAAkB,EAClB,QAAgB;QAEhB,qCAAqC;QACrC,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC;YAC1B,OAAO;gBACL,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,IAAc;gBACpC,IAAI,EAAE,cAAc,CAAC,MAAM;gBAC3B,UAAU,EAAE,KAAK;gBACjB,eAAe,EAAE,EAAE;aACpB,CAAC;QACJ,CAAC;QAED,+DAA+D;QAC/D,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;QACnE,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAElC,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,cAAc,CAAC,MAAM;YAC3B,UAAU,EAAE,KAAK;YACjB,eAAe,EAAE,EAAE;SACpB,CAAC;IACJ,CAAC;IAED;;;OAGG;IACK,oBAAoB,CAAC,UAAkB;QAC7C,MAAM,gBAAgB,GAAG;YACvB,YAAY;YACZ,OAAO;YACP,SAAS;YACT,SAAS;YACT,UAAU;YACV,cAAc;YACd,cAAc;YACd,QAAQ;YACR,cAAc;YACd,QAAQ;YACR,SAAS;YACT,UAAU;YACV,QAAQ;SACT,CAAC;QAEF,OAAO,gBAAgB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC/C,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,wBAAwB;IACtC,OAAO,IAAI,uBAAuB,EAAE,CAAC;AACvC,CAAC"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Swift Parser Plugin
|
|
3
|
-
* 匯出所有 Swift Parser 相關功能
|
|
4
|
-
*/
|
|
5
|
-
export { SwiftParser, createSwiftParser } from './parser.js';
|
|
6
|
-
export type { SwiftAST, SwiftASTNode, SwiftSymbol, SwiftDiagnostic, SwiftCLIRequest, SwiftCLIResponse } from './types.js';
|
|
7
|
-
export { SwiftNodeKind, SwiftAccessLevel, SwiftParseError, createSwiftASTNode, createParseError, isDeclarationNode, isTypeDeclarationNode, swiftKindToSymbolType, getNodeName, isValidIdentifier, extractModifiers, extractAttributes } from './types.js';
|
|
8
|
-
export { SwiftSymbolExtractor, createSymbolExtractor } from './symbol-extractor.js';
|
|
9
|
-
export { SwiftDependencyAnalyzer, createDependencyAnalyzer } from './dependency-analyzer.js';
|
|
10
|
-
/**
|
|
11
|
-
* 註冊 Swift Parser 到 Parser Registry
|
|
12
|
-
*/
|
|
13
|
-
export declare function registerSwiftParser(): void;
|
|
14
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugins/swift/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAG7D,YAAY,EACV,QAAQ,EACR,YAAY,EACZ,WAAW,EACX,eAAe,EACf,eAAe,EACf,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAGpF,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAE7F;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAG1C"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Swift Parser Plugin
|
|
3
|
-
* 匯出所有 Swift Parser 相關功能
|
|
4
|
-
*/
|
|
5
|
-
// 主 Parser 類別
|
|
6
|
-
export { SwiftParser, createSwiftParser } from './parser.js';
|
|
7
|
-
export { SwiftNodeKind, SwiftAccessLevel, SwiftParseError, createSwiftASTNode, createParseError, isDeclarationNode, isTypeDeclarationNode, swiftKindToSymbolType, getNodeName, isValidIdentifier, extractModifiers, extractAttributes } from './types.js';
|
|
8
|
-
// 符號提取器
|
|
9
|
-
export { SwiftSymbolExtractor, createSymbolExtractor } from './symbol-extractor.js';
|
|
10
|
-
// 依賴分析器
|
|
11
|
-
export { SwiftDependencyAnalyzer, createDependencyAnalyzer } from './dependency-analyzer.js';
|
|
12
|
-
/**
|
|
13
|
-
* 註冊 Swift Parser 到 Parser Registry
|
|
14
|
-
*/
|
|
15
|
-
export function registerSwiftParser() {
|
|
16
|
-
// TODO: 實作註冊邏輯
|
|
17
|
-
// 當 Parser Registry 準備好時,這裡會註冊 SwiftParser
|
|
18
|
-
}
|
|
19
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/swift/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc;AACd,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAY7D,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAEpB,QAAQ;AACR,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAEpF,QAAQ;AACR,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAE7F;;GAEG;AACH,MAAM,UAAU,mBAAmB;IACjC,eAAe;IACf,2CAA2C;AAC7C,CAAC"}
|
|
@@ -1,164 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Swift Parser 主要實作
|
|
3
|
-
* 實作 ParserPlugin 介面
|
|
4
|
-
*/
|
|
5
|
-
import { ParserPlugin, CodeEdit, Definition, Usage, ValidationResult } from '../../infrastructure/parser/index.js';
|
|
6
|
-
import type { AST, Symbol, Reference, Dependency, Position, Range } from '../../shared/types/index.js';
|
|
7
|
-
import type { UnusedCode, ComplexityMetrics, CodeFragment, PatternMatch, TypeSafetyIssue, ErrorHandlingIssue, SecurityIssue, NamingIssue } from '../../infrastructure/parser/analysis-types.js';
|
|
8
|
-
/**
|
|
9
|
-
* Swift Parser 實作
|
|
10
|
-
*/
|
|
11
|
-
export declare class SwiftParser implements ParserPlugin {
|
|
12
|
-
readonly name = "swift";
|
|
13
|
-
readonly version = "1.0.0";
|
|
14
|
-
readonly supportedExtensions: readonly [".swift"];
|
|
15
|
-
readonly supportedLanguages: readonly ["swift"];
|
|
16
|
-
private symbolExtractor;
|
|
17
|
-
private dependencyAnalyzer;
|
|
18
|
-
private cliPath;
|
|
19
|
-
constructor(cliPath?: string);
|
|
20
|
-
/**
|
|
21
|
-
* 解析 Swift 程式碼
|
|
22
|
-
*/
|
|
23
|
-
parse(code: string, filePath: string): Promise<AST>;
|
|
24
|
-
/**
|
|
25
|
-
* 解析 Swift CLI Bridge 路徑
|
|
26
|
-
*/
|
|
27
|
-
private resolveCliPath;
|
|
28
|
-
/**
|
|
29
|
-
* 轉換 CLI Bridge 節點為 AST 節點
|
|
30
|
-
*/
|
|
31
|
-
private convertCLINodeToASTNode;
|
|
32
|
-
/**
|
|
33
|
-
* 節點類型轉換為 SwiftNodeKind
|
|
34
|
-
*/
|
|
35
|
-
private nodeTypeToSwiftKind;
|
|
36
|
-
/**
|
|
37
|
-
* 從節點提取屬性(@Published, @State 等)
|
|
38
|
-
*/
|
|
39
|
-
private extractAttributes;
|
|
40
|
-
/**
|
|
41
|
-
* 從節點提取修飾符(public, private 等)
|
|
42
|
-
*/
|
|
43
|
-
private extractModifiers;
|
|
44
|
-
/**
|
|
45
|
-
* 提取符號
|
|
46
|
-
*/
|
|
47
|
-
extractSymbols(ast: AST): Promise<Symbol[]>;
|
|
48
|
-
/**
|
|
49
|
-
* 查找符號引用
|
|
50
|
-
* 在當前 AST 中查找所有對指定符號的引用
|
|
51
|
-
*/
|
|
52
|
-
findReferences(ast: AST, symbol: Symbol): Promise<Reference[]>;
|
|
53
|
-
/**
|
|
54
|
-
* 提取依賴關係
|
|
55
|
-
*/
|
|
56
|
-
extractDependencies(ast: AST): Promise<Dependency[]>;
|
|
57
|
-
/**
|
|
58
|
-
* 重新命名符號
|
|
59
|
-
*/
|
|
60
|
-
rename(ast: AST, position: Position, newName: string): Promise<CodeEdit[]>;
|
|
61
|
-
/**
|
|
62
|
-
* 提取函式重構
|
|
63
|
-
*/
|
|
64
|
-
extractFunction(_ast: AST, _selection: Range): Promise<CodeEdit[]>;
|
|
65
|
-
/**
|
|
66
|
-
* 查找定義
|
|
67
|
-
*/
|
|
68
|
-
findDefinition(ast: AST, position: Position): Promise<Definition | null>;
|
|
69
|
-
/**
|
|
70
|
-
* 查找使用位置
|
|
71
|
-
*/
|
|
72
|
-
findUsages(ast: AST, symbol: Symbol): Promise<Usage[]>;
|
|
73
|
-
/**
|
|
74
|
-
* 驗證插件狀態
|
|
75
|
-
*/
|
|
76
|
-
validate(): Promise<ValidationResult>;
|
|
77
|
-
/**
|
|
78
|
-
* 清理資源
|
|
79
|
-
*/
|
|
80
|
-
dispose(): Promise<void>;
|
|
81
|
-
/**
|
|
82
|
-
* 檢測未使用的符號
|
|
83
|
-
*/
|
|
84
|
-
detectUnusedSymbols(ast: AST, allSymbols: Symbol[]): Promise<UnusedCode[]>;
|
|
85
|
-
/**
|
|
86
|
-
* 分析程式碼複雜度
|
|
87
|
-
*/
|
|
88
|
-
analyzeComplexity(code: string, _ast: AST): Promise<ComplexityMetrics>;
|
|
89
|
-
/**
|
|
90
|
-
* 提取程式碼片段(用於重複代碼檢測)
|
|
91
|
-
*/
|
|
92
|
-
extractCodeFragments(code: string, filePath: string): Promise<CodeFragment[]>;
|
|
93
|
-
/**
|
|
94
|
-
* 檢測樣板模式
|
|
95
|
-
*/
|
|
96
|
-
detectPatterns(_code: string, _ast: AST): Promise<PatternMatch[]>;
|
|
97
|
-
/**
|
|
98
|
-
* 檢查型別安全問題
|
|
99
|
-
*/
|
|
100
|
-
checkTypeSafety(code: string, ast: AST): Promise<TypeSafetyIssue[]>;
|
|
101
|
-
/**
|
|
102
|
-
* 檢查錯誤處理問題
|
|
103
|
-
*/
|
|
104
|
-
checkErrorHandling(code: string, ast: AST): Promise<ErrorHandlingIssue[]>;
|
|
105
|
-
/**
|
|
106
|
-
* 檢查安全性問題
|
|
107
|
-
*/
|
|
108
|
-
checkSecurity(code: string, ast: AST): Promise<SecurityIssue[]>;
|
|
109
|
-
/**
|
|
110
|
-
* 檢查命名規範問題
|
|
111
|
-
*/
|
|
112
|
-
checkNamingConventions(symbols: Symbol[], filePath: string): Promise<NamingIssue[]>;
|
|
113
|
-
/**
|
|
114
|
-
* 判斷檔案是否為測試檔案
|
|
115
|
-
*/
|
|
116
|
-
isTestFile(filePath: string): boolean;
|
|
117
|
-
/**
|
|
118
|
-
* 獲取 Swift 特定的排除模式
|
|
119
|
-
*/
|
|
120
|
-
getDefaultExcludePatterns(): string[];
|
|
121
|
-
/**
|
|
122
|
-
* 判斷是否應該忽略特定檔案
|
|
123
|
-
*/
|
|
124
|
-
shouldIgnoreFile(filePath: string): boolean;
|
|
125
|
-
/**
|
|
126
|
-
* 判斷符號是否為抽象宣告
|
|
127
|
-
*/
|
|
128
|
-
isAbstractDeclaration(symbol: Symbol): boolean;
|
|
129
|
-
private validateInput;
|
|
130
|
-
private validateRenameInput;
|
|
131
|
-
/**
|
|
132
|
-
* 模擬解析(實際需要呼叫 CLI Bridge)
|
|
133
|
-
*/
|
|
134
|
-
private mockParse;
|
|
135
|
-
/**
|
|
136
|
-
* 在節點中遞歸查找引用
|
|
137
|
-
*/
|
|
138
|
-
private findReferencesInNode;
|
|
139
|
-
/**
|
|
140
|
-
* 判斷引用類型
|
|
141
|
-
*/
|
|
142
|
-
private getReferenceType;
|
|
143
|
-
/**
|
|
144
|
-
* 逸出正則表達式特殊字符
|
|
145
|
-
*/
|
|
146
|
-
private escapeRegex;
|
|
147
|
-
/**
|
|
148
|
-
* 查找指定位置的符號
|
|
149
|
-
*/
|
|
150
|
-
private findSymbolAtPosition;
|
|
151
|
-
/**
|
|
152
|
-
* 計算圈複雜度
|
|
153
|
-
*/
|
|
154
|
-
private calculateCyclomaticComplexity;
|
|
155
|
-
/**
|
|
156
|
-
* SymbolType 轉換為 DefinitionKind
|
|
157
|
-
*/
|
|
158
|
-
private symbolTypeToDefinitionKind;
|
|
159
|
-
}
|
|
160
|
-
/**
|
|
161
|
-
* 建立 Swift Parser 實例
|
|
162
|
-
*/
|
|
163
|
-
export declare function createSwiftParser(cliPath?: string): SwiftParser;
|
|
164
|
-
//# sourceMappingURL=parser.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/plugins/swift/parser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,EACL,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,KAAK,EACL,gBAAgB,EAMjB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,KAAK,EACV,GAAG,EACH,MAAM,EACN,SAAS,EACT,UAAU,EACV,QAAQ,EACR,KAAK,EACN,MAAM,6BAA6B,CAAC;AAOrC,OAAO,KAAK,EACV,UAAU,EACV,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,kBAAkB,EAClB,aAAa,EACb,WAAW,EACZ,MAAM,+CAA+C,CAAC;AAmBvD;;GAEG;AACH,qBAAa,WAAY,YAAW,YAAY;IAC9C,SAAgB,IAAI,WAAW;IAC/B,SAAgB,OAAO,WAAW;IAClC,SAAgB,mBAAmB,sBAAuB;IAC1D,SAAgB,kBAAkB,qBAAsB;IAExD,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,kBAAkB,CAA0B;IACpD,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,SAAiB;IAQpC;;OAEG;IACG,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAgDzD;;OAEG;IACH,OAAO,CAAC,cAAc;IAyBtB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAmB/B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAiB3B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAQzB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAQxB;;OAEG;IACG,cAAc,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAKjD;;;OAGG;IACG,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAgBpE;;OAEG;IACG,mBAAmB,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAK1D;;OAEG;IACG,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IA2BhF;;OAEG;IACG,eAAe,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAIxE;;OAEG;IACG,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAY9E;;OAEG;IACG,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAQ5D;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAyB3C;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ9B;;OAEG;IACG,mBAAmB,CACvB,GAAG,EAAE,GAAG,EACR,UAAU,EAAE,MAAM,EAAE,GACnB,OAAO,CAAC,UAAU,EAAE,CAAC;IA6BxB;;OAEG;IACG,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAiB5E;;OAEG;IACG,oBAAoB,CACxB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,YAAY,EAAE,CAAC;IAmC1B;;OAEG;IACG,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAKvE;;OAEG;IACG,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IA+BzE;;OAEG;IACG,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IA+B/E;;OAEG;IACG,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAwBrE;;OAEG;IACG,sBAAsB,CAC1B,OAAO,EAAE,MAAM,EAAE,EACjB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,WAAW,EAAE,CAAC;IA+DzB;;OAEG;IACH,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAMrC;;OAEG;IACH,yBAAyB,IAAI,MAAM,EAAE;IAarC;;OAEG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAQ3C;;OAEG;IACH,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAe9C,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,mBAAmB;IAU3B;;OAEG;IACH,OAAO,CAAC,SAAS;IAIjB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAsE5B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAkBxB;;OAEG;IACH,OAAO,CAAC,WAAW;IAInB;;OAEG;YACW,oBAAoB;IAUlC;;OAEG;IACH,OAAO,CAAC,6BAA6B;IA+BrC;;OAEG;IACH,OAAO,CAAC,0BAA0B;CA0BnC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,WAAW,CAE/D"}
|