gorename:什么是“请勿编辑”标记?

时间:2019-06-10 13:15:15

标签: go

我正在使用vscode并尝试重命名变量名。

失败说:

Rename failed: gorename: cannot rename identifiers in generated file containing DO NOT EDIT marker: /home/adam/go/src/hello/hello.go 

那么什么是“请勿编辑”标记?为什么在那儿?如何删除它,以便gorename可以完成它的工作?

这是我的文件开始的方式:

package main

// #cgo CFLAGS: -g -Wall
// #include <stdlib.h>
// #include "c/greet.h"
import "C"
import (
    "encoding/json"
    "log"
    "net/http"

    "github.com/gorilla/mux"
)

1 个答案:

答案 0 :(得分:1)

根据the source code for gorename,检查很简单:它在包含短语“请勿编辑”的行的开头查找注释:

    <ion-input placeholder="{{mediaDetails.title}}" value="{{mediaDetails.title}}" [(ngModel)]="mediaData.title" [ngClass]="mediaData.title ? '' : 'required'"></ion-input>

读取elsewhere in the source code时,错误消息本身就产生了,看起来错误消息可能只是令人误解:

// Matches cgo generated comment as well as the proposed standard:
//  https://golang.org/s/generatedcode
var generatedRx = regexp.MustCompile(`// .*DO NOT EDIT\.?`)

// generated reports whether ast.File is a generated file.
func generated(f *ast.File, tokenFile *token.File) bool {

    // Iterate over the comments in the file
    for _, commentGroup := range f.Comments {
        for _, comment := range commentGroup.List {
            if matched := generatedRx.MatchString(comment.Text); matched {
                // Check if comment is at the beginning of the line in source
                if pos := tokenFile.Position(comment.Slash); pos.Column == 1 {
                    return true
                }
            }
        }
    }
    return false
}

我看到您正在使用CGO。看来这也会触发“生成的文件”标记。