Feature request: Expose original source text for TSqlFragment (Debugger & API usability)
还没有人认领这个 Issue。
评估
调研方向
从 TSqlFragment API 及其现有成员 FirstTokenIndex、LastTokenIndex、ScriptTokenStream、StartOffset 和 FragmentLength 开始。检查片段如何表示其源范围,并确定所公开文本的预期行为,包括调试和消费者使用时的便利性。完成标准是:片段能够提供其原始源文本,而无需每个消费者手动重新构建,并在 repository 支持测试的地方提供相应的覆盖。
由索引模型根据 Issue 内容生成。
描述
Problem
Working with Microsoft.SqlServer.TransactSql.ScriptDom is unnecessarily hard in practice,
especially during debugging.
TSqlFragment objects do not expose the original source text they represent.
Instead, consumers must manually reconstruct the SQL text via:
FirstTokenIndex / LastTokenIndexScriptTokenStream- or
StartOffset / FragmentLength
This makes debugging extremely cumbersome:
in Visual Studio, inspecting a fragment does not show the SQL code,
only a large object graph with token indices.
This significantly affects developer productivity and discoverability of the AST.
Current workaround (non-trivial)
Every consumer needs to implement helper code such as:
extension(TSqlFragment node)
{
public string SourcePart => string.Join("",
node
.ScriptTokenStream
.Skip(node.FirstTokenIndex)
.Take(node.LastTokenIndex - node.FirstTokenIndex + 1)
.Select(i => i.Text)
);
}
- 主要语言
- GAP
- 星标
- 277
- 派生
- 43
- 平均合并
- 6 天 17 小时
- 30 天内合并 PR
- 3
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
microsoft/SqlScriptDOM 的其他 Issue
-
难度 2/5 1-3 小时 新手友好度 84/100
microsoft/SqlScriptDOM#228 ·
-
难度 2/5 1-3 小时 新手友好度 62/100
microsoft/SqlScriptDOM#183 ·
-
难度 4/5 3-5 天 新手友好度 56/100
microsoft/SqlScriptDOM#226 · 1 个 reaction ·
-
难度 4/5 3-5 天 新手友好度 48/100
microsoft/SqlScriptDOM#225 ·
-
难度 3/5 1-2 天 新手友好度 58/100
microsoft/SqlScriptDOM#224 ·
查看 microsoft/SqlScriptDOM 的全部 Issue
相似的 Issue
-
难度 2/5 1-3 小时 新手友好度 75/100
speaches-ai/speaches#678 ·
-
难度 2/5 1-3 小时 新手友好度 65/100
-
[BUG] ECR GetAuthorizationToken returns a proxyEndpoint for the default region, not the request's 未关闭bug ecr
难度 2/5 1-3 小时 新手友好度 75/100
-
难度 2/5 1-3 小时 新手友好度 75/100
conda-forge/spacy-feedstock#177 ·
-
难度 2/5 1-3 小时 新手友好度 70/100