perf(tools): precompile regex to avoid redundant compilation per line (#3067)

* perf(tools): precompile regex to avoid redundant compilation per line

* fix: escape dot in Hessian import regex to satisfy CodeQL scan

* docs: translate Chinese comments to English for clarity
diff --git a/tools/dubbogo-cli/generator/sample/hessian/constant.go b/tools/dubbogo-cli/generator/sample/hessian/constant.go
index 2b7cb4d..8c0b7b0 100644
--- a/tools/dubbogo-cli/generator/sample/hessian/constant.go
+++ b/tools/dubbogo-cli/generator/sample/hessian/constant.go
@@ -26,13 +26,13 @@
 const (
 	PackageRegexp = `^package\s[a-zA-Z_][0-9a-zA-Z_]*$`
 
-	LineCommentRegexp         = `\/\/`
-	MutLineCommentStartRegexp = `\/\*`
-	MutLineCommentEndRegexp   = `\*\/`
+	LineCommentRegexp         = `//`
+	MutLineCommentStartRegexp = `/\*`
+	MutLineCommentEndRegexp   = `\*/`
 
 	InitFunctionRegexp = `^func\sinit\(\)\s\{$`
 
-	HessianImportRegexp = `"github.com/apache/dubbo-go-hessian2"`
+	HessianImportRegexp = `"github\.com/apache/dubbo\-go\-hessian2"`
 
 	HessianPOJORegexp     = `\*[0-9a-zA-Z_]+\)\sJavaClassName\(\)\sstring\s\{$`
 	HessianPOJONameRegexp = `\*[0-9a-zA-Z_]+\)`
diff --git a/tools/dubbogo-cli/generator/sample/hessian/generator.go b/tools/dubbogo-cli/generator/sample/hessian/generator.go
index 7b0a66c..90482f0 100644
--- a/tools/dubbogo-cli/generator/sample/hessian/generator.go
+++ b/tools/dubbogo-cli/generator/sample/hessian/generator.go
@@ -79,7 +79,7 @@
 	showLog(infoLog, "=== Generate completed [%s] ===", f)
 }
 
-// scanFile 扫描文件内容
+// scanFile scans the file content
 // nolint
 func scanFile(filePath string) (file *fileInfo, err error) {
 	var f *os.File
@@ -99,6 +99,13 @@
 	stack := make([][]byte, 0)
 	var line []byte
 	var lineSize int
+	var (
+		packageRegexp       = regexp.MustCompile(PackageRegexp)
+		initFunctionRegexp  = regexp.MustCompile(InitFunctionRegexp)
+		hessianImportRegexp = regexp.MustCompile(HessianImportRegexp)
+		lineCommentRegexp   = regexp.MustCompile(LineCommentRegexp)
+		hessianPOJORegexp   = regexp.MustCompile(HessianPOJORegexp)
+	)
 	for {
 		line, _, err = buf.ReadLine()
 		if err == io.EOF {
@@ -110,37 +117,36 @@
 		lineSize = len(line)
 
 		if file.hasInitFunc && lineSize > 0 && line[0] == funcEnd {
-			file.initFuncEndIndex = bufferSize + 1 // 检测初始化函数结束位
+			file.initFuncEndIndex = bufferSize + 1 // Detect the end position of the init function
 		}
 
 		buffer = append(buffer, line...)
 		buffer = append(buffer, newLine)
 
-		if passed, _ := regexp.Match(PackageRegexp, line); passed { // 检测package位置
-			file.packageStartIndex = bufferSize              // 检测初始化函数初始位
-			file.packageEndIndex = bufferSize + lineSize + 1 // 检测初始化函数初始位
+		if packageRegexp.Match(line) { // Detect package position
+			file.packageStartIndex = bufferSize              // Record start position of package
+			file.packageEndIndex = bufferSize + lineSize + 1 // Record end position of package
 			continue
 		}
 
-		if passed, _ := regexp.Match(InitFunctionRegexp, line); passed { // 检测初始化函数
+		if initFunctionRegexp.Match(line) { // Detect init function
 			file.hasInitFunc = true
-			file.initFuncStartIndex = bufferSize                     // 检测初始化函数初始位
-			file.initFuncStatementStartIndex = bufferSize + lineSize // 初始化函数方法体初始位
+			file.initFuncStartIndex = bufferSize                     // Record start position of init function
+			file.initFuncStatementStartIndex = bufferSize + lineSize // Record start position of init function body
 			continue
 		}
 
 		if !file.hasHessianImport {
-			r, _ := regexp.Compile(HessianImportRegexp)
-			rIndexList := r.FindIndex(line)
-			if len(rIndexList) > 0 { // 检测是否已导入hessian2包
+			rIndexList := hessianImportRegexp.FindIndex(line)
+			if len(rIndexList) > 0 { // Detect whether hessian2 package has been imported
 				checkStatement := line[:rIndexList[0]]
-				passed, _ := regexp.Match(LineCommentRegexp, checkStatement) // 是否被行注释
+				passed := lineCommentRegexp.Match(checkStatement) // Check if it's commented out
 				file.hasHessianImport = !passed
 				continue
 			}
 		}
 
-		if passed, _ := regexp.Match(HessianPOJORegexp, line); !passed { // 校验是否为Hessian.POJO实现类
+		if !hessianPOJORegexp.Match(line) { // Check whether it's a Hessian.POJO implementation class
 			continue
 		}
 		structName := getStructName(line)
@@ -153,7 +159,7 @@
 	return
 }
 
-// getStructName 获取Hessian.POJO实现类的类名
+// getStructName gets the class name of the Hessian.POJO implementation
 func getStructName(line []byte) []byte {
 	r, _ := regexp.Compile(HessianPOJONameRegexp)
 	line = r.Find(line)
@@ -163,7 +169,7 @@
 	return nil
 }
 
-// genRegistryPOJOStatement 生成POJO注册方法体
+// genRegistryPOJOStatement generates the POJO registration statement
 func genRegistryPOJOStatement(pojo []byte) []byte {
 	var buffer []byte
 	buffer = append(buffer, hessianRegistryPOJOFunctionPrefix...)
@@ -200,7 +206,7 @@
 	return str
 }
 
-// genRegistryPOJOStatements 生成POJO注册方法体
+// genRegistryPOJOStatements generates POJO registration statements
 // nolint
 func genRegistryPOJOStatements(file *fileInfo, initFunctionStatement *[]byte) []byte {
 	f := file.path
@@ -210,7 +216,7 @@
 	var rIndexList []int
 	for _, name := range hessianPOJOList {
 		statement := genRegistryPOJOStatement(name)
-		if initFunctionStatement != nil { // 检测是否已存在注册方法体
+		if initFunctionStatement != nil { // Check whether a registration statement already exists
 			r, _ = regexp.Compile(escape(string(statement)))
 			initStatement := *initFunctionStatement
 			rIndexList = r.FindIndex(initStatement)
@@ -218,9 +224,9 @@
 				i := rIndexList[0]
 				n := lastIndexOf(initStatement, newLine, &i)
 				checkStatement := initStatement[lastIndexOf(initStatement, newLine, &n)+1 : i]
-				if passed, _ := regexp.Match(LineCommentRegexp, checkStatement); !passed { // 是否被行注释
+				if passed, _ := regexp.Match(LineCommentRegexp, checkStatement); !passed { // Check if commented out
 					showLog(infoLog, "=== Ignore POJO [%s].%s ===", f, name)
-					continue // 忽略相同的注册操作
+					continue // Ignore duplicate registration operations
 				}
 			}
 		}
@@ -242,7 +248,7 @@
 
 	offset := 0
 
-	if !file.hasHessianImport { // 追加hessian2导包
+	if !file.hasHessianImport { // Add hessian2 import statement
 		sliceIndex := file.packageEndIndex + offset
 		var bufferClone []byte
 		bufferClone = append(bufferClone, buffer[:sliceIndex]...)
@@ -260,17 +266,17 @@
 		registryPOJOStatement = genRegistryPOJOStatements(file, &initFunctionStatement)
 		var bufferClone []byte
 		bufferClone = append(bufferClone, buffer[:sliceIndex]...)
-		bufferClone = append(bufferClone, registryPOJOStatement...) // 追加POJO注册方法体至init函数
+		bufferClone = append(bufferClone, registryPOJOStatement...) // Append POJO registration statements into the init function
 		bufferClone = append(bufferClone, buffer[sliceIndex:]...)
 		buffer = bufferClone
-	} else { // 追加初始化函数
+	} else { // Add init function
 		registryPOJOStatement = genRegistryPOJOStatements(file, nil)
-		buffer = append(buffer, initFunctionPrefix...)    // 添加init函数
-		buffer = append(buffer, registryPOJOStatement...) // 追加POJO注册方法体至init函数
+		buffer = append(buffer, initFunctionPrefix...)    // Add init function
+		buffer = append(buffer, registryPOJOStatement...) // Append POJO registration statements into init function
 		buffer = append(buffer, initFunctionSuffix...)
 	}
 
-	f, err := os.OpenFile(file.path, os.O_CREATE|os.O_WRONLY, 0666)
+	f, err := os.OpenFile(file.path, os.O_CREATE|os.O_WRONLY|os.O_TRUNC, 0666)
 	if err != nil {
 		return err
 	}