package main import ( "bufio" "encoding/json" "fmt" "io" "io/ioutil" "net/http" "os" "strings" "time" ) type M struct { Code int `json:"code"` } type R struct { Url string `json:"url"` Msg string `json:"msg"` Id int `json:"id"` } func main() { dir, _ := os.Stat("./application") fmt.Println("开始查找bug") var w []R if dir.IsDir() == true { r, _ := ioutil.ReadDir("./application") for _, k := range r { if k.IsDir() == true { q, err := ioutil.ReadDir("./application/" + k.Name()) if err != nil { panic(err) } for _, b := range q { if b.IsDir() == true && b.Name() == "controller" { g, _ := ioutil.ReadDir("./application/" + k.Name() + "/" + b.Name()) for _, m := range g { file, err := os.Open("./application/" + k.Name() + "/" + b.Name() + "/" + m.Name()) if err != nil { panic(err) } rd := bufio.NewReader(file) i := 1 for { line, err := rd.ReadString('\n') //以'\n'为结束符读入一行 if strings.Contains(line, "@debug") == true { str := strings.Split(line, "-") if str != nil { str := strings.Replace(str[1], "\n", "", 1) str="https://bq.t.3pr.com.cn/"+k.Name()+"/"+strings.Replace(m.Name(), ".php", "", 1)+"/"+str str = strings.Replace(str, " ", "", 1) str = strings.TrimSpace(str) result, msg := Get(str) fmt.Println(result) fmt.Println(msg) if result.Code != 0 { //判断文件是否存在 var r R r.Msg = msg r.Url = str r.Id = i i++ //fmt.Println(r) //fmt.Println(result) w = append(w, r) } } } if err != nil || io.EOF == err { break } } } } } } } } os.Mkdir("bug", os.ModePerm) json, _ := json.MarshalIndent(w,"","") t := time.Now() f, err := os.Create("./bug/" + t.Format("20060102150405") + ".json") if err != nil { panic(err) } _, err = f.Write(json) if err != nil { panic(err) } if w!=nil{ fmt.Println("确认过眼神,有bug") } } func Get(str string) (M, string) { resp, err := http.Get(str) if err != nil { panic(err) } defer resp.Body.Close() s, err := ioutil.ReadAll(resp.Body) var a M json.Unmarshal(s, &a) return a, string(s) }
golang 循环读取目录php文件得到bug
最新推荐文章于 2023-04-24 11:15:13 发布