
# 统一匹配 return 语句中的字符串表达式 - Product Requirement Document

## Overview
- **Summary**: 修复 CSharpStringExtractor 工具中 return 语句字符串表达式的提取逻辑，确保正确识别和处理包含特殊字符的字符串边界
- **Purpose**: 解决现有工具在提取 return 语句中包含特殊字符的字符串时出现的错误，确保工具能够统一、正确地匹配和处理 return 语句中的字符串表达式
- **Target Users**: 使用 CSharpStringExtractor 工具来扫描和提取 C# 代码中字符串字面量的开发者

## Goals
- 修复 `should handle special characters in string expression of return sentence` 测试用例的失败问题
- 确保工具能够正确识别 return 语句中的字符串边界
- 确保工具能够正确处理包含特殊字符的字符串，包括但不限于：`{}`、`[]`、`;`、`"`、`'`、`\`、`&lt;`、`&gt;` 等
- 保持所有现有测试用例的通过状态

## Non-Goals (Out of Scope)
- 修改被注释掉的测试用例
- 改变工具的整体架构或 API 接口
- 添加超出字符串边界识别之外的新功能

## Background &amp; Context
- 当前 CSharpStringExtractor 工具已经支持大部分 C# 语句类型的字符串提取
- 测试用例 `should handle special characters in string expression of return sentence` 目前失败，问题在于 return 语句中的特殊字符字符串无法被正确处理
- 工具需要能够正确处理插值字符串（$""、$@""、@$""）、普通字符串和包含各种特殊字符的字符串

## Functional Requirements
- **FR-1**: 工具必须能够正确提取 return 语句中的字符串表达式
- **FR-2**: 工具必须能够正确识别包含特殊字符的字符串边界
- **FR-3**: 工具必须确保字符串内部的特殊字符不被错误地识别为语句边界
- **FR-4**: 工具必须能够处理普通字符串、插值字符串（$""、$@""、@$""）和包含转义字符的字符串

## Non-Functional Requirements
- **NFR-1**: 所有 75+ 个现有测试用例必须继续通过
- **NFR-2**: 修复不能降低工具的性能，扫描速度保持在可接受范围
- **NFR-3**: 代码必须遵循 TypeScript 语言规范，不使用保留关键字作为变量名

## Constraints
- **Technical**: 必须使用 TypeScript 编写，保持现有代码风格和架构
- **Business**: 必须在保持所有现有功能正常工作的前提下修复该问题
- **Dependencies**: 不添加任何新的依赖库

## Assumptions
- 当前被注释掉的测试用例不需要考虑
- 工具的其他功能保持不变
- 用户期望修复的是 return 语句中的特殊字符字符串处理问题

## Acceptance Criteria

### AC-1: Return 语句特殊字符字符串测试通过
- **Given**: 包含特殊字符的 return 语句测试用例
- **When**: 运行 `should handle special characters in string expression of return sentence` 测试
- **Then**: 该测试用例应该成功通过，不出现任何错误
- **Verification**: `programmatic`
- **Notes**: 确保 return 语句中的特殊字符字符串被正确提取

### AC-2: 所有现有测试继续通过
- **Given**: 完整的测试套件
- **When**: 运行所有测试用例
- **Then**: 所有 75+ 个现有测试用例应该继续通过
- **Verification**: `programmatic`
- **Notes**: 保持向后兼容性

### AC-3: 代码符合 TypeScript 规范
- **Given**: 源代码文件
- **When**: 检查 TypeScript 语法和编码规范
- **Then**: 代码必须严格符合 TypeScript 语言语法，不使用保留关键字作为变量名
- **Verification**: `programmatic`

## Open Questions
- 无

