ื›ืœื™ ื ื™ืชื•ื— ืกื˜ื˜ื™ ืฉืœ Go Code 20

ื›ืชื•ื‘ ืงื•ื“ ื˜ื•ื‘ ื™ื•ืชืจ: 20 ื›ืœื™ ื ื™ืชื•ื— ืกื˜ื˜ื™ ืฉืชื•ืคืกื™ื ื‘ืื’ื™ื ืœืคื ื™ ืฉืืชื” ืขื•ืฉื” ื–ืืช

ื’ื•ืœืื ื’, ืื• ื‘ืงื™ืฆื•ืจ ื’ื•, ืชื•ื›ื ื ื” ืชื•ืš ื”ืชืžืงื“ื•ืช ื‘ื‘ื”ื™ืจื•ืช, ืคืฉื˜ื•ืช ื•ื‘ื™ืฆื•ืขื™ื. ืžื•ื“ืœ ื”ืžืงื‘ื™ืœื™ื•ืช ืฉืœื”, ื”ืชื—ื‘ื™ืจ ื”ืžื™ื ื™ืžืœื™ ื•ื”ื”ืงืœื“ื” ื”ื—ื–ืงื” ืฉืœื” ื”ื•ืคื›ื™ื ืื•ืชื” ืœื‘ื—ื™ืจื” ืขื•ืฆืžืชื™ืช ืœื‘ื ื™ื™ืช ืชื•ื›ื ื” ืžื”ื™ืจื” ื•ืืžื™ื ื”. ืขื ื–ืืช, ื ืงื•ื“ื•ืช ื”ื—ื•ื–ืง ืฉืœ ื”ืฉืคื” ืœื‘ื“ืŸ ืื™ื ืŸ ื™ื›ื•ืœื•ืช ืœื”ื‘ื˜ื™ื— ืืช ื”ืื™ื›ื•ืช ืืจื•ื›ืช ื”ื˜ื•ื•ื— ืฉืœ ื‘ืกื™ืกื™ ืงื•ื“ ื’ื“ื•ืœื™ื ื•ืžื•ืจื›ื‘ื™ื. ื›ืืŸ ื›ืœื™ ื ื™ืชื•ื— ืกื˜ื˜ื™ ื”ื•ืคื›ื™ื ืœื—ื™ื•ื ื™ื™ื. ื”ื ืžืืคืฉืจื™ื ืœืžืคืชื—ื™ื ืœื–ื”ื•ืช ื‘ืขื™ื•ืช ืžื•ืงื“ื, ืœืฉืคืจ ืืช ื™ื›ื•ืœืช ื”ืชื—ื–ื•ืงื” ื•ืœื”ื‘ื˜ื™ื— ืชืงื™ื ื•ืช ืงื•ื“ ืขืงื‘ื™ืช ื‘ื™ืŸ ืฆื•ื•ืชื™ื ื•ืคืจื•ื™ืงื˜ื™ื.

ื ื™ืชื•ื— ืกื˜ื˜ื™ ื‘ื•ื“ืง ืงื•ื“ ืžื‘ืœื™ ืœื‘ืฆืข ืื•ืชื•. ื›ืœื™ื ืืœื” ื—ื•ืฉืคื™ื ืžื’ื•ื•ืŸ ืจื—ื‘ ืฉืœ ื‘ืขื™ื•ืช, ื›ื•ืœืœ ืฉื’ื™ืื•ืช ืœื•ื’ื™ื•ืช, ืฆื•ื•ืืจื™ ื‘ืงื‘ื•ืง ื‘ื‘ื™ืฆื•ืขื™ื, ื›ืคื™ืœื•ืช ืงื•ื“, ื”ืคืจื•ืช ืกื’ื ื•ืŸ ื•ืคื’ื™ืขื•ื™ื•ืช ืื‘ื˜ื—ื” ืคื•ื˜ื ืฆื™ืืœื™ื•ืช. ืขื‘ื•ืจ ืžืคืชื—ื™ื ื”ืขื•ื‘ื“ื™ื ืขืœ ืžืขืจื›ื•ืช ืžื‘ื•ื–ืจื•ืช, ืฉื™ืจื•ืชื™ backend ืื• ืกืคืจื™ื•ืช ืชืฉืชื™ืช ืฉื ื›ืชื‘ื• ื‘-Go, ืืคื™ืœื• ื˜ืขื•ื™ื•ืช ืงืœื•ืช ื™ื›ื•ืœื•ืช ืœื”ืกืœื™ื ืœื‘ืขื™ื•ืช ืชืคืขื•ืœื™ื•ืช ืžืฉืžืขื•ืชื™ื•ืช. ื’ื™ืœื•ื™ ืžื•ืงื“ื ืฉืœื”ืŸ ืื™ื ื• ืจืง ืžื•ืขื™ืœ; ื”ื•ื ื—ื™ื•ื ื™.

Go ืžืชืื™ื ื‘ืžื™ื•ื—ื“ ืœื ื™ืชื•ื— ืกื˜ื˜ื™. ื”ืžื”ื“ืจ ืฉืœื• ืงืคื“ื ื™, ื”ืชื—ื‘ื™ืจ ืฉืœื• ืฆืคื•ื™, ื•ื”ืžืขืจื›ืช ื”ืืงื•ืœื•ื’ื™ืช ืฉืœื• ืžื•ืฉืงืขืช ืขืžื•ืงื•ืช ื‘ืื•ื˜ื•ืžืฆื™ื”. ื›ืœื™ื ื›ืžื• go vet, go fmt, ื• golint ื”ื™ื• ื–ื” ืžื›ื‘ืจ ื—ืœืง ืžืฉืจืฉืจืช ื”ื›ืœื™ื ื”ืกื˜ื ื“ืจื˜ื™ืช ืฉืœ Go. ืืš ืžืขื‘ืจ ืœืืœื”, ืงื™ื™ืžืช ืžืขืจื›ืช ืืงื•ืœื•ื’ื™ืช ืจื—ื‘ื” ื™ื•ืชืจ ืฉืœ ืžื ืชื—ื™ื ืžืชืงื“ืžื™ื, ื›ืœื™ ืขื–ืจ ืœื™ืฆื™ืจืช ืงื•ื“ (linters), ืกื•ืจืงื™ ืื‘ื˜ื—ื” ื•ืคืœื˜ืคื•ืจืžื•ืช ืื™ื›ื•ืช ืงื•ื“. ื—ืœืงื ืžืชืžืงื“ื™ื ื‘ืื›ื™ืคืช ืžื•ืกื›ืžื•ืช ืื™ื“ื™ื•ืžื˜ื™ื•ืช ืฉืœ Go, ืื—ืจื™ื ืžืชืžื—ื™ื ื‘ื’ื™ืœื•ื™ ื‘ืื’ื™ื ืขื“ื™ื ื™ื ื‘ืงื•ื“ ืžืงื‘ื™ืœ, ื•ื›ืžื” ืžื”ื ืฆืฆื• ื›ื“ื™ ืœืชืžื•ืš ื‘ื‘ื™ืงื•ืจืช ืื‘ื˜ื—ื” ื‘ืžืขืจื›ื•ืช ื‘ืจืžืช ื™ื™ืฆื•ืจ.

ืขื‘ื•ืจ ืžืคืชื—ื™ื ื”ืžื ื”ืœื™ื ื‘ืกื™ืกื™ ืงื•ื“ ื”ื•ืœื›ื™ื ื•ื’ื“ืœื™ื, ืื™ืžื•ืฅ ื›ืœื™ ื ื™ืชื•ื— ืกื˜ื˜ื™ ื ื›ื•ื ื™ื ื™ื›ื•ืœ ืœื”ืื™ืฅ ืืช ืชื”ืœื™ืš ื”ื”ื˜ืžืขื”, ืœื”ืคื—ื™ืช ืืช ืชืงื•ืจืช ื”ื‘ื“ื™ืงื” ื•ืœืžื ื•ืข ืจื’ืจืกื™ื•ืช. ื‘ืฆื•ื•ืชื™ื ืงื˜ื ื™ื, ื›ืœื™ื ืืœื” ืžืกืคืงื™ื ืจืฉืช ื‘ื™ื˜ื—ื•ืŸ. ื‘ืกื‘ื™ื‘ื•ืช ืืจื’ื•ื ื™ื•ืช, ื”ื ืชื•ืžื›ื™ื ื‘ืขืงื‘ื™ื•ืช ื•ื‘ืชืื™ืžื•ืช ื‘ืงื ื” ืžื™ื“ื” ื’ื“ื•ืœ.

ื‘ืžื“ืจื™ืš ื–ื”, ื ื—ืงื•ืจ 20 ืžื›ืœื™ ื”ื ื™ืชื•ื— ื”ืกื˜ื˜ื™ ื”ื™ืขื™ืœื™ื ื•ื”ื ืคื•ืฆื™ื ื‘ื™ื•ืชืจ ืขื‘ื•ืจ Go. ื›ืœ ื›ืœื™ ืžื•ืขืจืš ืขืœ ืกืžืš ืชื—ื•ื ื”ืžื™ืงื•ื“ ืฉืœื•, ื ืงื•ื“ื•ืช ื”ื—ื•ื–ืง ืฉืœื•, ื™ื›ื•ืœื•ืช ื”ืื™ื ื˜ื’ืจืฆื™ื” ืฉืœื• ื•ื”ืจืœื•ื•ื ื˜ื™ื•ืช ืฉืœื• ื‘ืฆื™ื ื•ืจื•ืช ืคื™ืชื•ื— ื‘ืขื•ืœื ื”ืืžื™ืชื™. ื‘ื™ืŸ ืื ืืชื ืžืชื—ื™ืœื™ื ืคืจื•ื™ืงื˜ ื—ื“ืฉ ืื• ืžืฉืคืจื™ื ืคืจื•ื™ืงื˜ ืงื™ื™ื, ื›ืœื™ื ืืœื” ื™ืขื–ืจื• ืœื›ื ืœื›ืชื•ื‘ ืงื•ื“ Go ื ืงื™, ื‘ื˜ื•ื— ื•ื ื™ืชืŸ ืœืชื—ื–ื•ืงื” ื™ื•ืชืจ ื‘ื‘ื™ื˜ื—ื•ืŸ ืจื‘ ื™ื•ืชืจ.

ืชื•ื›ืŸ ื”ืขื ื™ื™ื ื™ื

SMART TS XL

SMART TS XL ื”ื™ื ืคืœื˜ืคื•ืจืžืช ื ื™ืชื•ื— ืกื˜ื˜ื™ ืขื•ืฆืžืชื™ืช ืฉื ื•ืขื“ื” ืœื”ืชืžื•ื“ื“ ืขื ื”ืžื•ืจื›ื‘ื•ืช ืฉืœ ื‘ืกื™ืกื™ ืงื•ื“ ื’ื“ื•ืœื™ื ืฉืœ Go ืขื ืจืžืช ืขื•ืžืง ืฉื—ื•ืจื’ืช ืžืขื‘ืจ ืœ-linters ืžืกื•ืจืชื™ื™ื. ื”ืคืœื˜ืคื•ืจืžื”, ืฉื ื‘ื ืชื” ื‘ืžืงื•ืจ ืขื‘ื•ืจ ื ื™ืชื•ื— ืงื•ื“ ืžื“ื•ืจ ืงื•ื“ื, ืžืฆื™ืขื” ื›ืขืช ื™ื›ื•ืœื•ืช ื—ื–ืงื•ืช ืขื‘ื•ืจ ื™ื™ืฉื•ืžื™ Golang ืžื•ื“ืจื ื™ื™ื ื‘ืžื™ืงืจื•-ืฉื™ืจื•ืชื™ื, ืžื•ื ื•ืœื™ื˜ื™ื ื•ืžืขืจื›ื•ืช ื‘ืจืžื” ืืจื’ื•ื ื™ืช.

ื‘ื ื™ื’ื•ื“ ืœื›ืœื™ื ืฉืžืชืžืงื“ื™ื ืืš ื•ืจืง ื‘ืกื’ื ื•ืŸ ืื• ื‘ืขื™ืฆื•ื‘, SMART TS XL ื‘ื•ื ื” ืžื•ื“ืœ ืกืžื ื˜ื™ ืขืžื•ืง ืฉืœ ื‘ืกื™ืก ื”ืงื•ื“ ืฉืœืš. ื”ื•ื ืžื ืชื— ืœื•ื’ื™ืงืช ื‘ื™ืฆื•ืข, ื”ืชื ื”ื’ื•ืช ืžืงื‘ื™ืœื™ื•ืช ื•ื–ืจื™ืžืช ื ืชื•ื ื™ื ื‘ื™ืŸ-ืฉื™ืจื•ืชื™ื™ื ื›ื“ื™ ืœื—ืฉื•ืฃ ืกื™ื›ื•ื ื™ื ืฉืงืฉื” ืœื–ื”ื•ืช ื‘ืืžืฆืขื•ืช ื‘ื“ื™ืงื•ืช ืชื—ื‘ื™ืจ ื‘ืกื™ืกื™ื•ืช.

ื™ื›ื•ืœื•ืช ืžืคืชื— ืฉืœ SMART TS XL ืขื‘ื•ืจ Go ื›ื•ืœืœ:

  • ื ื™ืชื•ื— ื–ืจื™ืžืช ื‘ืงืจื”
    ื•ื™ื–ื•ืืœื™ื–ืฆื™ื” ืฉืœ ื ืชื™ื‘ื™ ื‘ื™ืฆื•ืข ืขืœ ืคื ื™ ืฉื’ืจื•ืช ื’ื•ืจื•ื˜ื™ืŸ, ืขืจื•ืฆื™ื, select ื‘ืœื•ืงื™ื ื•ืคื•ื ืงืฆื™ื•ืช. ืžื–ื”ื”:
    • ืงื•ื“ ื‘ืœืชื™ ื ื’ื™ืฉ
    • ื—ืกืžื™ื
    • ืœื•ืœืื•ืช ืื™ื ืกื•ืคื™ื•ืช
    • ื˜ื™ืคื•ืœ ื‘ืคืื ื™ืงื” ืฉื”ื•ื—ืžืฆ
  • ืžืขืงื‘ ืื—ืจ ื–ืจื™ืžืช ื ืชื•ื ื™ื ื‘ื™ืŸ-ืคืจื•ืฆื“ื•ืจื™ื™ื
    ืขื•ืงื‘ ืื—ืจ ืžืฆื‘ ืžืฉืชื ื™ื, ืฉื™ืžื•ืฉ ื‘ืžืžืฉืง ื•ืชื ื•ืขืช ื ืชื•ื ื™ื ื‘ื™ืŸ ื—ื‘ื™ืœื•ืช. ืžืกื™ื™ืข ื‘ื–ื™ื”ื•ื™:
    • ืงืœื˜ ืžื™ื•ืฉืŸ ืื• ืœื ืžืื•ืžืช
    • ืžื˜ืœื•ืช ืฉืœื ื ืขืฉื” ื‘ื”ืŸ ืฉื™ืžื•ืฉ
    • ื”ืชื ื’ืฉื•ื™ื•ืช ื ืชื•ื ื™ื ื”ืงืฉื•ืจื•ืช ืœืžืงื‘ื™ืœื™ื•ืช
  • ืžื™ืคื•ื™ ืชืœื•ืช ื•ื‘ื™ืงื•ืจื•ืช ืืจื›ื™ื˜ืงื˜ื•ืจื”
    ืžืกืคืง ืชื•ื‘ื ื•ืช ื’ืจืคื™ื•ืช ืœื’ื‘ื™ ื”ืื•ืคืŸ ืฉื‘ื• ื—ื‘ื™ืœื•ืช, ืžื•ื“ื•ืœื™ื ื•ืฉื™ืจื•ืชื™ื ืžืงื™ื™ืžื™ื ืื™ื ื˜ืจืืงืฆื™ื”. ืฉื™ืžื•ืฉื™ ืขื‘ื•ืจ:
    • ืื™ืชื•ืจ ืฆื™ืžื•ื“ ื”ื“ื•ืง
    • ืื›ื™ืคืช ื›ืœืœื™ ืฉื›ื‘ื•ืช ื ืงื™ื™ื
    • ื”ื›ื ืช ืžืคื•ืช ื“ืจื›ื™ื ืœืฉื™ืคื•ืฅ
  • ืกืจื™ืงืช ืื‘ื˜ื—ื” ืกื˜ื˜ื™ืช
    ืžืกืžืŸ ื‘ืขื™ื•ืช ื›ื’ื•ืŸ:
    • ืฉื™ืžื•ืฉ ืœื ื‘ื˜ื•ื— ื‘ืกืคืจื™ื™ื” ืกื˜ื ื“ืจื˜ื™ืช
    • ืื™ืฉื•ืจื™ื ืžืงื•ื“ื“ื™ื
    • ืคื’ื™ืขื•ื™ื•ืช ืžื‘ื•ืกืกื•ืช ื”ืฉืชืงืคื•ืช
    • ื—ืฉื™ืคื” ืฉืœ ืฉื“ื•ืช ืจื’ื™ืฉื™ื
  • ื•ื™ื–ื•ืืœื™ื–ืฆื™ื” ื‘ืงื ื” ืžื™ื“ื” ืืจื’ื•ื ื™
    ื™ื•ืฆืจ ื“ื™ืื’ืจืžื•ืช ืžืคื•ืจื˜ื•ืช, ืžืคื•ืช ื–ืจื™ืžื” ื•ื“ื•ื—ื•ืช ื”ืฉืคืขื” ืœืชืžื™ื›ื” ื‘ื”ื‘ื ื” ื•ื‘ืชื›ื ื•ืŸ ื›ืœืœ-ืฆื•ื•ืชื™.

SMART TS XL ืžืชืื™ื ื‘ืžื™ื•ื—ื“ ืœืฆื•ื•ืชื™ื ืฉืขื•ื‘ื“ื™ื ืขืœ ื‘ืกื™ืกื™ ืงื•ื“ ื’ื“ื•ืœื™ื ืฉืœ Go ื‘ืขืœื™ ืžื•ืจื›ื‘ื•ืช ื’ื‘ื•ื”ื” ื•ื“ืจื™ืฉื•ืช ื–ืžืŸ ืคืขื•ืœื” ืžื—ืžื™ืจื•ืช. ื”ื•ื ืชื•ืžืš ื‘ืื™ื ื˜ื’ืจืฆื™ื” ื‘ื–ืจื™ืžื•ืช ืขื‘ื•ื“ื” ืฉืœ CI/CD ื•ืžืกื™ื™ืข ื‘ืฉืžื™ืจื” ืขืœ ืื™ื›ื•ืช ื‘ืžืขืจื›ื•ืช ืžืชืคืชื—ื•ืช, ื•ืžืกืคืง ื‘ื™ื˜ื—ื•ืŸ ื‘ืžืืžืฆื™ ืฉื™ืคื•ืฅ ื•ืžื•ื“ืจื ื™ื–ืฆื™ื”.

ื’ื•ืœืื ื’ืกื™ ืื™ื™ ืœื™ื ื˜

ื’ื•ืœืื ื’ืกื™ ืื™ื™ ืœื™ื ื˜ ื”ื•ื ืื—ื“ ืžื›ืœื™ ื”ืžื˜ื-ืœื™ื ื˜ืจ ื”ืคื•ืคื•ืœืจื™ื™ื ื•ื”ื ืคื•ืฆื™ื ื‘ื™ื•ืชืจ ื‘ืžืขืจื›ืช ื”ืืงื•ืœื•ื’ื™ืช ืฉืœ Go. ื”ื•ื ืžืฉืžืฉ ื›ืžืžืฉืง ืžืื•ื—ื“ ืœื”ืคืขืœืช ืžืกืคืจ ืœื™ื ื˜ืจื™ื ื‘ื• ื–ืžื ื™ืช, ื•ืžืืคืฉืจ ืœืžืคืชื—ื™ื ืœื‘ืฆืข ืžื’ื•ื•ืŸ ืจื—ื‘ ืฉืœ ื‘ื“ื™ืงื•ืช ืกื˜ื˜ื™ื•ืช ื‘ืžื”ื™ืจื•ืช ื•ื‘ืขืงื‘ื™ื•ืช ืขืœ ืคื ื™ ื‘ืกื™ืก ื”ืงื•ื“ ืฉืœื”ื. golangci-lint, ื”ืชื•ืžืš ื‘ื™ื•ืชืจ ืž-50 ืœื™ื ื˜ืจื™ื ื‘ื•ื“ื“ื™ื ืชื—ืช ืคืงื•ื“ื” ืื—ืช, ืžื™ื™ืขืœ ื”ื›ืœ, ื”ื—ืœ ืžืื›ื™ืคืช ืกื’ื ื•ืŸ ื•ื‘ื“ื™ืงื•ืช ืžื•ืจื›ื‘ื•ืช ื•ืขื“ ืœื˜ื™ืคื•ืœ ื‘ืฉื’ื™ืื•ืช ื‘ื“ืคื•ืกื™ ืงื•ื“ ื•ื–ื™ื”ื•ื™ ืงื•ื“ ืฉืื™ื ื• ื‘ืฉื™ืžื•ืฉ.

ื”ืžื”ื™ืจื•ืช, ื™ื›ื•ืœืช ื”ืชืฆื•ืจื” ื•ื”ื™ื›ื•ืœืช ืœืคืขื•ืœ ื‘ืกื‘ื™ื‘ื•ืช CI/CD ื”ื•ืคื›ื•ืช ืื•ืชื• ืœื‘ื—ื™ืจื” ืžื•ืขื“ืคืช ืขื‘ื•ืจ ืฆื•ื•ืชื™ื ื”ืžื—ืคืฉื™ื ื ื™ืชื•ื— ืกื˜ื˜ื™ ืงืœ ืžืฉืงืœ ืืš ื™ืขื™ืœ. ื”ื•ื ืชื•ืžืš ื’ื ื‘ืชืฆื•ืจื•ืช ืžื•ืชืืžื•ืช ืื™ืฉื™ืช, ืื™ ื”ื›ืœืœื•ืช ืฉืœ linter, ื›ื•ื•ื ื•ืŸ ื‘ื™ืฆื•ืขื™ื ื•ืขื™ืฆื•ื‘ ืคืœื˜ ืœืฉื™ืœื•ื‘ ื—ืœืง ืขื ืขื•ืจื›ื™ื ื•ืคื™ื ื™ืœื™ื.

ื”ื™ื›ืŸ ืฉื’ื•ืœืื ื’ืฆ'ื™-ืœื™ื ื˜ ื ื•ืคืœ

ืœืžืจื•ืช ื ืงื•ื“ื•ืช ื”ื—ื•ื–ืง ืฉืœื”, ืœ-golangci-lint ื™ืฉ ื›ืžื” ืคืฉืจื•ืช ื—ืฉื•ื‘ื•ืช ืฉืžืคืชื—ื™ื ืฆืจื™ื›ื™ื ืœืงื—ืช ื‘ื—ืฉื‘ื•ืŸ:

  • ื‘ื“ื™ืงื” ื‘ื’ื•ื‘ื” ืคื ื™ ื”ืฉื˜ื— ื‘ืœื‘ื“
    ืœืžืจื•ืช ืฉื”ื•ื ืžืฉืœื‘ ืคืงื•ื“ื•ืช ืœื™ื ื˜ืจ ืจื‘ื•ืช, ืจื•ื‘ืŸ ืคื•ืขืœื•ืช ื‘ืจืžื” ืชื—ื‘ื™ืจื™ืช ืื• ื”ื™ื•ืจื™ืกื˜ื™ืช ืจื“ื•ื“ื”. golangci-lint ืื™ื ื• ืžื‘ืฆืข ื ื™ืชื•ื— ื–ืจื™ืžืช ื‘ืงืจื” ืขืžื•ืงื” ืื• ื ื™ืชื•ื— ื–ืจื™ืžืช ื ืชื•ื ื™ื. ื”ื•ื ืื™ื ื• ื™ื›ื•ืœ ืœืขืงื•ื‘ ืื—ืจ ืžืฆื‘ ืžืฉืชื ื” ืขืœ ืคื ื™ ืงื‘ืฆื™ื ืžืจื•ื‘ื™ื ืื• ืœื–ื”ื•ืช ืกื™ื›ื•ื ื™ ื‘ื™ืฆื•ืข ื ืกืชืจื™ื ื‘ืœื•ื’ื™ืงื” ื‘ื•-ื–ืžื ื™ืช.
  • ืžื•ื“ืขื•ืช ืžื•ื’ื‘ืœืช ืœืžืงื‘ื™ืœื™ื•ืช
    ื›ืœื™ื ื‘ืชื•ืš golangci-lint ืœืขื™ืชื™ื ืจื—ื•ืงื•ืช ืžื“ื’ืžื™ื ืื• ืžื ืกื™ื ืœื”ื‘ื™ืŸ ืฉื’ืจื•ืช, ืขืจื•ืฆื™ื ืื• ื‘ืœื•ืงื™ื ื ื‘ื—ืจื™ื ื‘ืฆื•ืจื” ืฉืœืžื” ืžื‘ื—ื™ื ื” ืกืžื ื˜ื™ืช. ื›ืชื•ืฆืื” ืžื›ืš, ื”ื ืขืœื•ืœื™ื ืœืคืกืคืก ื“ืคื•ืกื™ื ื ื•ื˜ื™ื ืœื’ื–ืข ืื• ืžื‘ื•ื™ ืกืชื•ื ืฉืžื ืชื—ื™ื ืžืชืงื“ืžื™ื ื™ื•ืชืจ ื™ื›ื•ืœื™ื ืœื–ื”ื•ืช.
  • ืื™ืŸ ืžืขืงื‘ ืื—ืจ ื–ืจื™ืžื” ื‘ื™ืŸ-ืคืจื•ืฆื“ื•ืจื™ืช
    ื”ืžื˜ื-ืœื™ื ื˜ืจ ืื™ื ื• ืชื•ืžืš ื‘ื ื™ืชื•ื— ืชื•ื›ื ื™ื•ืช ืžืœื ืขืœ ืคื ื™ ื’ื‘ื•ืœื•ืช ื—ื‘ื™ืœื•ืช ืื• ืคื•ื ืงืฆื™ื•ืช. ื—ืกืจื•ืช ืœื• ื™ื›ื•ืœื•ืช ื›ืžื• ืžืขืงื‘ ืื—ืจ ื–ื™ื”ื•ืžื™ื, ืจื–ื•ืœื•ืฆื™ื™ืช ื’ืจืฃ ืชืœื•ื™ื•ืช ืื• ื ื™ืชื•ื— ื’ืจืฃ ืงืจื™ืื”, ืฉื”ืŸ ื—ื™ื•ื ื™ื•ืช ื‘ื‘ืกื™ืกื™ ืงื•ื“ ื‘ืงื ื” ืžื™ื“ื” ื’ื“ื•ืœ.
  • ืคืขืจื™ื ื‘ื›ื™ืกื•ื™ ืื‘ื˜ื—ื”
    ืœืžืจื•ืช ืฉื–ื” ื›ื•ืœืœ ืคืชืจื•ื ื•ืช ืื‘ื˜ื—ื” ื‘ืกื™ืกื™ื™ื ื›ืžื• gosecื›ืœื™ื ืืœื” ืžื‘ื•ืกืกื™ ื—ืชื™ืžื•ืช ื•ืžื•ื’ื‘ืœื™ื ืขืœ ื™ื“ื™ ื›ืœืœื™ื. ื”ื ืื™ื ื ืžื–ื”ื™ื ืคื’ื™ืขื•ื™ื•ืช ืชืœื•ื™ื•ืช ื”ืงืฉืจ, ื ืชื™ื‘ื™ ื‘ืงืจื” ืœื ืžืื•ื‘ื˜ื—ื™ื ืื• ืฉื™ืžื•ืฉ ืœืจืขื” ื‘ืชื›ื•ื ื•ืช ืกืคืจื™ื™ื” ืกื˜ื ื“ืจื˜ื™ื•ืช ืœื ื‘ื˜ื•ื—ื•ืช ื‘ืงื ื” ืžื™ื“ื” ื’ื“ื•ืœ.
  • ืจืขืฉ ืชืงื•ืจื” ื‘-Linter
    ืขื ืขืฉืจื•ืช ืคืชืจื•ื ื•ืช ืœื™ื ื˜ืจ ื”ืžื•ืคืขืœื™ื ื›ื‘ืจื™ืจืช ืžื—ื“ืœ, golangci-lint ื™ื›ื•ืœ ืœื™ื™ืฆืจ ืคืœื˜ ื›ื‘ื“ ืื• ืจื•ืขืฉ. ื–ื” ืขืœื•ืœ ืœื’ืจื•ื ืœืขื™ื™ืคื•ืช ืขืจื ื•ืช ืื• ืœื”ืชืขืœืžื•ืช ืžืงืจื™ืช ืžื‘ืขื™ื•ืช ืืžื™ืชื™ื•ืช. ื›ื•ื•ื ื•ืŸ ืขื“ื™ืŸ ืฉืœ ื”ืชืฆื•ืจื” ื ื“ืจืฉ ืœืขืชื™ื ืงืจื•ื‘ื•ืช ื›ื“ื™ ืœื”ืคื•ืš ืืช ื”ืชื•ืฆืื•ืช ืœื ื™ืชื ื•ืช ืœืคืขื•ืœื”.

GolangCI Lint ื”ื•ื ืงื• ื”ื’ื ื” ืจืืฉื•ืŸ ื•ื‘ืขืœ ืขืจืš ืœืื™ื›ื•ืช ืงื•ื“ Go. ืขื ื–ืืช, ืฆื•ื•ืชื™ื ืฉืขื•ื‘ื“ื™ื ืขื ืžืขืจื›ื•ืช ืงืจื™ื˜ื™ื•ืช ืœืžืฉื™ืžื”, ืžื•ื ื•ืจืคื• ื’ื“ื•ืœื™ื ืื• ืœื•ื’ื™ืงื” ืขืกืงื™ืช ืžื•ืจื›ื‘ืช ืขืฉื•ื™ื™ื ืœื”ื–ื“ืงืง ืœื”ืฉืœื™ื ืื•ืชื• ืขื ืžื ืชื—ื™ื ืกืžื ื˜ื™ื™ื ืขืžื•ืงื™ื ื™ื•ืชืจ ื”ืžืฆื™ืขื™ื ืขืจื‘ื•ื™ื•ืช ื—ื–ืงื•ืช ื™ื•ืชืจ ืกื‘ื™ื‘ ื‘ื˜ื™ื—ื•ืช, ืžืงื‘ื™ืœื™ื•ืช ื•ืชื—ื–ื•ืงื”.

ืกื˜ื˜ื™ืงืฆ'ืง

ืกื˜ื˜ื™ืงืฆ'ืง ื”ื•ื ืื—ื“ ืžื›ืœื™ ื”ื ื™ืชื•ื— ื”ืกื˜ื˜ื™ ื”ืžื›ื•ื‘ื“ื™ื ื‘ื™ื•ืชืจ ืฉืœ Go, ื”ื™ื“ื•ืข ื‘ืื™ื–ื•ืŸ ื‘ื™ืŸ ื“ื™ื•ืง, ื‘ื™ืฆื•ืขื™ื ื•ืจืœื•ื•ื ื˜ื™ื•ืช ืœืขื•ืœื ื”ืืžื™ืชื™. Staticcheck, ืฉืคื•ืชื— ืขืœ ื™ื“ื™ ื“ื•ืžื™ื ื™ืง ื”ื•ื ืฃ, ื”ื•ืœืš ืžืขื‘ืจ ืœืื›ื™ืคืช ืกื’ื ื•ืŸ ื•ืžื–ื”ื” ื‘ืขื™ื•ืช ืชื›ื ื•ืช ืขื“ื™ื ื•ืช, ื›ื’ื•ืŸ ืคืขื•ืœื•ืช ืžื™ื•ืชืจื•ืช, ื”ืžืจื•ืช ืกื•ื’ ืฉื’ื•ื™ื•ืช, ืžืœื›ื•ื“ื•ืช ื‘ื™ืฆื•ืขื™ื ื•ืžื‘ื ื™ ืงื•ื“ ื—ืฉื•ื“ื™ื.

ื‘ื ื™ื’ื•ื“ ืœืœื™ื ื˜ืจื™ื ื‘ืกื™ืกื™ื™ื, Staticcheck ืžืกืคืง ืชื•ื‘ื ื•ืช ื“ืขืชื ื™ื•ืช ื”ืžื‘ื•ืกืกื•ืช ืขืœ ื”ื‘ื ื” ืขืžื•ืงื” ืฉืœ ืฉืคื”. ื”ื•ื ืžื ืชื— ืงื•ื“ Go ืœืื™ืชื•ืจ ื‘ืื’ื™ื ื ืคื•ืฆื™ื, ืฉื™ืžื•ืฉ ืœืจืขื” ื‘ืžืžืฉืงื™ API ื•ื‘ื™ื˜ื•ื™ื™ื ืžืกื•ื›ื ื™ื. ื”ืื‘ื—ื•ืŸ ืฉืœื• ื ื‘ื—ืจ ื‘ืงืคื™ื“ื” ื›ื“ื™ ืœืฉืงืฃ ื‘ืขื™ื•ืช ืฉืกื‘ื™ืจ ืœื”ื ื™ื— ืฉื”ืŸ ื˜ืขื•ื™ื•ืช ื•ื’ื ืœื ืกื‘ื™ืจ ืฉื”ืŸ ืžืงืจื™ ืงืฆื” ืžื›ื•ื•ื ื™ื, ืžื” ืฉื”ื•ืคืš ืื•ืชื• ืœืืžื•ืŸ ื”ืŸ ื‘ืงืจื‘ ืฆื•ื•ืชื™ื ืงื˜ื ื™ื ื•ื”ืŸ ื‘ืคืจื•ื™ืงื˜ื™ื ื‘ืจืžื” ืืจื’ื•ื ื™ืช.

ื–ื” ืžืฉืชืœื‘ ื”ื™ื˜ื‘ ืขื IDEs, ืžืขืจื›ื•ืช CI, ื• golangci-lint ื›ืชื•ืกืฃ. Staticcheck ืชื•ืžืš ื‘ืžื•ื“ื•ืœื™ื ื•ืคื•ืขืœ ืขืœ ืคื ื™ ื’ื‘ื•ืœื•ืช ื—ื‘ื™ืœื•ืช, ืžื” ืฉื”ื•ืคืš ืื•ืชื• ืœื›ืœื™ ื‘ืกื™ืก ื—ื–ืง ืœื”ื™ื’ื™ื™ื ืช ืงื•ื“ ื•ืืžื™ื ื•ืช ื‘ืชื•ื›ื ื•ืช ื™ื™ืฆื•ืจ.

ืžื’ื‘ืœื•ืช ื•ืคืฉืจื•ืช ืฉืœ Staticcheck

ืœืžืจื•ืช ืฉ-Staticcheck ื—ื–ืง ื•ืžืขื•ืฆื‘ ื‘ืงืคื™ื“ื”, ื™ืฉื ื ืžืกืคืจ ืชื—ื•ืžื™ื ืฉื‘ื”ื ื”ื•ื ืื™ื ื• ืžืกืคืง ื›ื™ืกื•ื™ ืžืœื:

  • ื—ื•ืกืจ ื ื™ืชื•ื— ืชื•ื›ื ื™ืช ืžืœื
    Staticcheck ื‘ื•ื“ืง ืงื•ื“ ื‘ืจืžืช ื”ื—ื‘ื™ืœื” ืืš ืื™ื ื• ื‘ื•ื ื” ืื• ื—ื•ืฆื” ื’ืจืคื™ ืงืจื™ืื” ืฉืœืžื™ื ืขืœ ืคื ื™ ื‘ืกื™ืกื™ ืงื•ื“ ื’ื“ื•ืœื™ื. ืขื‘ื•ืจ ืžืขืจื›ื•ืช ืื• ืžื™ืงืจื•-ืฉื™ืจื•ืชื™ื ื”ืžื—ื•ื‘ืจื™ื ื–ื” ืœื–ื” ื‘ืื•ืคืŸ ืขืžื•ืง, ืžืฉืžืขื•ืช ื”ื“ื‘ืจ ื”ื™ื ืฉื”ื•ื ืขืœื•ืœ ืœืคืกืคืก ื‘ืขื™ื•ืช ื—ื•ืฆื•ืช ื’ื‘ื•ืœื•ืช ื›ื’ื•ืŸ ื–ืจื™ืžื•ืช ื ืชื•ื ื™ื ืžืงื•ืœืงืœื•ืช ืื• ืชื•ืคืขื•ืช ืœื•ื•ืื™ ื‘ื™ืŸ-ื—ื‘ื™ืœื•ืช.
  • ืื™ืŸ ื–ืจื™ืžืช ื ืชื•ื ื™ื ืขืžื•ืงื” ืื• ื ื™ืชื•ื— ื›ืชื
    ื‘ืขื•ื“ ืฉ-Staticcheck ื—ื–ืง ื‘ืœื›ื™ื“ืช ื˜ืขื•ื™ื•ืช ืœื•ื’ื™ื•ืช, ื”ื•ื ืื™ื ื• ืขื•ืงื‘ ืื—ืจ ื”ืื•ืคืŸ ืฉื‘ื• ื ืชื•ื ื™ื ื ืขื™ื ื‘ื™ืŸ ืฉืจืฉืจืื•ืช ืคื•ื ืงืฆื™ื•ืช ืื• ื›ื™ืฆื“ ืงืœื˜ ืœื ืืžื™ืŸ ืขืฉื•ื™ ืœื”ื’ื™ืข ืœืคืขื•ืœื•ืช ืงืจื™ื˜ื™ื•ืช. ืขื•ื‘ื“ื” ื–ื• ืžื’ื‘ื™ืœื” ืืช ื”ืชื•ืขืœืช ืฉืœื• ืœื ื™ืชื•ื— ืื‘ื˜ื—ื” ืžืชืงื“ื ืื• ื‘ื™ืงื•ืจืช ืžื—ื–ื•ืจื™ ื—ื™ื™ื ืฉืœ ื ืชื•ื ื™ื.
  • ืžื™ื“ื•ืœ ืžืงื‘ื™ืœื™ื•ืช ืžื•ื’ื‘ืœ
    ืžื•ื“ืœ ื”ืžืงื‘ื™ืœื™ื•ืช ืฉืœ Go ืžืฆื™ื’ ืืชื’ืจื™ื ืกื‘ื™ื‘ ืฉื’ืจื•ืช ื’ื•, ืขืจื•ืฆื™ื ื•... select ื”ืฆื”ืจื•ืช. Staticcheck ืžืกืคืง ื›ื™ืกื•ื™ ืžื•ื’ื‘ืœ ื›ืืŸ. ื”ื•ื ืื™ื ื• ืžื“ืžื” ื ืชื™ื‘ื™ ื‘ื™ืฆื•ืข ื‘ื• ื–ืžื ื™ืช, ืžื–ื”ื” ืฉื™ืžื•ืฉ ืœืจืขื” ื‘ืขืจื•ืฆื™ื ืื• ืžืืžืช ืงื™ืคืื•ืŸ ืคื•ื˜ื ืฆื™ืืœื™ ืื• ืกื™ื›ื•ื ื™ ืžืจื•ืฅ.
  • ืื™ืŸ ืžื ื•ืข ื›ืœืœื™ื ื”ื ื™ืชืŸ ืœื”ื’ื“ืจื”
    ื”ื›ืœื™ ื”ื•ื ื‘ืขืœ ื“ืขื•ืช ืขื™ืงืจื™ื•ืช ืžื›ื•ื•ื ืช, ืžื” ืฉืื•ืžืจ ืฉื”ื•ื ืื™ื ื• ืžืืคืฉืจ ืœืžืฉืชืžืฉื™ื ืœื™ืฆื•ืจ ืื• ืœื”ืชืื™ื ืื™ืฉื™ืช ื›ืœืœื™ื ื‘ืงืœื•ืช. ื‘ื—ื™ืจืช ืขื™ืฆื•ื‘ ื–ื• ืžืฉืคืจืช ืืช ื”ืขืงื‘ื™ื•ืช ืืš ืžื’ื‘ื™ืœื” ืืช ื”ื’ืžื™ืฉื•ืช ืขื‘ื•ืจ ืฆื•ื•ืชื™ื ื”ืžืขื•ื ื™ื™ื ื™ื ืœืื›ื•ืฃ ืžื“ื™ื ื™ื•ืช ืื• ืžื•ืกื›ืžื•ืช ืžืชืŸ ืฉืžื•ืช ืกืคืฆื™ืคื™ื•ืช ืœืืจื’ื•ืŸ.
  • ืžื™ืงื•ื“ ืฆืจ ืขืœ ื™ื“ื™ ืขื™ืฆื•ื‘
    Staticcheck ื ืžื ืข ื‘ืžื›ื•ื•ืŸ ืžืฉื›ืคื•ืœ ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ื”ืžื•ืฆืขืช ืขืœ ื™ื“ื™ ื›ืœื™ื ืื—ืจื™ื ื›ืžื• gosec, gosimple, ืื• unusedืืžื ื ื–ื” ืฉื•ืžืจ ืขืœ ื™ืขื™ืœื•ืชื”, ืืš ืคื™ืจื•ืฉ ื”ื“ื‘ืจ ืฉืฆื•ื•ืชื™ื ืขื“ื™ื™ืŸ ืฆืจื™ื›ื™ื ืœื”ืฉืœื™ื ืื•ืชื” ืขื ื›ืœื™ื ืื—ืจื™ื ื›ื“ื™ ืœื”ืฉื™ื’ ื ื™ืชื•ื— ืกื˜ื˜ื™ ืžืœื.

Staticcheck ืžืฉืžืฉ ื‘ืฆื•ืจื” ื”ื˜ื•ื‘ื” ื‘ื™ื•ืชืจ ื›ื›ืœื™ ืœื‘ื“ื™ืงืช ืื™ื›ื•ืช ื‘ืขืœ ืื•ืชื•ืช ื’ื‘ื•ื”ื™ื ื•ืจืขืฉ ื ืžื•ืš ื‘ื›ืœ ืคืจื•ื™ืงื˜ Go. ื”ื•ื ืžืฉืคืจ ืืช ื™ื›ื•ืœืช ื”ืชื—ื–ื•ืงื” ื•ืžืกืžืŸ ื˜ืขื•ื™ื•ืช ื ืคื•ืฆื•ืช ืžื•ืงื“ื, ืืš ื™ืฉ ืœืฉืœื‘ ืื•ืชื• ืขื ื›ืœื™ื ืžื™ื•ื—ื“ื™ื ื™ื•ืชืจ ืœืื™ืžื•ืช ืื“ืจื™ื›ืœื™, ืชืงื™ื ื•ืช ืžืงื‘ื™ืœื™ื•ืช ืื• ืกืจื™ืงืช ืคื’ื™ืขื•ื™ื•ืช ืขืžื•ืงื”.

ืœืš ืœื•ื•ื˜ืจื™ื ืจ

ืœืš ืœื•ื•ื˜ืจื™ื ืจ ื”ื•ื ื›ืœื™ ื ื™ืชื•ื— ืกื˜ื˜ื™ ืจืฉืžื™ ื”ืžืฆื•ืจืฃ ืœืฉืจืฉืจืช ื”ื›ืœื™ื ืฉืœ Go. ื”ื•ื ื ื•ืขื“ ืœื–ื”ื•ืช ื˜ืขื•ื™ื•ืช ืขื“ื™ื ื•ืช ื‘ืชื•ื›ื ื™ื•ืช Go ืฉืœื ื ืชืคืกื•ืช ืขืœ ื™ื“ื™ ื”ืžื”ื“ืจ ืืš ืกื‘ื™ืจื•ืช ืœื’ืจื•ื ืœื‘ืื’ื™ื. Go Vet ืžืชื•ืืจ ืœืขืชื™ื ืงืจื•ื‘ื•ืช ื›ื‘ื•ื“ืง ืฉืคื™ื•ืช ืœืงื•ื“ ืฉืžืชืงืžืคืœ ื›ื”ืœื›ื” ืืš ืขืฉื•ื™ ืœื”ื›ื™ืœ ื“ืคื•ืกื™ื ืžืกื•ื›ื ื™ื ืื• ืฉื’ื•ื™ื™ื.

ื–ื” ื‘ื•ื“ืง ื‘ืขื™ื•ืช ื›ืžื• ืฉื™ืžื•ืฉ ืœืจืขื” Printf ืคืขืœื™ื ื‘ืคื•ืจืžื˜, ืžืฉืชื ื™ื ืžื•ืฆืœืœื™ื, ืงื•ื“ ืฉืื™ื ื• ื ื™ืชืŸ ืœื”ืฉื’ื” ื•ืงื‘ืขื™ ืกื•ื’ ืœื ื‘ื˜ื•ื—ื™ื. ืžื›ื™ื•ื•ืŸ ืฉื”ื•ื ืžืคื•ืชื— ื•ืžืชื•ื—ื–ืง ืขืœ ื™ื“ื™ ืฆื•ื•ืช ื”ืœื™ื‘ื” ืฉืœ Go, Go Vet ืžืชืคืชื— ืœืฆื“ ื”ืฉืคื” ื•ืžืฉืงืฃ ืฆื™ืคื™ื•ืช ืื™ื“ื™ื•ืžื˜ื™ื•ืช. ื”ื•ื ืคื•ืขืœ ื‘ืžื”ื™ืจื•ืช, ืžืฉืชืœื‘ ื‘ืื•ืคืŸ ื˜ื‘ืขื™ ืขื ื”- go ืคืงื•ื“ื”, ื•ืžืกืคืงืช ืื™ืžื•ืช ืืžื™ืŸ ืžื”ืฉื•ืจื” ื”ืจืืฉื•ื ื” ื‘ื–ืจื™ืžื•ืช ืขื‘ื•ื“ื” ืฉืœ ืื™ื ื˜ื’ืจืฆื™ื” ืจืฆื™ืคื” ืื• ื›ืœื™ ืคื™ืชื•ื—.

Go Vet ื ื™ืชืŸ ืœื”ืจื—ื‘ื” ื’ื ื‘ืืžืฆืขื•ืช ื‘ื•ื“ืงื™ ื•ื˜ืจื™ื ืจื™ื, ื”ืžืืคืฉืจื™ื ื”ืชืืžื” ืื™ืฉื™ืช ืžื•ื’ื‘ืœืช ืขืœ ื™ื“ื™ ื”ืคืขืœื” ืื• ื”ืฉื‘ืชื” ืฉืœ ืžื ืชื—ื™ื ืกืคืฆื™ืคื™ื™ื. ื”ื•ื ื™ืขื™ืœ ื‘ื™ื•ืชืจ ื›ืืฉืจ ืžืฉืชืžืฉื™ื ื‘ื• ื‘ืื•ืคืŸ ืจืฆื™ืฃ ืœืฆื“ ืžืขืฆื‘ื™ื ื•ืœื™ื™ื ื˜ืจื™ื ื›ื—ืœืง ืžืชื”ืœื™ืš ืคื™ืชื•ื— ืžื•ื‘ื ื” ื”ื™ื˜ื‘.

ืคืขืจื™ื ื•ืื™ืœื•ืฆื™ื ืฉืœ Go Vet

ืœืžืจื•ืช ืฉ-Go Vet ื”ื•ื ื‘ื•ื“ืง ืกื˜ื˜ื™ ืืžื™ืŸ, ื”ื•ื ืžืขื•ืœื ืœื ื ื•ืขื“ ืœืกืคืง ื ื™ืชื•ื— ืžืงื™ืฃ. ืžืคืชื—ื™ื ืฆืจื™ื›ื™ื ืœื”ื™ื•ืช ืžื•ื“ืขื™ื ืœืžื’ื‘ืœื•ืช ื”ื‘ืื•ืช:

  • ื”ื™ืงืฃ ืกื˜ื˜ื™ ืจื“ื•ื“
    Go Vet ืคื•ืขืœ ื‘ืขื™ืงืจ ืขืœ ื—ื‘ื™ืœื•ืช ืžืงื•ืžื™ื•ืช ื•ืื™ื ื• ื—ื•ืฆื” ืขืฆื™ ืชืœื•ืช ืฉืœืžื™ื ืื• ื–ืจื™ืžื•ืช ื›ืœืœ-ืืคืœื™ืงืฆื™ื•ืช. ื”ื•ื ืื™ื ื• ื™ื›ื•ืœ ืœื–ื”ื•ืช ืฉื’ื™ืื•ืช ื‘ื™ืŸ-ื—ื‘ื™ืœื•ืช, ื”ืคืจื•ืช ืืจื›ื™ื˜ืงื˜ื•ื ื™ื•ืช ืื• ืชื•ืคืขื•ืช ืœื•ื•ืื™ ื‘ื™ืŸ-ืฉื™ืจื•ืชื™ื•ืช ื‘ื‘ืกื™ืกื™ ืงื•ื“ ื’ื“ื•ืœื™ื.
  • ืื™ืŸ ืžื•ื“ืขื•ืช ืœื–ืจื™ืžื” ืกืžื ื˜ื™ืช
    ื”ื›ืœื™ ืื™ื ื• ืžื“ืžื” ื ืชื•ื ื™ื ืื• ืฉื•ืœื˜ ื‘ื–ืจื™ืžื”. ืžืฉืžืขื•ืช ื”ื“ื‘ืจ ื”ื™ื ืฉื”ื•ื ืื™ื ื• ื™ื›ื•ืœ ืœื–ื”ื•ืช ืื ืชื ืื™ ื”ื•ื ืชืžื™ื“ ืฉืงืจ, ืžืฉืชื ื” ืื™ื ื• ื‘ืฉื™ืžื•ืฉ ื›ืœืœ ื‘ืคื•ื ืงืฆื™ื•ืช ืฉื•ื ื•ืช, ืื• ืื ืงืจื™ืื” ืœืคื•ื ืงืฆื™ื” ืžืคืจื” ืืช ืœื•ื’ื™ืงืช ื”ืžืฆื‘ ื”ืžื™ื•ืขื“ืช. ืœืฆื•ืจืš ืื™ืžื•ืช ืžืขืžื™ืง ื™ื•ืชืจ, ื›ืœื™ื ื›ืžื• Staticcheck ืื• SMART TS XL ืžืชืื™ืžื™ื ื™ื•ืชืจ.
  • ื˜ื™ืคื•ืœ ื‘ืกื™ืกื™ ื‘ืžืงื‘ื™ืœื™ื•ืช
    Go Vet ื›ื•ืœืœ ื ื™ืชื•ื— ืžื™ื ื™ืžืœื™ ืฉืœ ืคืจื™ืžื™ื˜ื™ื‘ื™ื ืฉืœ ืžืงื‘ื™ืœื™ื•ืช. ื”ื•ื ืื™ื ื• ืžื ืชื— ื”ืชื ื”ื’ื•ืช ื’ื•ืจื•ื˜ื™ื ื”, ืชื™ืื•ื ืขืจื•ืฆื™ื ืื• ืžืจื•ืฆื™ ื–ื™ื›ืจื•ืŸ, ื“ื‘ืจ ื”ืžื’ื‘ื™ืœ ืืช ื”ืชื•ืขืœืช ืฉืœื• ืขื‘ื•ืจ ื™ื™ืฉื•ืžื™ื ื›ื‘ื“ื™ ืžืงื‘ื™ืœื™ื•ืช.
  • ืชื•ื‘ื ื•ืช ืื‘ื˜ื—ื” ืžื™ื ื™ืžืœื™ื•ืช
    ื”ื›ืœื™ ืื™ื ื• ืžื™ื•ืขื“ ืœื–ื”ื•ืช ืคื’ืžื™ ืื‘ื˜ื—ื” ื›ื’ื•ืŸ ืงืœื˜ ืœื ืžืกื•ืžืŸ, ื‘ื™ื˜ื•ืœ ืกืจื™ืืœื™ื–ืฆื™ื” ืœื ื‘ื˜ื•ื— ืื• ื—ืฉื™ืคืช ืื™ืฉื•ืจื™ื. ืžืคืชื—ื™ื ื—ื™ื™ื‘ื™ื ืœืฉืœื‘ ืื•ืชื• ืขื ื›ืœื™ื ื›ืžื• gosec ืืคื™ืœื• ืœืกืจื™ืงืช ืคื’ื™ืขื•ื™ื•ืช ื‘ืกื™ืกื™ืช.
  • ืื™ืŸ ืื›ื™ืคืช ืื™ื›ื•ืช ืงื•ื“ ืื• ืกื’ื ื•ืŸ
    Go Vet ืื™ื ื• ื›ืœื™ ืขื–ืจ. ื”ื•ื ืื™ื ื• ืื•ื›ืฃ ืกื’ื ื•ืŸ ืงื•ื“, ืžื•ืกื›ืžื•ืช ืœืžืชืŸ ืฉืžื•ืช ืื• ืขื™ืฆื•ื‘. ืขื‘ื•ืจ ืžืฉื™ืžื•ืช ืืœื•, ื›ืœื™ื ื›ืžื• golangci-lint, revive, ืื• golint ื ื“ืจืฉื™ื.
  • ืืคืฉืจื•ื™ื•ืช ืชืฆื•ืจื” ืžื•ื’ื‘ืœื•ืช
    ืœืžืจื•ืช ืฉื ื™ืชืŸ ืœื”ืคืขื™ืœ ืื• ืœื”ืฉื‘ื™ืช ื‘ื“ื™ืงื•ืช ื•ื˜ืจื™ื ืจื™ื•ืช ื‘ื•ื“ื“ื•ืช, ืœ-Go Vet ื—ืกืจื” ื”ืชืืžื” ืื™ืฉื™ืช ืžืชืงื“ืžืช ืฉืœ ื›ืœืœื™ื, ืชืžื™ื›ื” ื‘ืชื‘ื ื™ื•ืช ืžื•ื’ื“ืจื•ืช ืขืœ ื™ื“ื™ ื”ืžืฉืชืžืฉ ืื• ืฉื™ืœื•ื‘ ืขื ืœื™ื™ื ืจื™ื ืžื•ืชืืžื™ื ืื™ืฉื™ืช.

ืœืกื™ื›ื•ื, Go Vet ื”ื•ื ื›ืœื™ ืงืœ ืžืฉืงืœ ื•ืืžื™ืŸ ืœื‘ื“ื™ืงืช ืฉืคื™ื•ืช, ื”ืžืฉืชืœื‘ ื‘ืื•ืคืŸ ื˜ื‘ืขื™ ื‘ืชื”ืœื™ืš ื”ืขื‘ื•ื“ื” ืฉืœ ื”ืคื™ืชื•ื— ืฉืœ Go. ืžื•ืžืœืฅ ืœื”ืฉืชืžืฉ ื‘ื• ื›ื›ืœื™ ื‘ืกื™ืกื™ ืœื–ื™ื”ื•ื™ ื˜ืขื•ื™ื•ืช ื‘ืจื•ืจื•ืช, ืืš ื™ืฉ ืœื”ืฉืœื™ื ืื•ืชื• ืขื ืžื ืชื—ื™ื ื ื•ืกืคื™ื ื›ื“ื™ ืœืงื‘ืœ ื‘ื™ื˜ื—ื•ืŸ ืžืœื ื‘ื ื›ื•ื ื•ืช ื”ืงื•ื“, ื‘ืชื—ื–ื•ืงื” ื•ื‘ืื‘ื˜ื—ื”.

ืœื”ื—ื™ื•ืช

ืœื”ื—ื™ื•ืช ื”ื•ื ืืคืœื™ืงืฆื™ื™ืช Linter ืžื”ื™ืจื”, ื ื™ืชื ืช ืœื”ืจื—ื‘ื” ื•ื ื™ืชื ืช ืœื”ื’ื“ืจื” ืขื‘ื•ืจ Go ืฉืžื˜ืจืชื” ืœืฉืคืจ ืืช ื”ื’ื™ืฉื” ืฉื›ื‘ืจ ืื™ื ื” ืžืชื•ื—ื–ืงืช. golint ืขืœ ื™ื“ื™ ื”ืฆืขืช ื’ืžื™ืฉื•ืช ืจื‘ื” ื™ื•ืชืจ, ื‘ื™ืฆื•ืขื™ื ื˜ื•ื‘ื™ื ื™ื•ืชืจ ื•ืžืขืจื›ื•ืช ื›ืœืœื™ื ืžื•ื“ืจื ื™ื•ืช. Revive, ืฉื ื‘ื ื” ื›ืชื—ืœื™ืฃ ืžื”ื™ืจ, ืžื‘ื™ื ืื›ื™ืคืช ืกื’ื ื•ืŸ ื•ืขืงื‘ื™ื•ืช ืงื•ื“ ืœืคืจื•ื™ืงื˜ื™ื ืžื•ื“ืจื ื™ื™ื ืฉืœ Go ืžื‘ืœื™ ืœื”ืชืคืฉืจ ืขืœ ืฉืœื™ื˜ื” ืื• ืžื”ื™ืจื•ืช ืฉืœ ื”ืžืคืชื—ื™ื.

ืื—ืช ืžื™ืชืจื•ื ื•ืชื™ื” ื”ื’ื“ื•ืœื™ื ื‘ื™ื•ืชืจ ืฉืœ Revive ื”ื™ื ื™ื›ื•ืœืช ื”ืชืืžื” ืื™ืฉื™ืชืžืคืชื—ื™ื ื™ื›ื•ืœื™ื ืœื”ืคืขื™ืœ, ืœื”ืฉื‘ื™ืช ืื• ืœื›ื•ื•ื ืŸ ื›ืœืœื™ื ื‘ืื•ืคืŸ ืื™ื ื“ื™ื‘ื™ื“ื•ืืœื™ ื‘ืืžืฆืขื•ืช ืงื•ื‘ืฅ ืชืฆื•ืจื”. ืฆื•ื•ืชื™ื ื™ื›ื•ืœื™ื ืœื”ื’ื“ื™ืจ ืžืขืจื›ื™ ื›ืœืœื™ื ืžืฉืœื”ื ื‘ื”ืชื‘ืกืก ืขืœ ืฆืจื›ื™ ื”ืคืจื•ื™ืงื˜, ืœืื›ื•ืฃ ืกื˜ื ื“ืจื˜ื™ื ื›ื’ื•ืŸ ืžื•ืกื›ืžื•ืช ืœืžืชืŸ ืฉืžื•ืช, ื“ืจื™ืฉื•ืช ืชื™ืขื•ื“ ืื• ื›ืœืœื™ ืจื™ื•ื•ื—. ื”ื•ื ืชื•ืžืš ื’ื ื‘ื›ืชื™ื‘ืช ื›ืœืœื™ื ืžื•ืชืืžื™ื ืื™ืฉื™ืช ื‘ืืžืฆืขื•ืช ืชื•ืกืคื™ Go, ืžื” ืฉื”ื•ืคืš ืื•ืชื• ืœื›ืœื™ ื‘ืขืœ ืขืจืš ืขื‘ื•ืจ ืืจื’ื•ื ื™ื ื”ืžืขื•ื ื™ื™ื ื™ื ืœื”ืชืื™ื ืืช ื”-linting ืœื”ื ื—ื™ื•ืช ืคื ื™ืžื™ื•ืช.

Revive ืžื”ื™ืจ, ืงืœ ืžืฉืงืœ, ื•ืžืฉืชืœื‘ ื‘ืฆื•ืจื” ื—ืœืงื” ืขื ืฆื™ื ื•ืจื•ืช CI ืื• ืคืœื˜ืคื•ืจืžื•ืช ื ื™ืชื•ื— ืกื˜ื˜ื™ื•ืช ืื—ืจื•ืช ื›ืžื• golangci-lintื›ื™ืกื•ื™ ื”ื›ืœืœื™ื ืฉืœื• ืžืฉืชืจืข ืขืœ ืคื ื™ ืฉื™ื˜ื•ืช ืขื‘ื•ื“ื” ืžื•ืžืœืฆื•ืช ื ืคื•ืฆื•ืช, ื‘ื“ื™ืงื•ืช ืกื’ื ื•ื ื™ื•ืช ื•ืื™ืžื•ืช ื‘ืกื™ืกื™ ืฉืœ ื ื›ื•ื ื•ืช, ืžื” ืฉื”ื•ืคืš ืื•ืชื• ืœืฉื›ื‘ืช ื”ื™ื’ื™ื™ื ืช ืงื•ื“ ืืžื™ื ื” ืขื‘ื•ืจ ื›ืœ ืฆื•ื•ืช Go.

ื”ื™ื›ืŸ ืฉ-Revive ืžื’ื™ืข ืœื’ื‘ื•ืœื•ืชื™ื•

ืœืžืจื•ืช ื”ื‘ื™ืฆื•ืขื™ื ื•ื”ื™ื›ื•ืœืช ืœื”ื’ื“ืจื” ืฉืœื•, Revive ืื™ื ื• ืคืชืจื•ืŸ ืžืงื™ืฃ ืœื ื™ืชื•ื— ืกื˜ื˜ื™ ืขืžื•ืง. ืœื”ืœืŸ ื”ืžื’ื‘ืœื•ืช ื”ืขื™ืงืจื™ื•ืช ืฉืœื•:

  • ืกื’ื ื•ืŸ ืžืžื•ืงื“ ืžื˜ื‘ืขื•
    Revive ืžืชืžืงื“ ื‘ืขื™ืงืจ ื‘ื›ืœืœื™ ืกื’ื ื•ืŸ. ื”ื•ื ืื™ื ื• ื‘ื•ื“ืง ื”ืชื ื”ื’ื•ืช ืกืžื ื˜ื™ืช, ื•ื’ื ืื™ื ื• ืžื‘ืฆืข ืื™ืžื•ืช ืœื•ื’ื™ ืื• ื–ื™ื”ื•ื™ ืชื‘ื ื™ื•ืช ืžื•ืขื“ื•ืช ืœืฉื’ื™ืื•ืช ืžืขื‘ืจ ืœื‘ืขื™ื•ืช ืงื™ื“ื•ื“ ื‘ืจืžืช ื”ืฉื˜ื—.
  • ืื™ืŸ ื–ืจื™ืžื” ืื• ืžื•ื“ืขื•ืช ืœื”ืงืฉืจ
    ื”ื›ืœื™ ืื™ื ื• ืžื ืชื— ื›ื™ืฆื“ ืžืฉืชื ื™ื ื ืขื™ื ื‘ืงื•ื“, ื›ื™ืฆื“ ืžื‘ื ื™ ื‘ืงืจื” ืžืงื™ื™ืžื™ื ืื™ื ื˜ืจืืงืฆื™ื” ื‘ื™ืŸ ืคื•ื ืงืฆื™ื•ืช, ืื• ื”ืื ื ืชื™ื‘ื™ ืงื•ื“ ืื™ื ื ื ื’ื™ืฉื™ื. ืื™ืŸ ืชืžื™ื›ื” ื‘ืžืขืงื‘ ืื—ืจ ืชืœื•ื™ื•ืช ื ืชื•ื ื™ื ืื• ื‘ื‘ื˜ื™ื—ื•ืช ืžืงื‘ื™ืœื™ื•ืช.
  • ืชื•ื‘ื ื” ืžื•ื’ื‘ืœืช ืœื’ื‘ื™ ื”ืชื ื”ื’ื•ืช ื™ื™ืฉื•ืžื™ื
    Revive ืœื ื™ื›ื•ืœ ืœื–ื”ื•ืช ื‘ืื’ื™ื ืขื“ื™ื ื™ื, ืงื™ืคืื•ืŸ ืื• ืฉื™ืžื•ืฉ ืœืจืขื” ื‘ืžืฉืื‘ื™ื. ืขื‘ื•ืจ ื—ืฉืฉื•ืช ืืœื”, ืžืคืชื—ื™ื ื—ื™ื™ื‘ื™ื ืœื”ืกืชืžืš ืขืœ ืžื ืชื—ื™ื ื›ืžื• staticcheck ืื• ืœืฉืœื•ื˜ ื‘ืคืœื˜ืคื•ืจืžื•ืช ืžื•ื“ืขื•ืช ื–ืจื™ืžื” ื›ืžื• SMART TS XL.
  • ืื™ืŸ ืกืจื™ืงืช ืื‘ื˜ื—ื”
    ื”ื•ื ืื™ื ื• ืžืฆื™ืข ื›ืœืœื™ื ื”ืžืชืžืงื“ื™ื ื‘ืื‘ื˜ื—ื” ืื• ืžื•ื“ืขื•ืช ืœื“ืคื•ืกื™ ืงื™ื“ื•ื“ ืœื ืžืื•ื‘ื˜ื—ื™ื. ื›ืœื™ื ื›ืžื• gosec ืื• ืžื ืชื—ื™ื ืžืชืงื“ืžื™ื ื™ื•ืชืจ ื ื—ื•ืฆื™ื ืœื’ื™ืœื•ื™ ืื™ื•ืžื™ื.
  • ื™ืฆื™ืจืช ื›ืœืœ ืžื•ืชืื ืื™ืฉื™ืช ื“ื•ืจืฉืช ืžืืžืฅ ืงื™ื“ื•ื“
    ื‘ืขื•ื“ ืฉื›ืชื™ื‘ืช ื›ืœืœื™ื ืžื•ืชืืžื™ื ืื™ืฉื™ืช ื ืชืžื›ืช, ื”ื™ื ื“ื•ืจืฉืช ืคื™ืชื•ื— ืฉืœ ืชื•ืกืฃ Go, ื“ื‘ืจ ืฉืขืฉื•ื™ ืœื”ื™ื•ืช ืžื•ื’ื–ื ืขื‘ื•ืจ ืฆื•ื•ืชื™ื ืงื˜ื ื™ื ื™ื•ืชืจ ืื• ืžืคืชื—ื™ื ืคื—ื•ืช ืžื ื•ืกื™ื ื”ืžื—ืคืฉื™ื ืฉื™ื ื•ื™ื™ ืชืฆื•ืจื” ืžื”ื™ืจื™ื.
  • ืœื ืžื™ื•ืขื“ ืœื ื™ืงื•ื“ ืื™ื›ื•ืช ืงื•ื“ ืื• ืœืื›ื™ืคืช ืืจื›ื™ื˜ืงื˜ื•ืจื”
    Revive ืื™ื ื• ืชื•ืžืš ื‘ื™ืฆื™ืจืช ืžื“ื“ื™ ืงื•ื“, ืื™ืžื•ืช ื’ื‘ื•ืœื•ืช ืื“ืจื™ื›ืœื™ื™ื ืื• ื•ื™ื–ื•ืืœื™ื–ืฆื™ื” ืฉืœ ืชืœื•ืช. ืชื›ื•ื ื•ืช ืืœื• ื ื“ืจืฉื•ืช ื‘ื“ืจืš ื›ืœืœ ื‘ืžืขืจื›ื•ืช ื’ื“ื•ืœื•ืช ื™ื•ืชืจ ื•ืžื˜ื•ืคืœื•ืช ืขืœ ื™ื“ื™ ืคืœื˜ืคื•ืจืžื•ืช ื‘ืขืœื•ืช ืชื›ื•ื ื•ืช ืžืœืื•ืช ื™ื•ืชืจ.

Revive ืžืฉืžืฉ ื‘ืฆื•ืจื” ื”ื˜ื•ื‘ื” ื‘ื™ื•ืชืจ ืœืื›ื™ืคืช ืกื˜ื ื“ืจื˜ื™ื ืกืคืฆื™ืคื™ื™ื ืœืกื’ื ื•ืŸ ื•ืงืจื™ืื•ืช ื‘ืงื•ื“ ืฉืœ Go. ื”ืžื”ื™ืจื•ืช ื•ื”ื™ื›ื•ืœืช ืœื”ื’ื“ืจื” ืฉืœื• ื”ื•ืคื›ื•ืช ืื•ืชื• ืœื‘ื—ื™ืจื” ืžืฆื•ื™ื ืช ืœืฉืžื™ืจื” ืขืœ ื™ื™ืฉื•ืจ ืงื• ื‘ื™ืŸ ืฆื•ื•ืชื™ื ื‘ื ื•ื’ืข ืœืขื™ืฆื•ื‘ ื•ืžื•ืกื›ืžื•ืช, ืืš ื™ืฉ ืœืฉืœื‘ ืื•ืชื• ืขื ืžื ืชื—ื™ื ืกืžื ื˜ื™ื™ื, ืžื‘ื ื™ื™ื ืื• ืžืžื•ืงื“ื™ ืื‘ื˜ื—ื” ืœื›ื™ืกื•ื™ ืžืœื ืฉืœ ื‘ืกื™ืก ื”ืงื•ื“.

ื‘ื“ื™ืงืช ืฉื’ื™ืื•ืช

ื‘ื“ื™ืงืช ืฉื’ื™ืื•ืช ื”ื•ื ื›ืœื™ ื ื™ืชื•ื— ืกื˜ื˜ื™ ืงืœ ืžืฉืงืœ ืืš ื‘ืขืœ ืขืจืš ื‘ืžืขืจื›ืช ื”ืืงื•ืœื•ื’ื™ืช ืฉืœ Go, ืฉืชื•ื›ื ืŸ ื‘ืžื™ื•ื—ื“ ื›ื“ื™ ืœื–ื”ื•ืช ืžืชื™ ืžืชืขืœืžื™ื ืžืขืจื›ื™ ืฉื’ื™ืื•ืช ื”ืžื•ื—ื–ืจื™ื ืžืคื•ื ืงืฆื™ื•ืช. ื‘-Go, ื˜ื™ืคื•ืœ ื‘ืฉื’ื™ืื•ืช ื”ื•ื ืžืคื•ืจืฉ ื•ื—ื™ื•ื ื™ ืœื›ืชื™ื‘ืช ืชื•ื›ื ื™ื•ืช ื—ื–ืงื•ืช. ืขื ื–ืืช, ืžืงื•ื‘ืœ ืฉืžืคืชื—ื™ื, ื‘ืžื™ื•ื—ื“ ื‘ื‘ืกื™ืกื™ ืงื•ื“ ื’ื“ื•ืœื™ื ืื• ื”ืžืฉืชื ื™ื ื‘ืžื”ื™ืจื•ืช, ืžื“ืœื’ื™ื ื‘ื˜ืขื•ืช ืขืœ ื‘ื“ื™ืงืช ืฉื’ื™ืื•ืช ื”ืžื•ื—ื–ืจื•ืช ืžืงืจื™ืื•ืช ืคื•ื ืงืฆื™ื”. ื›ืืŸ errcheck ืžื•ื›ื™ื— ืืช ืขืฆืžื• ื›ืžื•ืขื™ืœ.

ื”ื›ืœื™ ืกื•ืจืง ืืช ื‘ืกื™ืก ื”ืงื•ื“ ืฉืœืš ืื—ืจ ืงืจื™ืื•ืช ืœืคื•ื ืงืฆื™ื•ืช ืฉืžื—ื–ื™ืจื•ืช ืขืจืš ืฉื’ื™ืื” ื•ืžื“ื•ื•ื— ืขืœ ืืœื• ืฉื‘ื”ืŸ ื”ืฉื’ื™ืื” ืžืชืขืœืžืช ื‘ืฉืงื˜. ื›ืœืœ ืคืฉื•ื˜ ื–ื” ืขื•ื–ืจ ืœืฆื•ื•ืชื™ื ืœืื›ื•ืฃ ืฉื™ื˜ื•ืช ื˜ื™ืคื•ืœ ืขืงื‘ื™ื•ืช ื‘ืฉื’ื™ืื•ืช ื•ืœื”ื™ืžื ืข ืžืกื•ื’ ื”ื›ืฉืœื™ื ื”ืฉืงื˜ื™ื ืฉืขืœื•ืœื™ื ืœื”ืกืœื™ื ืœืื™ืจื•ืขื™ ื™ื™ืฆื•ืจ.

ื ื™ืชืŸ ืœื”ืจื™ืฅ ืืช errcheck ื›ื›ืœื™ ืขืฆืžืื™ ืื• ืœืฉืœื‘ ืื•ืชื• ืขื ื—ื‘ื™ืœื•ืช ื ื™ืชื•ื— ืกื˜ื˜ื™ื•ืช ืื—ืจื•ืช ื›ื’ื•ืŸ golangci-lintืœืขืชื™ื ืงืจื•ื‘ื•ืช ื”ื•ื ื ื›ืœืœ ื‘ืฆื™ื ื•ืจื•ืช CI ื›ื“ื™ ืœืžื ื•ืข ืจื’ืจืกื™ื•ืช ืฉืœ ื‘ื“ื™ืงืช ืฉื’ื™ืื•ืช ื•ืœื”ื‘ื˜ื™ื— ืฉื”ืจื’ืœื™ ืชื›ื ื•ืช ื”ื’ื ืชื™ื™ื ื™ื™ืฉืืจื• ื‘ืžืงื•ืžื ื‘ื›ืœ ื”ืฆื•ื•ืชื™ื.

ืื–ื”ืจื•ืช ื•ื’ื‘ื•ืœื•ืช ืฉืœ ื‘ื“ื™ืงืช ืฉื’ื™ืื•ืช

ื‘ืขื•ื“ ืฉ-errcheck ืžืฉืจืช ืžื˜ืจื” ืžืžื•ืงื“ืช ืžืื•ื“, ื”ื•ื ืžื’ื™ืข ื’ื ืขื ืžื’ื‘ืœื•ืช ืžืกื•ื™ืžื•ืช ืฉื™ืฉ ืœื–ื›ื•ืจ ื‘ืขืช ืฉื™ืœื•ื‘ื• ื‘ืชื”ืœื™ืš ืขื‘ื•ื“ื” ืจื—ื‘ ื™ื•ืชืจ ืฉืœ ื ื™ืชื•ื—:

  • ื”ื™ืงืฃ ืฆืจ
    errcheck ืžืชืžืงื“ ืืš ื•ืจืง ื‘ืฉืืœื” ื”ืื ืขืจื›ื™ ื”ื—ื–ืจืช ืฉื’ื™ืื•ืช ืžืชืขืœืžื™ื. ื”ื•ื ืื™ื ื• ืžืขืจื™ืš ื›ื™ืฆื“ ืฉื’ื™ืื•ืช ืžื˜ื•ืคืœื•ืช, ื”ืื ื”ืŸ ื ืจืฉืžื•ืช, ืขื˜ื•ืคื•ืช ื›ืจืื•ื™ ืื• ืžื•ื—ื–ืจื•ืช ื‘ืฆื•ืจื” ืžืื•ื‘ื˜ื—ืช ืื• ื™ื“ื™ื“ื•ืชื™ืช ืœืžืฉืชืžืฉ.
  • ืื™ืŸ ื”ื‘ื ื” ื”ืงืฉืจื™ืช
    ื”ื›ืœื™ ื—ืกืจ ืžื•ื“ืขื•ืช ืกืžื ื˜ื™ืช. ื”ื•ื ืื™ื ื• ื™ื›ื•ืœ ืœื”ื‘ื—ื™ืŸ ื‘ื™ืŸ ื”ืฉืžื˜ื•ืช ื‘ื˜ื•ื—ื•ืช (ื›ื’ื•ืŸ ืคืกื™ืœื” ืžื›ื•ื•ื ืช ืฉืœ ืฉื’ื™ืื” ืžืคืขื ื•ื— ื™ื“ื•ืข) ืœื‘ื™ืŸ ื”ืฉืžื˜ื•ืช ืžืกื•ื›ื ื•ืช. ื›ืชื•ืฆืื” ืžื›ืš, ื”ื•ื ืขืœื•ืœ ืœื™ื™ืฆืจ ืชื•ืฆืื•ืช ื—ื™ื•ื‘ื™ื•ืช ืฉื’ื•ื™ื•ืช ื‘ืžืงืจื™ื ื‘ื”ื ืžืคืชื—ื™ื ืขืฉื• ื‘ื—ื™ืจื•ืช ืžื›ื•ื•ื ื•ืช ื•ืžื•ืฆื“ืงื•ืช.
  • ืœื ืžืชืื™ื ืœื’ื™ืœื•ื™ ื‘ืื’ื™ื ืขืžื•ืง
    errcheck ืื™ื ื• ืžื‘ืฆืข ื ื™ืชื•ื— ื–ืจื™ืžืช ื ืชื•ื ื™ื ืื• ื ื™ืชื•ื— ื–ืจื™ืžืช ื‘ืงืจื”. ื”ื•ื ืื™ื ื• ื™ื›ื•ืœ ืœืงื‘ื•ืข ื”ืื ื”ืชืขืœืžื•ืช ืžืฉื’ื™ืื” ืžื•ื‘ื™ืœื” ืœื”ืชื ื”ื’ื•ืช ื‘ืœืชื™ ืฆืคื•ื™ื” ื‘ื”ืžืฉืš ื ืชื™ื‘ ื”ื‘ื™ืฆื•ืข. ื›ืœื™ื ืื—ืจื™ื, ื›ืžื• staticcheck ืื• ืžื ืชื—ื™ื ืฉืœ ืชื•ื›ื ื™ืช ืžืœืื”, ื ื“ืจืฉื™ื ื›ื“ื™ ืœื”ื‘ื™ืŸ ืชื•ืคืขื•ืช ืœื•ื•ืื™ ื›ืืœื”.
  • ืื™ืŸ ืชืžื™ื›ื” ื‘ืžื“ื™ื ื™ื•ืช ื˜ื™ืคื•ืœ ื‘ืฉื’ื™ืื•ืช ืžื•ืชืืžืช ืื™ืฉื™ืช
    ื‘ื ื™ื’ื•ื“ ืœืคืœื˜ืคื•ืจืžื•ืช ืžื•ื ื—ื•ืช-ื›ืœืœื™ื, errcheck ืื™ื ื• ืžืืคืฉืจ ืœืš ืœื”ื’ื“ื™ืจ ืืกื˜ืจื˜ื’ื™ื•ืช ืžืฉืœืš ืœื˜ื™ืคื•ืœ ื‘ืฉื’ื™ืื•ืช ืื• ืœืกืžืŸ ืงืจื™ืื•ืช ืคื•ื ืงืฆื™ื” ืžืกื•ื™ืžื•ืช ื›ืคื˜ื•ืจื•ืช. ื”ืชืฆื•ืจื” ืžื•ื’ื‘ืœืช ืœืื™ ื”ื›ืœืœืช ื—ื‘ื™ืœื•ืช ืื• ืคื•ื ืงืฆื™ื•ืช ืฉืœืžื•ืช ืœืคื™ ืฉื, ื“ื‘ืจ ืฉืขืฉื•ื™ ืœื ืœืกืคืง ื’ืžื™ืฉื•ืช ืžืกืคืงืช ื‘ืžืขืจื›ื•ืช ื’ื“ื•ืœื•ืช ื™ื•ืชืจ.
  • ืฉืงื˜ ืขืœ ื›ืฉืœื™ื ืฉืื™ื ื ืฉื’ื™ืื•ืช
    ื”ืคื•ื ืงืฆื™ื” errcheck ืœื ืชืืชืจ ืฉื™ืžื•ืฉ ืœืจืขื” ื‘ืคื•ื ืงืฆื™ื•ืช ืฉืžืื•ืชืชื•ืช ืขืœ ื›ืฉืœ ื‘ืืžืฆืขื•ืช ืžื ื’ื ื•ื ื™ื ืื—ืจื™ื ื›ื’ื•ืŸ ืคืื ื™ืงื”, ืขืจื›ื™ื ื‘ื•ืœื™ืื ื™ื™ื ืžื•ื—ื–ืจื™ื ืื• ืงื•ื“ื™ ืกื˜ื˜ื•ืก. ื”ื™ื ื‘ื•ื“ืงืช ืจืง ืืช ื”ื ื•ื›ื—ื•ืช ื•ื”ืฉื™ืžื•ืฉ ื‘ืกื•ื’ื™ ื”ื—ื–ืจืช ืฉื’ื™ืื”.

errcheck ื”ื•ื ื›ืœื™ ืžืžื•ืงื“ ื”ืžืงื“ื ืฉื™ื˜ื•ืช ืขื‘ื•ื“ื” ืžื•ืžืœืฆื•ืช ืกื‘ื™ื‘ ืžื•ื“ืœ ื”ืฉื’ื™ืื•ืช ื”ืžืคื•ืจืฉื•ืช ืฉืœ Go. ื”ื•ื ืื™ื“ื™ืืœื™ ื›ื—ืœืง ืžืฆื™ื ื•ืจ ื ื™ืชื•ื— ืกื˜ื˜ื™ ืฉื›ื‘ืชื™ ืฉื‘ื• ืœื›ืœ ื›ืœื™ ื™ืฉ ืžื˜ืจื” ืกืคืฆื™ืคื™ืช. ืขื‘ื•ืจ ืฆื•ื•ืชื™ื ื”ืžืขื“ื™ืคื™ื ื˜ื™ืคื•ืœ ืฉื’ื™ืื•ืช ื—ื–ืง ื•ืขืงื‘ื™, errcheck ืžืฆื™ืข ืจืฉืช ื‘ื™ื˜ื—ื•ืŸ ืงืœืช ืžืฉืงืœ ื•ื™ืขื™ืœื”.

ื—ื•ืกืจ ืžืฉืžืขื•ืช

ื—ื•ืกืจ ืžืฉืžืขื•ืช ื”ื•ื ื›ืœื™ ื ื™ืชื•ื— ืกื˜ื˜ื™ ืงื˜ืŸ ืืš ืฉื™ืžื•ืฉื™ ืฉื ื•ืขื“ ืœื–ื”ื•ืช ื”ืงืฆืื•ืช ื‘ืงื•ื“ Go ืฉืžืขื•ืœื ืœื ื ืžืฆืื•ืช ื‘ืฉื™ืžื•ืฉ. ื”ื•ื ืžืกืžืŸ ืžืงืจื™ื ืฉื‘ื”ื ืœืžืฉืชื ื” ืžื•ืงืฆื” ืขืจืš, ืืš ืขืจืš ื–ื” ืžื•ื—ืœืฃ ืœืคื ื™ ืงืจื™ืืชื• ืื• ืฉืœื ื ื™ื’ืฉ ืืœื™ื• ื›ืœืœ. ื—ื•ืกืจ ื™ืขื™ืœื•ืช ื–ื” ื‘ื“ืจืš ื›ืœืœ ืื™ื ื• ืžื›ื•ื•ืŸ ื•ื™ื›ื•ืœ ืœื”ืฆื‘ื™ืข ืขืœ ืœื•ื’ื™ืงื” ืžืชื”, ืคื™ืงื•ื— ืฉืœ ื”ืžืคืชื— ืื• ืฉื›ื—ืช ืฉื™ืคื•ืฅ ืžื—ื“ืฉ.

ื”ื›ืœื™ ืคื•ืขืœ ื‘ืžื”ื™ืจื•ืช ื•ืžืฉืชืœื‘ ื‘ืงืœื•ืช ืขื ืขื•ืจื›ื™ื, ืฆื™ื ื•ืจื•ืช CI/CD ื•ื—ื‘ื™ืœื•ืช meta-linter ื›ืžื• golangci-lintื–ื” ืขื•ื–ืจ ืœืฉืžื•ืจ ืขืœ ื ื™ืงื™ื•ืŸ ื‘ืกื™ืกื™ ื”ืงื•ื“ ืขืœ ื™ื“ื™ ื–ื™ื”ื•ื™ ืคืขื•ืœื•ืช ื‘ื–ื‘ื–ื ื™ื•ืช ื•ืขื™ื“ื•ื“ ืฉื™ืžื•ืฉ ืงืจื™ื ื•ืžืžื•ืงื“ ื™ื•ืชืจ ื‘ืžืฉืชื ื™ื. ื‘ืžืขืจื›ื•ืช ืจื’ื™ืฉื•ืช ืœื‘ื™ืฆื•ืขื™ื ืื• ืžืขืจื›ื•ืช ืฉืขื‘ืจื• ื‘ื™ืงื•ืจืช ืจื‘ื”, ื”ืกืจืช ื—ื•ืกืจ ื™ืขื™ืœื•ืช ื›ื–ื” ื™ื›ื•ืœื” ื’ื ืœืชืจื•ื ืœืชื—ื–ื•ืงื” ื˜ื•ื‘ื” ื™ื•ืชืจ ื•ืœื”ืคื—ืชืช ืžื•ืจื›ื‘ื•ืช.

ineffassign ื™ืขื™ืœ ื‘ืžื™ื•ื—ื“ ื‘ืคืจื•ื™ืงื˜ื™ื ื’ื“ื•ืœื™ื ืฉื‘ื”ื ื–ื™ื”ื•ื™ ื™ื“ื ื™ ืฉืœ ื‘ืขื™ื•ืช ืงื•ื“ ืฉืงื˜ ื›ืืœื” ื”ื•ืคืš ืœื‘ืœืชื™ ืืคืฉืจื™.

ืžื’ื‘ืœื•ืช ื•ื”ื™ืงืฃ ืชืคืขื•ืœื™ ืฉืœ ืื™-ื”ืงืฆืื”

ืœืžืจื•ืช ื”ืชื•ืขืœืช ืฉืœื•, ineffassign ืžื™ื•ืขื“ ืœืžืงืจื” ืฉื™ืžื•ืฉ ืฆืจ ื•ื™ืฉ ืœื• ืžืกืคืจ ืžื’ื‘ืœื•ืช ื”ืžื’ื‘ื™ืœื•ืช ืืช ืชืคืงื™ื“ื• ื‘ื ื™ืชื•ื— ืงื•ื“ ืžืงื™ืฃ:

  • ื”ืชืžืงื“ื•ืช ื‘ื ื•ืฉื ื™ื—ื™ื“
    ineffassign ืžื—ืคืฉ ืจืง ื”ืงืฆืื•ืช ืžื™ื•ืชืจื•ืช ืื• ืฉืื™ื ืŸ ื‘ืฉื™ืžื•ืฉ. ื”ื•ื ืื™ื ื• ืžื–ื”ื” ื—ื•ืกืจ ื™ืขื™ืœื•ืช ืื—ืจ ื›ื’ื•ืŸ ื—ื™ืฉื•ื‘ื™ื ืžื™ื•ืชืจื™ื, ื™ื™ื‘ื•ื โ€‹โ€‹โ€‹โ€‹ืฉืื™ื ื• ื‘ืฉื™ืžื•ืฉ ืื• ืœื•ืœืื•ืช ืžื™ื•ืชืจื•ืช. ื”ืชื•ืขืœืช ืฉืœื• ืžื•ื’ื‘ืœืช ืœืกื•ื’ ืกืคืฆื™ืคื™ ื–ื” ืฉืœ ื—ื•ืกืจ ื™ืขื™ืœื•ืช.
  • ืื™ืŸ ืžื•ื“ืขื•ืช ืกืžื ื˜ื™ืช ืื• ื”ืชื ื”ื’ื•ืชื™ืช
    ื”ื›ืœื™ ืื™ื ื• ืžื ืชื— ืืช ืœื•ื’ื™ืงืช ื”ืชื•ื›ื ื™ืช, ื•ื’ื ืื™ื ื• ืžื‘ื™ืŸ ืืช ื–ืจื™ืžืช ื”ืขืจื›ื™ื ื‘ื™ืŸ ืงืจื™ืื•ืช ืœืคื•ื ืงืฆื™ื•ืช. ื”ื•ื ืื™ื ื• ื™ื›ื•ืœ ืœืงื‘ื•ืข ื”ืื ื”ื”ืงืฆืื” ืžืฉืคื™ืขื” ืขืœ ื”ืชื ื”ื’ื•ืช ื”ืžืขืจื›ืช ื‘ืขืงื™ืคื™ืŸ, ื›ื’ื•ืŸ ื‘ืืžืฆืขื•ืช ืจื™ืฉื•ื, ืชื•ืคืขื•ืช ืœื•ื•ืื™ ืื• ื’ื™ืฉื” ืžืฉืชืงืคืช.
  • ืชื•ืฆืื•ืช ื—ื™ื•ื‘ื™ื•ืช ืฉื’ื•ื™ื•ืช ื‘ืชืจื—ื™ืฉื™ื ืžื•ืจื›ื‘ื™ื
    ื‘ืžืงืจื™ ืฉื™ืžื•ืฉ ืžืชืงื“ืžื™ื ื™ื•ืชืจ, ื›ื’ื•ืŸ ื”ืงืฆืื•ืช ื‘ืชื•ืš ืขื ืคื™ื ืžื•ืชื ื™ื, ืกื’ื™ืจื•ืช ืื• ืžื‘ื ื™ ืœื•ืœืื”, ineffassign ืขืœื•ืœ ืœืกืžืŸ ื‘ืื•ืคืŸ ืฉื’ื•ื™ ืžืฉืชื ื” ื›ืœื ื‘ืฉื™ืžื•ืฉ. ื–ื” ื“ื•ืจืฉ ืžืžืคืชื—ื™ื ืœืืžืช ื™ื“ื ื™ืช ื›ืœ ืžื•ืคืข ืฉืกื•ืžืŸ ื‘ื“ื’ืœ.
  • ืื™ืŸ ื”ืฆืขื•ืช ืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ื”ืงืฉืจื™ืช
    ืœืžืจื•ืช ืฉ-ineffassign ืžืฆื‘ื™ืข ืขืœ ื”ื‘ืขื™ื”, ื”ื•ื ืื™ื ื• ืžืฆื™ืข ื”ืฆืขื•ืช ืœืชื™ืงื•ืŸ ืงื•ื“ ืžื—ื“ืฉ ืื• ืชื™ืงื•ื ื™ ืงื•ื“ ืื•ื˜ื•ืžื˜ื™ื™ื. ืžืคืชื—ื™ื ื—ื™ื™ื‘ื™ื ืœืงื‘ื•ืข ื‘ืื•ืคืŸ ื™ื“ื ื™ ื›ื™ืฆื“ ืœืคืชื•ืจ ืื• ืœื”ืกื™ืจ ื‘ืฆื•ืจื” ื”ื˜ื•ื‘ื” ื‘ื™ื•ืชืจ ืืช ื”ื”ืงืฆืื” ื”ืœื ื™ืขื™ืœื”.
  • ื”ืชืืžื” ืื™ืฉื™ืช ืื• ืกื™ื ื•ืŸ ืžื•ื’ื‘ืœื™ื
    ื”ื›ืœื™ ื—ืกืจ ืืคืฉืจื•ื™ื•ืช ืชืฆื•ืจื” ืžืชืงื“ืžื•ืช. ื”ื•ื ืื™ื ื• ืžืืคืฉืจ ื“ื™ื›ื•ื™ ืื–ื”ืจื•ืช ืขื‘ื•ืจ ืžืฉืชื ื™ื, ืกื•ื’ื™ื ืื• ื”ืงืฉืจื™ื ืฉืœ ืคื•ื ืงืฆื™ื•ืช ืกืคืฆื™ืคื™ื™ื. ื‘ื‘ืกื™ืกื™ ืงื•ื“ ื’ื“ื•ืœื™ื ืื• ืžื“ื•ืจ ืงื•ื“ื, ื”ื“ื‘ืจ ืขืœื•ืœ ืœื”ื•ื‘ื™ืœ ืœืจืขืฉ ืžื•ื’ื–ื ื‘ืžื”ืœืš ื‘ื™ืงื•ืจื•ืช.

ineffassign ืžืฉืžืฉ ื‘ืฆื•ืจื” ื”ื˜ื•ื‘ื” ื‘ื™ื•ืชืจ ื›ื—ืœืง ืžืฉืœื‘ ืงืœื™ืœ ืฉืœ ืื‘ื˜ื—ืช ืื™ื›ื•ืช. ื”ื•ื ืžืฆืœื™ื— ื‘ืขื™ื‘ื•ื“ ืžื—ื“ืฉ ืงื˜ืŸ ื™ื•ืชืจ, ืกืงื™ืจื•ืช ืฉืœ ื‘ืงืฉื•ืช ืžืฉื™ื›ื” ื•ืชื”ืœื™ื›ื™ ืขื‘ื•ื“ื” ืฉืœ CI ืฉื‘ื”ื ืฉืžื™ืจื” ืขืœ ื‘ืกื™ืก ืงื•ื“ ืจื–ื” ื•ืžืžื•ืงื“ ื”ื™ื ื‘ืขื“ื™ืคื•ืช ืขืœื™ื•ื ื”. ืœืงื‘ืœืช ืชื•ื‘ื ื” ืจื—ื‘ื” ื™ื•ืชืจ ืœื’ื‘ื™ ื‘ื™ืฆื•ืขื™ื, ืืจื›ื™ื˜ืงื˜ื•ืจื” ืื• ื ื›ื•ื ื•ืช ืœื•ื’ื™ืช, ื™ืฉ ืœื”ืฉืชืžืฉ ื‘ื• ืœืฆื“ ื›ืœื™ ื ื™ืชื•ื— ืกื˜ื˜ื™ ืžืงื™ืคื™ื ื™ื•ืชืจ.

gosec

gosec (ื‘ื•ื“ืง ืื‘ื˜ื—ื” ืฉืœ Golang) ื”ื•ื ื›ืœื™ ื ื™ืชื•ื— ืกื˜ื˜ื™ ื™ื™ืขื•ื“ื™ ื”ืžืชืžืงื“ ื‘ื–ื™ื”ื•ื™ ืคื’ื™ืขื•ื™ื•ืช ืื‘ื˜ื—ื” ื‘ืงื•ื“ ืฉืœ Golang. ื”ื•ื ืกื•ืจืง ืงื‘ืฆื™ ืžืงื•ืจ ื›ื“ื™ ืœื–ื”ื•ืช ื“ืคื•ืกื™ื ืฉืขืœื•ืœื™ื ืœื—ืฉื•ืฃ ื™ื™ืฉื•ืžื™ื ืœืื™ื•ืžื™ื ื™ื“ื•ืขื™ื ื›ื’ื•ืŸ ื”ื–ืจืงืช ืคืงื•ื“ื•ืช, ืื™ืฉื•ืจื™ื ืžืงื•ื“ื“ื™ื, ืฉื™ืžื•ืฉ ืœื ื ื›ื•ืŸ ื‘-TLS, ืงืจื™ืคื˜ื•ื’ืจืคื™ื” ื—ืœืฉื” ืื• ืื™ืžื•ืช ืงืœื˜ ืœื ืžืกื•ืžืŸ.

gosec, ืฉืคื•ืชื— ื›ื“ื™ ืœืกื™ื™ืข ืœืžืคืชื—ื™ื ืœื”ืขื‘ื™ืจ ืืช ื”ืื‘ื˜ื—ื” ืฉืžืืœื” ื‘ืชื”ืœื™ืš ื”ืคื™ืชื•ื—, ืžืฉืชืœื‘ ื‘ืงืœื•ืช ื‘ืฆื™ื ื•ืจื•ืช CI, IDE ืœืžืคืชื—ื™ื ื•ื–ืจื™ืžื•ืช ืขื‘ื•ื“ื” ืจื—ื‘ื•ืช ื™ื•ืชืจ ืฉืœ ืื‘ื˜ื—ื”. ื”ื•ื ืžื ืชื— ื—ื‘ื™ืœื•ืช ืกื˜ื ื“ืจื˜ื™ื•ืช ื•ื—ื‘ื™ืœื•ืช ืฉืœ ืฆื“ ืฉืœื™ืฉื™ ื•ืžืกืžืŸ ืงื•ื“ ื”ืชื•ืื ืœืงื‘ื•ืฆืช ื›ืœืœื™ ืื‘ื˜ื—ื” ืžื•ื’ื“ืจื™ื ืžืจืืฉ. ื”ื›ืœื™ ืžืกืคืง ื”ืงืฉืจ ืฉื•ืจื” ืื—ืจ ืฉื•ืจื” ืœื›ืœ ืžืžืฆื, ื™ื—ื“ ืขื ื”ืฆืขื•ืช ืœืชื™ืงื•ืŸ ื•ืกื™ื•ื•ื’ื™ CWE (ืกืคื™ืจืช ื—ื•ืœืฉื•ืช ื ืคื•ืฆื•ืช) ืœืžื™ืคื•ื™ ื•ืžืขืงื‘ ืงืœื™ื ื™ื•ืชืจ.

gosec ืชื•ืžืš ื‘ืคืœื˜ JSON, ืชืฆื•ืจืช ื›ืœืœื™ื ื•ืจืžื•ืช ื—ื•ืžืจื”, ืžื” ืฉื”ื•ืคืš ืื•ืชื• ืžืชืื™ื ืœืฆื•ื•ืชื™ื ืขื ื™ืขื“ื™ ืชืื™ืžื•ืช ื‘ืจืžื” ื’ื‘ื•ื”ื” ื•ืžื•ื“ืขื•ืช ื™ื•ืžื™ื•ืžื™ืช ืœืคื’ื™ืขื•ื™ื•ืช. ืื™ืžื•ืฅ ื”ืคืชืจื•ืŸ ื’ื“ืœ ื‘ื”ืชืžื“ื” ื‘ืฆื•ื•ืชื™ Go ืฉื ื•ืชื ื™ื ืขื“ื™ืคื•ืช ืœ-DevSecOps ื•ืœืื™ืžื•ืช ืื‘ื˜ื—ื” ืžืชืžืฉืš.

ื”ื™ื›ืŸ ืฉื™ืฉ ืœ-gosec ืžืงื•ื ืœืฆืžื•ื—

ืœืžืจื•ืช ื”ื™ื•ืชื• ื›ืœื™ ื—ื™ื•ื ื™ ืœืคื™ืชื•ื— ื”ืžืชืžืงื“ ื‘ืื‘ื˜ื—ื”, ืœ-gosec ื™ืฉ ืžื’ื‘ืœื•ืช ืฉืžืฉืชืžืฉื™ื ืฆืจื™ื›ื™ื ืœื”ื™ื•ืช ืžื•ื“ืขื™ื ืœื”ืŸ ื‘ืขืช โ€‹โ€‹ืฉื™ืžื•ืฉ ื‘ื• ืœื‘ื™ืงื•ืจืช ืžืขืžื™ืงื” ืื• ื‘ืจืžืช ื”ืืจื’ื•ืŸ:

  • ื–ื™ื”ื•ื™ ืžื‘ื•ืกืก ื›ืœืœื™ื ื‘ืœื‘ื“
    gosec ืžืฉืชืžืฉ ื‘ื”ืชืืžืช ืชื‘ื ื™ื•ืช ืกื˜ื˜ื™ืช ื›ื ื’ื“ ืงื‘ื•ืฆืช ื›ืœืœื™ื ืžื•ื’ื“ืจืช ืžืจืืฉ. ืœืžืจื•ืช ืฉื”ื•ื ื™ืขื™ืœ ืขื‘ื•ืจ ื‘ืขื™ื•ืช ื™ื“ื•ืขื•ืช, ื”ื•ื ืื™ื ื• ื™ื›ื•ืœ ืœื–ื”ื•ืช ื“ืคื•ืกื™ ืคื’ื™ืขื•ืช ืžื•ืจื›ื‘ื™ื ืื• ืœื ื™ื“ื•ืขื™ื ื”ื“ื•ืจืฉื™ื ื ื™ืชื•ื— ื”ืชื ื”ื’ื•ืชื™ ืื• ืชืœื•ื™ ื”ืงืฉืจ.
  • ืื™ืŸ ืžืขืงื‘ ืื—ืจ ื–ืจื™ืžืช ื ืชื•ื ื™ื
    ื”ื›ืœื™ ืื™ื ื• ืžื‘ืฆืข ื ื™ืชื•ื— ื–ื™ื”ื•ืžื™ื ืื• ืžืขืงื‘ ืื—ืจ ืžืฉืชื ื™ื ืขืœ ืคื ื™ ืงืจื™ืื•ืช ืคื•ื ืงืฆื™ื” ืžืจื•ื‘ื•ืช. ื”ื•ื ืื™ื ื• ื™ื›ื•ืœ ืœืขืงื•ื‘ ืื—ืจ ืžื—ื–ื•ืจ ื”ื—ื™ื™ื ืฉืœ ืงืœื˜ ื”ืžืฉืชืžืฉ ืื• ืขืจื›ื™ ืชืฆื•ืจื” ื“ืจืš ื”ืžืขืจื›ืช, ื“ื‘ืจ ื”ืžื’ื‘ื™ืœ ืืช ื™ื›ื•ืœืชื• ืœื–ื”ื•ืช ืฉืจืฉืจืื•ืช ืคืจืฆื•ืช ืžืจื•ื‘ื•ืช ืฉืœื‘ื™ื.
  • ืžื•ื“ืขื•ืช ืžื•ื’ื‘ืœืช ืœืžืงื‘ื™ืœื™ื•ืช
    ื‘ืขื™ื•ืช ืื‘ื˜ื—ื” ื”ื ื•ื‘ืขื•ืช ืžืชื ืื™ ืžืจื•ืฅ, ื’ื™ืฉื” ืžืงื‘ื™ืœื” ืœื ืชื•ื ื™ื ืžืฉื•ืชืคื™ื ืื• ืฉื’ืจื•ืช ื’ื•ืจ (gorutines) ืžืกื•ื ื›ืจื ื•ืช ื‘ืฆื•ืจื” ืœื ื ื›ื•ื ื” ืœื ื™ื–ื•ื”ื• ืขืœ ื™ื“ื™ gosec. ืืœื” ื“ื•ืจืฉื•ืช ื ื™ืชื•ื— ืกื˜ื˜ื™ ืื• ื“ื™ื ืžื™ ืžืขืžื™ืง ื™ื•ืชืจ ื›ื“ื™ ืœื—ืฉื•ืฃ.
  • ืชื•ืฆืื•ืช ื—ื™ื•ื‘ื™ื•ืช ืฉื’ื•ื™ื•ืช ื•ื”ืชืจืื•ืช ืœืœื ื”ืงืฉืจ
    ืžื›ื™ื•ื•ืŸ ืฉืœ-gosec ื—ืกืจ ื”ืงืฉืจ ืกืžื ื˜ื™, ื”ื•ื ืขืฉื•ื™ ืœืกืžืŸ ืงื•ื“ ืฉื”ื•ื ืžืื•ื‘ื˜ื— ืžื‘ื—ื™ื ื” ื˜ื›ื ื™ืช ืืš ืชื•ืื ืืช ื”ืžื‘ื ื” ืฉืœ ืชื‘ื ื™ื•ืช ืœื ืžืื•ื‘ื˜ื—ื•ืช. ืœื“ื•ื’ืžื”, ื”ื•ื ืขืฉื•ื™ ืœื”ื“ื’ื™ืฉ ืžื—ืจื•ื–ื•ืช ืคืกืื•ื“ื•-ืœื ืžืื•ื‘ื˜ื—ื•ืช ืฉืื™ื ืŸ ืจื’ื™ืฉื•ืช ื‘ืคื•ืขืœ, ืื• ืœื•ื’ื™ืงืช ื”ืฆืคื ื” ื‘ื˜ื•ื—ื” ืืš ื ืจืื™ืช ืœื ืฉื’ืจืชื™ืช.
  • ืื™ืŸ ืชื•ื‘ื ื•ืช ืื“ืจื™ื›ืœื™ื•ืช ืื• ืชืฆื•ืจืชื™ื•ืช
    ื”ื›ืœื™ ืื™ื ื• ื™ื›ื•ืœ ืœื”ืขืจื™ืš ืชืฆื•ืจื•ืช ืฉื’ื•ื™ื•ืช ื‘ืจืžืช ื”ืžืขืจื›ืช, ืชืœื•ื™ื•ืช ืœื ืžืื•ื‘ื˜ื—ื•ืช ืฉืœ ืฆื“ ืฉืœื™ืฉื™ ืื• ืฉื™ื˜ื•ืช ืื‘ื˜ื—ื” ืžืงื•ืจื™ื•ืช ื‘ืขื ืŸ. ื”ื•ื ืคื•ืขืœ ืืš ื•ืจืง ื‘ืจืžืช ืงื•ื“ ื”ืžืงื•ืจ ื•ืื™ื ื• ืžืงื™ื™ื ืื™ื ื˜ืจืืงืฆื™ื” ืขื ืคืจื™ื˜ื™ ื‘ื ื™ื™ื” ืื• ืžื“ื™ื ื™ื•ืช ื–ืžืŸ ืจื™ืฆื”.

gosec ื”ื•ื ื—ืœืง ื—ื™ื•ื ื™ ื‘ื›ืœ ืขืจื›ืช ื›ืœื™ื ืœืื‘ื˜ื—ื” ืฉืœ Go. ื”ื•ื ืคื•ืขืœ ื‘ืฆื•ืจื” ื”ื˜ื•ื‘ื” ื‘ื™ื•ืชืจ ื›ืืฉืจ ื”ื•ื ืžืฉืžืฉ ื›ืฉื•ืžืจ ืกืฃ ื‘ืฉืœื‘ ืžื•ืงื“ื ื‘ืžื—ื–ื•ืจ ื”ืคื™ืชื•ื— ื›ื“ื™ ืœื–ื”ื•ืช ืคื’ืžื™ื ื‘ืจื•ืจื™ื ืœืคื ื™ ืฉื”ืงื•ื“ ืžื’ื™ืข ืœืฉืœื‘ ื”ื‘ืžื” ืื• ื”ื™ื™ืฆื•ืจ. ืœืงื‘ืœืช ืจืžืช ืื‘ื˜ื—ื” ืžืœืื” ื™ื•ืชืจ, ืฆื•ื•ืชื™ื ืฆืจื™ื›ื™ื ืœืฉืœื‘ ืื•ืชื• ืขื ืกืจื™ืงืช ื–ืžืŸ ืจื™ืฆื”, ืกืงื™ืจืช ืงื•ื“ ื™ื“ื ื™ืช ื•ื›ืœื™ื ื”ืžืกื•ื’ืœื™ื ืœืขืงื•ื‘ ืื—ืจ ื‘ืงืจื” ืžืขืžื™ืงื” ื™ื•ืชืจ ื•ื”ืชื ื”ื’ื•ืช ื–ืจื™ืžืช ื ืชื•ื ื™ื.

ื’ื•ื‘ื•ืœืŸ ืฆ'ืง

ื’ื•ื‘ื•ืœืŸ ืฆ'ืง ื”ื•ื ื›ืœื™ ื ื™ืชื•ื— ืคื’ื™ืขื•ื™ื•ืช ืจืฉืžื™ ืฉืœ Go ืฉืคื•ืชื— ืขืœ ื™ื“ื™ ืฆื•ื•ืช Go. ื”ื•ื ืžืžื ืฃ ืืช ืžืกื“ ื”ื ืชื•ื ื™ื ืฉืœ ืคื’ื™ืขื•ื™ื•ืช Go ื›ื“ื™ ืœื–ื”ื•ืช ืคื’ืžื™ ืื‘ื˜ื—ื” ื™ื“ื•ืขื™ื ื‘ืชืœื•ืช ื”ืงื•ื“ ืฉืœืš ื•ื‘ืฉื™ืžื•ืฉ ืกื˜ื ื“ืจื˜ื™ ื‘ืกืคืจื™ื™ื”. ื‘ืžืงื•ื ืœืกืจื•ืง ืื—ืจ ื“ืคื•ืกื™ื ืœื ืžืื•ื‘ื˜ื—ื™ื ื‘ืงื•ื“ ื”ืžืงื•ืจ ื›ืžื• gosec, govulncheck ืžืชืžืงื“ ื‘ืฉืืœื” ื”ืื ื”ืคืจื•ื™ืงื˜ ืฉืœืš ืžื™ื™ื‘ื ื—ื‘ื™ืœื•ืช ืฉื“ื•ื•ื—ื• ื‘ืคื•ืžื‘ื™ ื›ืคื’ื™ืขื•ืช.

ื”ื›ืœื™ ืžื‘ืฆืข ื ื™ืชื•ื— ืกื˜ื˜ื™ ื•ื ื™ืชื•ื— ืžื‘ื•ืกืก ืงืจื™ืื•ืช. ืžืฉืžืขื•ืช ื”ื“ื‘ืจ ื”ื™ื ืฉื”ื•ื ืœื ืจืง ืžืคืจื˜ ืžื•ื“ื•ืœื™ื ืžื•ืฉืคืขื™ื; ื”ื•ื ื”ื•ืœืš ืฆืขื“ ืงื“ื™ืžื” ืขืœ ื™ื“ื™ ืื™ืžื•ืช ื”ืื ื”ืงื•ื“ ื”ืคื’ื™ืข ืื›ืŸ ื ื™ืชืŸ ืœื’ื™ืฉื” ืžื ืชื™ื‘ื™ ื”ืงืจื™ืื” ืฉืœ ื”ืืคืœื™ืงืฆื™ื” ืฉืœืš. ื–ื” ืžืคื—ื™ืช ืจืขืฉ ื•ื”ื•ืคืš ืืช ื”ื”ืชืจืื•ืช ืœื ื’ื™ืฉื•ืช ื”ืจื‘ื” ื™ื•ืชืจ ืžืืฉืจ ืกื•ืจืงื™ ืชืœื•ืช ืžืกื•ืจืชื™ื™ื.

govulncheck ืžืฉื•ืœื‘ ื”ื™ื˜ื‘ ืขื ื”- go ื”ืคืงื•ื“ื” ืชื•ืžื›ืช ื‘ืžื•ื“ื•ืœื™ื ื•ื‘ืชื’ื™ื•ืช ื‘ื ื™ื™ื”, ื•ืžื™ื•ืขื“ืช ื”ืŸ ืœืžื›ื•ื ื•ืช ืžืคืชื—ื™ื ื•ื”ืŸ ืœืžืขืจื›ื•ืช CI. ื”ืคืœื˜ ืฉืœื” ื›ื•ืœืœ ืžื–ื”ื™ CVE, ืชื™ืื•ืจื™ ืคื’ื™ืขื•ื™ื•ืช, ืกืžืœื™ื ืžื•ืฉืคืขื™ื ื•ืืกื˜ืจื˜ื’ื™ื•ืช ืชื™ืงื•ืŸ ืžื•ืฆืขื•ืช ื›ื’ื•ืŸ ืฉื“ืจื•ื’ ื’ืจืกืื•ืช ืžื•ื“ื•ืœ ืกืคืฆื™ืคื™ื•ืช.

ืžื’ื‘ืœื•ืช ื•ื’ื‘ื•ืœื•ืช ืฉืœ govulncheck

ื‘ืขื•ื“ ืฉ-govulncheck ืžืกืคืง ืฉื›ื‘ื” ื—ืฉื•ื‘ื” ืฉืœ ื‘ื™ืงื•ืจืช ืชืœื•ื™ื•ืช ืื•ื˜ื•ืžื˜ื™ืช, ื”ื™ืงืคื• ืžืฆื•ืžืฆื ื‘ืžื›ื•ื•ืŸ. ืจืื•ื™ ืœืฆื™ื™ืŸ ืืช ื”ืžื’ื‘ืœื•ืช ื”ื‘ืื•ืช ืขื‘ื•ืจ ืฆื•ื•ืชื™ ืคื™ืชื•ื— ื”ืžืืžืฆื™ื ืื•ืชื• ื›ื—ืœืง ืžืืกื˜ืจื˜ื’ื™ื™ืช ืื‘ื˜ื—ื” ืจื—ื‘ื” ื™ื•ืชืจ:

  • ืžื–ื”ื” ืจืง ืคื’ื™ืขื•ื™ื•ืช ื™ื“ื•ืขื•ืช
    govulncheck ืื™ื ื• ื™ื›ื•ืœ ืœื–ื”ื•ืช ืคื’ื™ืขื•ื™ื•ืช ื™ื•ื ืืคืก ืื• ื‘ืขื™ื•ืช ืฉื˜ืจื ื“ื•ื•ื—ื• ืœืžืกื“ ื”ื ืชื•ื ื™ื ืฉืœ ื”ืคื’ื™ืขื•ื™ื•ืช ืฉืœ Go. ื™ืขื™ืœื•ืชื• ืชืœื•ื™ื” ืœื—ืœื•ื˜ื™ืŸ ื‘ื–ืžืŸ ื•ื‘ืฉืœืžื•ืช ืฉืœ ื”ื•ื“ืขื•ืช CVE ื•ื”ื•ื“ืขื•ืช ื™ื™ืขื•ืฅ ืฉืคื•ืจืกืžื•.
  • ืื™ืŸ ื–ื™ื”ื•ื™ ืฉืœ ื“ืคื•ืกื™ ืงื•ื“ ืœื ื‘ื˜ื•ื—ื™ื
    ื”ื›ืœื™ ืื™ื ื• ื‘ื•ื“ืง ืืช ืงื•ื“ ื”ืžืงื•ืจ ืฉืœืš ืœืื™ืชื•ืจ ืชื‘ื ื™ื•ืช ืื‘ื˜ื—ื”, ืคื’ืžื™ื ืœื•ื’ื™ื™ื ืื• ืฉื™ื˜ื•ืช ืขื‘ื•ื“ื” ืžืกื•ื›ื ื•ืช. ื‘ืขื™ื•ืช ื›ื’ื•ืŸ ืกื•ื“ื•ืช ืงืฉื™ื—ื™ื, ืฉื’ื™ืื•ืช ืฉืœื ื ื‘ื“ืงื• ืื• ืงืจื™ืคื˜ื•ื’ืจืคื™ื” ื—ืœืฉื” ื™ืขื‘ืจื• ืžืขื™ื ื™ื• ืืœื ืื ื›ืŸ ื”ืŸ ื—ืœืง ืžื—ื‘ื™ืœื” ืคื’ื™ืขื” ื™ื“ื•ืขื”.
  • ืžื•ื“ื•ืœื™ื ืกื˜ื˜ื™ื™ื ื‘ืขืœื™ ื”ื™ืงืฃ ืžื•ื’ื‘ืœ ืœืฉื™ืžื•ืฉ
    govulncheck ืžื ืชื— ืจืง ืžื•ื“ื•ืœื™ื ืฉืœ Go. ื”ื•ื ืื™ื ื• ื‘ื•ื“ืง ืกืคืจื™ื•ืช ืžืขืจื›ืช, ืชืœื•ื™ื•ืช C ื“ืจืš cgo, ืื• ืงื‘ืฆื™ื ื‘ื™ื ืืจื™ื™ื ื—ื™ืฆื•ื ื™ื™ื ืฉืขืœื•ืœื™ื ืœื”ื›ื ื™ืก ืคื’ื™ืขื•ื™ื•ืช ืœืกื‘ื™ื‘ืช ื–ืžืŸ ื”ืจื™ืฆื” ืฉืœืš.
  • ืขืœื•ืœ ืœื”ื—ืžื™ืฅ ื ื™ืฆื•ืœ ืขืงื™ืฃ ื‘ื–ืžืŸ ืจื™ืฆื”
    ืžื›ื™ื•ื•ืŸ ืฉื”ื•ื ืžืกืชืžืš ืขืœ ื ื™ืชื•ื— ื ื’ื™ืฉื•ืช ืกื˜ื˜ื™, ื”ื›ืœื™ ืขืœื•ืœ ืœืคืกืคืก ืคื’ื™ืขื•ื™ื•ืช ืฉืžื•ืคืขืœื•ืช ืจืง ื‘ืืžืฆืขื•ืช ื˜ืขื™ื ื” ื“ื™ื ืžื™ืช, ื”ืฉืชืงืคื•ืช, ืžืขืจื›ื•ืช ืชื•ืกืคื™ื ืื• ืฉื™ื ื•ื™ื™ื ื‘ืชืฆื•ืจืช ื–ืžืŸ ืจื™ืฆื”.
  • ืคืขืจื™ื ื‘ื›ื™ืกื•ื™ ื•ื‘ืคื™ื’ื•ืจ ืžืกื“ ื ืชื•ื ื™ื
    ืœืžืจื•ืช ืฉืžืกื“ ื”ื ืชื•ื ื™ื ืฉืœ ื”ืคื’ื™ืขื•ื™ื•ืช ืฉืœ Go ื ืฉืžืจ ื•ื’ื“ืœ, ื”ื•ื ืขืฉื•ื™ ืœืคื’ืจ ืื—ืจื™ ืžืขืงื‘ื™ ืื‘ื˜ื—ื” ืจื—ื‘ื™ื ื™ื•ืชืจ. ืคืจื•ื™ืงื˜ื™ื ืขื ืกืคืจื™ื•ืช ืœื ืกื˜ื ื“ืจื˜ื™ื•ืช ืื• ืคื ื™ืžื™ื•ืช ืขืฉื•ื™ื™ื ืœืงื‘ืœ ื›ื™ืกื•ื™ ื—ืœืงื™ ืื• ืœืœื ื”ืชืจืื•ืช ื›ืœืœ.

govulncheck ืžื•ืžืœืฅ ืœืฉื™ืžื•ืฉ ื›ื—ืœืง ืฉื’ืจืชื™ ืžืชื”ืœื™ืš ื ื™ื”ื•ืœ ื”ืชืœื•ื™ื•ืช ืฉืœืš. ื”ื•ื ืžืกืคืง ืชื•ื‘ื ื•ืช ืžื”ื™ืจื•ืช ื•ืืžื™ื ื•ืช ืœื’ื‘ื™ ื”ืื ื‘ืกื™ืก ื”ืงื•ื“ ืฉืœืš ืžื•ืฉืคืข ืžืคื’ืžื™ ืื‘ื˜ื—ื” ื™ื“ื•ืขื™ื ื•ื”ืื ืคื’ืžื™ื ืืœื” ื ื™ืชื ื™ื ืœื ื™ืฆื•ืœ ื‘ืื•ืคืŸ ืžืฆื™ืื•ืชื™. ืœื”ื’ื ื” ืžืœืื”, ื™ืฉ ืœืฉืœื‘ ืื•ืชื• ืขื ืกืจื™ืงืช ืื‘ื˜ื—ื” ื‘ืจืžืช ื”ืงื•ื“ ื•ื ื™ื”ื•ืœ ืคื’ื™ืขื•ื™ื•ืช ืชืคืขื•ืœื™ื•ืช.

Semgrep (ืขื‘ื•ืจ Go)

Semgrep ื”ื•ื ื›ืœื™ ื ื™ืชื•ื— ืกื˜ื˜ื™ ื’ืžื™ืฉ ื•ื™ืขื™ืœ ื‘ื™ื•ืชืจ ื”ืชื•ืžืš ื‘-Go ื‘ื™ืŸ ืฉืคื•ืช ืจื‘ื•ืช ืื—ืจื•ืช. ื”ื•ื ืžืฉืœื‘ ืืช ืคืฉื˜ื•ืช ื”ืชืืžืช ื”ืชื‘ื ื™ื•ืช ืฉืœ ื›ืœื™ื ื›ืžื• grep ืขื ื”ื”ื‘ื ื” ื”ืžื‘ื ื™ืช ืฉืœ ืžื ืชื—ื™ื ืกื˜ื˜ื™ื™ื ืžื•ื“ืจื ื™ื™ื. ื‘ืืžืฆืขื•ืช ื ื™ืชื•ื— ืขืฅ ืชื—ื‘ื™ืจ ืžื•ืคืฉื˜ (AST), Semgrep ืžืืคืฉืจ ืœืžืคืชื—ื™ื ืœื™ืฆื•ืจ ืื• ืœื™ื™ืฉื ื›ืœืœื™ื ืžื“ื•ื™ืงื™ื ื”ืžื–ื”ื™ื ืชื‘ื ื™ื•ืช ื”ืžื‘ื•ืกืกื•ืช ืขืœ ืžื‘ื ื” ืงื•ื“ ื•ืœื ืจืง ืขืœ ื˜ืงืกื˜ ื’ื•ืœืžื™.

ื‘ืคืจื•ื™ืงื˜ื™ื ืฉืœ Go, Semgrep ืžืฉืžืฉ ืœืขืชื™ื ืงืจื•ื‘ื•ืช ืœืื›ื™ืคืช ื ื•ื”ืœื™ ืงื™ื“ื•ื“ ืžืื•ื‘ื˜ื—ื™ื, ืื™ืžื•ืช ื”ื ื—ื™ื•ืช ืื“ืจื™ื›ืœื™ื•ืช ื•ืกื™ืžื•ืŸ ื‘ืขื™ื•ืช ืกื’ื ื•ื ื™ื•ืช ืื• ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช. ื”ื•ื ืžืฆื™ืข ื’ื™ืฉื” ืœืกืคืจื™ื™ื” ื”ื•ืœื›ืช ื•ื’ื“ืœื” ืฉืœ ื›ืœืœื™ื ืกืคืฆื™ืคื™ื™ื ืœ-Go ื•ืžืืคืฉืจ ืœืฆื•ื•ืชื™ื ืœื›ืชื•ื‘ ื‘ื“ื™ืงื•ืช ืžื•ืชืืžื•ืช ืื™ืฉื™ืช ื‘ืืžืฆืขื•ืช ืชื—ื‘ื™ืจ YAML ื ืงื™ ื•ืงืจื™ื. ื–ื” ืžืงืœ ืขืœ ื™ื™ืฉื•ืจ ื‘ื“ื™ืงื•ืช ืื™ื›ื•ืช ืงื•ื“ ืขื ืžื“ื™ื ื™ื•ืช ืคื™ืชื•ื— ืคื ื™ืžื™ืช.

Semgrep ืžืฉืชืœื‘ ื”ื™ื˜ื‘ ื‘ื–ืจื™ืžื•ืช ืขื‘ื•ื“ื” ื™ื•ืžื™ื•ืžื™ื•ืช. ื”ื•ื ืคื•ืขืœ ื‘ืžื”ื™ืจื•ืช ื•ืื™ื ื• ื“ื•ืจืฉ ืงื•ืžืคื™ืœืฆื™ื”, ืžื” ืฉื”ื•ืคืš ืื•ืชื• ืœืื™ื“ื™ืืœื™ ืขื‘ื•ืจ ืœื•ืœืื•ืช ืžืฉื•ื‘ ืžื”ื™ืจื•ืช ื‘-pre-commit hooks, ืื•ื˜ื•ืžืฆื™ื” ืฉืœ ื‘ืงืฉื•ืช ืžืฉื™ื›ื” ื•ืžืขืจื›ื•ืช ืื™ื ื˜ื’ืจืฆื™ื” ืจืฆื™ืคื”. ืžืžืฉืง ื”ืฉื•ืจืช ื”ืคืงื•ื“ื” (CLI) ื•ื”-API ืฉืœื• ื™ื“ื™ื“ื•ืชื™ื™ื ืœืžืคืชื—ื™ื, ื•ื”ื•ื ืžืกืคืง ืื‘ื—ื•ื ื™ื ืžืขืฉื™ื™ื ืฉืงืœ ืœื”ื‘ื™ืŸ ื•ืœืชืงืŸ.

ืžื’ื‘ืœื•ืช ื•ืชื—ื•ืžื™ื ืฉื™ืฉ ืœืงื—ืช ื‘ื—ืฉื‘ื•ืŸ ื‘ืขืช โ€‹โ€‹ืฉื™ืžื•ืฉ ื‘-Semgrep ืขื‘ื•ืจ Go

ืœืžืจื•ืช ืฉ-Semgrep ื”ื•ื ืจื‘ ืขื•ืฆืžื” ื•ื ื™ืชืŸ ืœื”ืชืืžื”, ื”ืืจื›ื™ื˜ืงื˜ื•ืจื” ืฉืœื• ืžืฆื™ื’ื” ืžืกืคืจ ืื™ืœื•ืฆื™ื ืฉื—ืฉื•ื‘ื™ื ืœืฆื•ื•ืชื™ื ื”ืžืกืชืžื›ื™ื ืขืœื™ื• ืœืฆื•ืจืš ื ื™ืชื•ื— ืกื˜ื˜ื™ ื‘ืคืจื•ื™ืงื˜ื™ื ืฉืœ Go.

Semgrep ืื™ื ื• ืžื‘ืฆืข ื ื™ืชื•ื— ืฉืœ ืชื•ื›ื ื™ืช ืฉืœืžื”. ื”ื•ื ืžืขืจื™ืš ื“ืคื•ืกื™ื ื‘ืชื•ืš ื˜ื•ื•ื—ื™ ืงื•ื“ ืžืงื•ืžื™ื™ื ืืš ืื™ื ื• ืขื•ืงื‘ ืื—ืจ ืงืจื™ืื•ืช ืคื•ื ืงืฆื™ื” ื‘ื™ืŸ ืงื‘ืฆื™ื ืื• ื—ื‘ื™ืœื•ืช. ืขื•ื‘ื“ื” ื–ื• ืื™ื ื” ืžืชืื™ืžื” ืœื’ื™ืœื•ื™ ื‘ืขื™ื•ืช ืžื•ืจื›ื‘ื•ืช ื”ื“ื•ืจืฉื•ืช ืžื‘ื˜ ืจื—ื‘ ื™ื•ืชืจ ืขืœ ื‘ืกื™ืก ื”ืงื•ื“, ื›ื’ื•ืŸ ืื™ื ื˜ืจืืงืฆื™ื•ืช ื‘ื™ืŸ ืคื•ื ืงืฆื™ื•ืช ื‘ืžื™ืงืจื•-ืฉื™ืจื•ืชื™ื ืžื‘ื•ื–ืจื™ื ืื• ื™ื™ืฉื•ืžื™ื ืžืจื•ื‘ื™ ืฉื›ื‘ื•ืช.

ื›ืžื• ื›ืŸ, ื—ืกืจื” ืชืžื™ื›ื” ื‘ื–ืจื™ืžืช ื‘ืงืจื” ื•ื‘ื ื™ืชื•ื— ื–ืจื™ืžืช ื ืชื•ื ื™ื. ืžืฉืžืขื•ืช ื”ื“ื‘ืจ ื”ื™ื ืฉ-Semgrep ืื™ื ื• ื™ื›ื•ืœ ืœืขืงื•ื‘ ืื—ืจ ื”ืื•ืคืŸ ืฉื‘ื• ื ืชื•ื ื™ื ืขื•ื‘ืจื™ื ื‘ื™ืŸ ืคื•ื ืงืฆื™ื•ืช ืื• ื›ื™ืฆื“ ืงืœื˜ ืžืฉืชืžืฉ ืขืฉื•ื™ ืœื”ืฉืคื™ืข ืขืœ ืคืขื•ืœื•ืช ืจื’ื™ืฉื•ืช. ื›ืœื™ื ื”ืžื‘ืฆืขื™ื ื ื™ืชื•ื— ื›ืชื ืื• ื‘ื•ื ื™ื ื’ืจืคื™ ื‘ื™ืฆื•ืข ืžืชืื™ืžื™ื ื™ื•ืชืจ ืœื—ืฉื™ืคืช ืคื’ื™ืขื•ื™ื•ืช ื ืกืชืจื•ืช ืื• ืœืžืขืงื‘ ืื—ืจ ื–ืจื™ืžื•ืช ืงืœื˜ ืœื ื‘ื˜ื•ื—ื•ืช.

ืชื•ืฆืื•ืช ื—ื™ื•ื‘ื™ื•ืช ืฉื’ื•ื™ื•ืช ื™ื›ื•ืœื•ืช ืœื”ื•ื•ืช ื“ืื’ื” ืื ื”ื›ืœืœื™ื ื ื›ืชื‘ื™ื ื‘ืื•ืคืŸ ื›ืœืœื™ ืžื“ื™. ื™ืขื™ืœื•ืชื” ืฉืœ Semgrep ืชืœื•ื™ื” ื‘ืžื™ื“ื” ืจื‘ื” ื‘ืื™ื›ื•ืช ื”ื›ืœืœื™ื. ืžืคืชื—ื™ื ื—ื™ื™ื‘ื™ื ืœื‘ื“ื•ืง ื•ืœืชื—ื–ืง ื‘ืงืคื™ื“ื” ืžืขืจื›ื™ ื›ืœืœื™ื ืžื•ืชืืžื™ื ืื™ืฉื™ืช ื›ื“ื™ ืœืžื ื•ืข ืจืขืฉ ืžื•ื’ื–ื ืื• ืกื™ื•ื•ื’ ืฉื’ื•ื™ ืฉืœ ืงื•ื“ ืžืื•ื‘ื˜ื—.

ื ื™ืชื•ื— ืžืงื‘ื™ืœื™ื•ืช ื”ื•ื ืชื—ื•ื ื ื•ืกืฃ ืฉื‘ื• Semgrep ืœื•ืงื” ื‘ื—ืกืจ. ื”ื•ื ืื™ื ื• ื™ื›ื•ืœ ืœืžื“ืœ ืฉื’ืจื•ืช ื’ื•ืจ, ืชืงืฉื•ืจืช ืขืจื•ืฆื™ื ืื• ืชื ืื™ ืžืจื•ืฅ. ื™ื™ืฉื•ืžื™ Go ื”ืžืกืชืžื›ื™ื ื‘ืžื™ื“ื” ืจื‘ื” ืขืœ ื“ืคื•ืกื™ ื‘ื™ืฆื•ืข ืžืงื‘ื™ืœื™ื ื™ื“ืจืฉื• ื›ืœื™ื ืกื˜ื˜ื™ื™ื ืขืžื•ืงื™ื ื™ื•ืชืจ ื›ื“ื™ ืœื”ืขืจื™ืš ื”ื™ื‘ื˜ื™ื ืืœื” ื‘ืฆื•ืจื” ื ื›ื•ื ื”.

ืœื‘ืกื•ืฃ, ืชื—ื–ื•ืงืช ื›ืœืœื™ Semgrep ืžื•ืกื™ืคื” ื”ื•ืฆืื•ืช ืืจื•ื›ื•ืช ื˜ื•ื•ื—. ื›ื›ืœ ืฉื”ืงื•ื“ ืžืชืคืชื— ื•ืกืคืจื™ื•ืช ื—ื“ืฉื•ืช ืžื•ืฆื’ื•ืช, ื™ื™ืชื›ืŸ ืฉื™ื”ื™ื” ืฆื•ืจืš ืœืขื“ื›ืŸ ืื• ืœื”ืจื—ื™ื‘ ืืช ื”ื›ืœืœื™ื ื”ืงื™ื™ืžื™ื. ืœืœื ืขื™ื‘ื•ื“ ืงื‘ื•ืข, ื›ืœืœื™ื ืžื™ื•ืฉื ื™ื ืขืœื•ืœื™ื ืœืคืกืคืก ื‘ืขื™ื•ืช ืงืจื™ื˜ื™ื•ืช ืื• ืœืกืžืŸ ื‘ืขื™ื•ืช ืœื ืจืœื•ื•ื ื˜ื™ื•ืช.

Semgrep ืžืชืื™ืžื” ื‘ื™ื•ืชืจ ืœืฆื•ื•ืชื™ื ื”ืžืขื•ื ื™ื™ื ื™ื ื‘ื‘ื“ื™ืงื•ืช ืžื”ื™ืจื•ืช ื•ืžืžื•ืงื“ื•ืช ืฉืœ ื“ืคื•ืกื™ ืงื•ื“ ืกืคืฆื™ืคื™ื™ื, ื–ื™ื”ื•ื™ ืžื•ืงื“ื ืฉืœ ืกื™ื›ื•ื ื™ื ื™ื“ื•ืขื™ื ื•ืื›ื™ืคื” ื’ืžื™ืฉื” ืฉืœ ืกื˜ื ื“ืจื˜ื™ื ืฉืœ ืงื™ื“ื•ื“ ืฆื•ื•ืชื™. ื›ืืฉืจ ืžืฉืชืžืฉื™ื ื‘ื” ื™ื—ื“ ืขื ืคืœื˜ืคื•ืจืžื•ืช ื ื™ืชื•ื— ืกื˜ื˜ื™ ืžืชืงื“ืžื•ืช ื™ื•ืชืจ, ื”ื™ื ื™ื›ื•ืœื” ืœืกืคืง ืฉื›ื‘ื” ื—ืฉื•ื‘ื” ืฉืœ ื ืจืื•ืช ื•ื‘ืงืจื” ืขืœ ืื™ื›ื•ืช ื”ืคื™ืชื•ื— ื”ื™ื•ืžื™ื•ืžื™ืช.

CodeQL (ืขื‘ื•ืจ Go)

CodeQL ื”ื•ื ืžื ื•ืข ื ื™ืชื•ื— ืกื˜ื˜ื™ ืจื‘ ืขื•ืฆืžื” ืฉืคื•ืชื— ืขืœ ื™ื“ื™ GitHub, ืฉื ื•ืขื“ ืœื–ื”ื•ืช ืคื’ื™ืขื•ื™ื•ืช ืงื•ื“ ืžื•ืจื›ื‘ื•ืช ื‘ืืžืฆืขื•ืช ื’ื™ืฉื” ื‘ืกื’ื ื•ืŸ ืžืกื“ ื ืชื•ื ื™ื. ื”ื•ื ืคื•ืขืœ ืขืœ ื™ื“ื™ ื”ืคื™ื›ืช ืงื•ื“ ืžืงื•ืจ ืœืžื•ื“ืœ ื ืชื•ื ื™ื ื™ื—ืกื™ ืฉื ื™ืชืŸ ืœื‘ืฆืข ืขืœื™ื• ืฉืื™ืœืชื•ืช ื‘ืืžืฆืขื•ืช ืฉืคื” ื”ื“ื•ืžื” ืœ-SQL. ืขื‘ื•ืจ ืคืจื•ื™ืงื˜ื™ื ืฉืœ Go, CodeQL ืžืืคืฉืจ ืฉืื™ืœืชื•ืช ืกืžื ื˜ื™ื•ืช ืขืžื•ืงื•ืช ืขืœ ืคื ื™ ื–ืจื™ืžืช ื‘ืงืจื”, ื–ืจื™ืžืช ื ืชื•ื ื™ื ื•ื ืชื™ื‘ื™ ื‘ื™ืฆื•ืข ื‘ื™ืŸ-ืคืจื•ืฆื“ื•ืจื™ื™ื.

ื‘ื ื™ื’ื•ื“ ืœืกื•ืจืงื™ื ืงืœื™ื ืื• ืกื•ืจืงื™ื ืžื‘ื•ืกืกื™ ื›ืœืœื™ื, CodeQL ืžืืคืฉืจ ืœื—ื•ืงืจื™ ืื‘ื˜ื—ื” ื•ืœืžืคืชื—ื™ื ืœื›ืชื•ื‘ ืฉืื™ืœืชื•ืช ืžื•ืชืืžื•ืช ืื™ืฉื™ืช ื”ืžื‘ื˜ืื•ืช ื“ืคื•ืกื™ ืคื’ื™ืขื•ื™ื•ืช ืกืคืฆื™ืคื™ื™ื ื‘ื™ื•ืชืจ. ื”ื•ื ืžืฉืžืฉ ื”ืŸ ืœืกืจื™ืงืช ืื‘ื˜ื—ื” ืจืฆื™ืคื” ื•ื”ืŸ ืœืžื—ืงืจ ืคื’ื™ืขื•ื™ื•ืช ืคืจื•ืืงื˜ื™ื‘ื™ ื‘ื‘ืกื™ืกื™ ืงื•ื“ ืฉืœ ืงื•ื“ ืคืชื•ื— ื•ืืจื’ื•ื ื™.

ื‘ื™ื™ืฉื•ืžื™ Go, ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘-CodeQL ื›ื“ื™ ืœื–ื”ื•ืช ืคื’ืžื™ ื”ื–ืจืงื”, ืฉื™ืžื•ืฉ ืœื ืžืื•ื‘ื˜ื— ื‘-API, ืื™ืžื•ืช ืงืœื˜ ื—ืกืจ ืื• ื’ื™ืฉื” ืœืžืฉืื‘ื™ื ืจื’ื™ืฉื™ื. ื”ื ื™ืชื•ื— ืฉืœื• ืžืฉืชืจืข ืขืœ ืคื ื™ ื—ื‘ื™ืœื•ืช, ืคื•ื ืงืฆื™ื•ืช ื•ืžื•ื“ื•ืœื™ื, ื•ืžืืคืฉืจ ืชื•ื‘ื ื•ืช ืœื’ื‘ื™ ื”ืื•ืคืŸ ืฉื‘ื• ืžืฉืชื ื™ื ืžื•ืขื‘ืจื™ื, ืžืื•ืžืชื™ื ื•ื ืฆืจื›ื™ื ืœืื•ืจืš ื‘ืกื™ืก ื”ืงื•ื“. ื”ื•ื ืžืฉื•ืœื‘ ื‘ืื•ืคืŸ ื”ื“ื•ืง ืขื GitHub Advanced Security, ื•ื”ื•ื ืชื•ืžืš ื’ื ื‘ื–ืจื™ืžื•ืช ืขื‘ื•ื“ื” ืžืงื•ืžื™ื•ืช ืฉืœ ืคื™ืชื•ื— ื“ืจืš ืžืžืฉืง ืฉื•ืจืช ื”ืคืงื•ื“ื” ืฉืœ CodeQL.

ืžื’ื‘ืœื•ืช ื•ืฉื™ืงื•ืœื™ื ื‘ืขืช ืฉื™ืžื•ืฉ ื‘-CodeQL ืขื‘ื•ืจ Go

ื‘ืขื•ื“ ืฉ-CodeQL ื”ื•ื ืื—ื“ ื”ื›ืœื™ื ื”ืžืชืงื“ืžื™ื ื‘ื™ื•ืชืจ ืœื ื™ืชื•ื— ืกื˜ื˜ื™, ื™ืฉื ืŸ ืžื’ื‘ืœื•ืช ื—ืฉื•ื‘ื•ืช ืฉืžืคืชื—ื™ื ืฆืจื™ื›ื™ื ืœื–ื›ื•ืจ ื‘ืขืช ื™ื™ืฉื•ืื• ื‘ืคืจื•ื™ืงื˜ื™ื ืฉืœ Go.

ืœ-CodeQL ื™ืฉ ืขื•ืžืง ื›ื™ืกื•ื™ ืฉืคื” ืžื•ื’ื‘ืœ ืขื‘ื•ืจ Go ื‘ื”ืฉื•ื•ืื” ืœืชืžื™ื›ื” ืฉืœื• ื‘-C, C++, Java ืื• JavaScript. ื™ื™ืชื›ืŸ ืฉืชื›ื•ื ื•ืช ืžืกื•ื™ืžื•ืช ืฉืœ Go, ื›ื’ื•ืŸ ื“ืคื•ืกื™ ืžืงื‘ื™ืœื™ื•ืช ืกืคืฆื™ืคื™ื™ื ืื• ืคืขื•ืœื•ืช ืžื‘ื•ืกืกื•ืช ื”ืฉืชืงืคื•ืช, ืœื ื™ืขื•ืฆื‘ื• ื‘ืžืœื•ืืŸ ืื• ืœื ื™ืชืžื›ื•. ื›ืชื•ืฆืื” ืžื›ืš, ื”ืชื ื”ื’ื•ื™ื•ืช ื“ื™ื ืžื™ื•ืช ืžืกื•ื™ืžื•ืช ื”ื ืคื•ืฆื•ืช ื‘ื™ื™ืฉื•ืžื™ Go ืœื ื™ื ื•ืชื—ื• ื‘ื“ื™ื•ืง ืžืœื.

ืขืงื•ืžืช ื”ื”ืชืงื ื” ื•ื”ืœืžื™ื“ื” ืฉืœ CodeQL ื™ื›ื•ืœื” ืœื”ื™ื•ืช ืžืฉืžืขื•ืชื™ืช. ื›ืชื™ื‘ืช ืฉืื™ืœืชื•ืช ืžื•ืชืืžื•ืช ืื™ืฉื™ืช ื“ื•ืจืฉืช ื”ื™ื›ืจื•ืช ืขื ืฉืคืช ื”ืฉืื™ืœืชื•ืช ืฉืœ CodeQL ื•ื”ื‘ื ื” ืฉืœ ื”ืื•ืคืŸ ืฉื‘ื• ืžื•ื“ืœ ืžืกื“ ื”ื ืชื•ื ื™ื ื”ืžื•ืคืฉื˜ ืžื™ื™ืฆื’ ืืช ืงื•ื“ ื”ืžืงื•ืจ. ื‘ืขื•ื“ ืฉืฉืืœื•ืช ืžื•ื›ื ื•ืช ืžืจืืฉ ื–ืžื™ื ื•ืช, ืฆื•ื•ืชื™ื ืฉืจื•ืฆื™ื ืœืœื›ืช ืžืขื‘ืจ ืœื‘ื“ื™ืงื•ืช ื‘ืจื™ืจืช ืžื—ื“ืœ ื™ืฆื˜ืจื›ื• ืœื”ืฉืงื™ืข ื–ืžืŸ ื‘ืœืžื™ื“ืช ื”ืชื—ื‘ื™ืจ ื•ื‘ื›ืชื™ื‘ืช ืฉืื™ืœืชื•ืช ื‘ื˜ื•ื—ื•ืช ื•ื‘ื™ืฆื•ืขื™ื•ืช.

ื‘ื™ืฆื•ืขื™ื ื”ื ืฉื™ืงื•ืœ ื ื•ืกืฃ. ืžื›ื™ื•ื•ืŸ ืฉ-CodeQL ืžื™ื™ืฆืจ ืžืกื“ ื ืชื•ื ื™ื ืžืœื ืžืงื•ื“ ื”ืžืงื•ืจ ืฉืœืš, ื”ื ื™ืชื•ื— ืฉืœื• ื“ื•ืจืฉ ืžืฉืื‘ื™ื ืจื‘ื™ื ื™ื•ืชืจ ืžื›ืœื™ื ืฉืคื•ืขืœื™ื ื™ืฉื™ืจื•ืช ืขืœ ืงื‘ืฆื™ ืžืงื•ืจ. ื‘ื‘ืกื™ืกื™ ืงื•ื“ ื’ื“ื•ืœื™ื ื™ื•ืชืจ ืฉืœ Go, ื‘ื ื™ื™ื” ื•ื ื™ืชื•ื— ืฉืœ ืžืกื“ ื ืชื•ื ื™ื ื–ื” ื™ื›ื•ืœื™ื ืœืงื—ืช ื›ืžื•ืช ื ื™ื›ืจืช ืฉืœ ื–ืžืŸ ื•ื–ื™ื›ืจื•ืŸ.

ื”ื ื™ืชื•ื— ื”ืกื˜ื˜ื™ ืฉืœ CodeQL ื’ื ืื™ื ื• ื›ื•ืœืœ ื”ืชื ื”ื’ื•ืช ื‘ื–ืžืŸ ืจื™ืฆื”. ื”ื•ื ืื™ื ื• ื™ื›ื•ืœ ืœื–ื”ื•ืช ื‘ืขื™ื•ืช ืกืคืฆื™ืคื™ื•ืช ืœืชืฆื•ืจื” ืื• ืคื’ื™ืขื•ื™ื•ืช ืฉื ื•ืฆืจื• ื‘ืืžืฆืขื•ืช ื˜ืขื™ื ื” ื“ื™ื ืžื™ืช, ืชื•ืกืคื™ื ืžื•ื’ื“ืจื™ ืžืฉืชืžืฉ ืื• ื ืชื•ื ื™ื ืฉื”ื•ื–ืจืงื• ื‘ื–ืžืŸ ืจื™ืฆื”. ืขื“ื™ื™ืŸ ื™ืฉ ืœื”ืขืจื™ืš ืกื™ื›ื•ื ื™ื ืืœื” ื‘ืืžืฆืขื•ืช ื ื™ืชื•ื— ื“ื™ื ืžื™ ืื• ื›ืœื™ ืชืฆืคื™ืช ื‘ื–ืžืŸ ืจื™ืฆื”.

ืœื‘ืกื•ืฃ, ื”ืื™ื ื˜ื’ืจืฆื™ื” ืฉืœ CodeQL ืขื GitHub Advanced Security ื–ืžื™ื ื” ืจืง ื‘ืชื•ื›ื ื™ื•ืช ืืจื’ื•ื ื™ื•ืช, ื“ื‘ืจ ืฉืขืฉื•ื™ ืœื”ื’ื‘ื™ืœ ืืช ื”ื’ื™ืฉื” ืœืฆื•ื•ืชื™ื ืฉืื™ื ื ืžืฉืชืžืฉื™ื ื‘-GitHub ืื• ืขื•ื‘ื“ื™ื ืชื—ืช ืจื™ืฉื™ื•ื ื•ืช ืงื•ื“ ืคืชื•ื—. ื‘ืขื•ื“ ืฉื”ื›ืœื™ ื–ืžื™ืŸ ืœืฉื™ืžื•ืฉ ืžืงื•ืžื™, ืฉื™ืœื•ื‘ ืžืœื ืฉืœ ืฆื™ื ื•ืจ CI/CD ืขืฉื•ื™ ืœื“ืจื•ืฉ ืžืืžืฅ ืชืฆื•ืจื” ื ื•ืกืฃ.

CodeQL ืžืชืื™ื ื‘ื™ื•ืชืจ ืœืฆื•ื•ืชื™ื ื”ืžืชืžืงื“ื™ื ื‘ืื‘ื˜ื—ื”, ืงื‘ื•ืฆื•ืช ืคื™ืชื•ื— ืžื•ื›ื•ื•ื ื•ืช ืžื—ืงืจ ื•ื™ื™ืฉื•ืžื™ Go ื‘ืงื ื” ืžื™ื“ื” ื’ื“ื•ืœ ืฉื‘ื”ื ื–ื™ื”ื•ื™ ืžืขืžื™ืง ืฉืœ ืคื’ื™ืขื•ื™ื•ืช ื”ื•ื ื‘ืจืืฉ ืกื“ืจ ื”ืขื“ื™ืคื•ื™ื•ืช. ื”ื•ื ืžืฉืœื™ื ืืช ืžืขืจื›ื•ืช ื”-linter ื”ืžืกื•ืจืชื™ื•ืช ืขืœ ื™ื“ื™ ืžืชืŸ ื“ืจืš ืœืžื™ื“ื•ืœ, ืœื–ื”ื•ืช ื•ืœืžื ื•ืข ืฉื’ื™ืื•ืช ืœื•ื’ื™ื•ืช ืžื•ืจื›ื‘ื•ืช ื•ืคื’ืžื™ ืื‘ื˜ื—ื” ืฉืื—ืจืช ื”ื™ื• ื ืขืœืžื™ื ืžืขื™ื ื™ื•.

SonarQube (ืขื ืชื•ืกืฃ Go)

soundQube ื”ื™ื ืคืœื˜ืคื•ืจืžื” ื ืคื•ืฆื” ืœื ื™ืชื•ื— ืกื˜ื˜ื™ ื•ืื™ื›ื•ืช ืงื•ื“, ื”ื™ื“ื•ืขื” ื‘ืœื•ื—ื•ืช ื”ืžื—ื•ื•ื ื™ื ื”ืžืจื›ื–ื™ื™ื ืฉืœื”, ืžืขืงื‘ ืื—ืจ ื—ื•ื‘ื•ืช ื˜ื›ื ื™ื™ื ื•ื™ื›ื•ืœื•ืช ื‘ื“ื™ืงื” ืจืฆื™ืคื”. ืขื ื”ืชืงื ืช ื”ืชื•ืกืฃ Go, SonarQube ืžืจื—ื™ื‘ื” ืืช ื˜ื•ื•ื— ื”ื”ื’ืขื” ืฉืœื” ืœืคืจื•ื™ืงื˜ื™ื ืฉืœ Golang, ื•ืžืืคืฉืจืช ืœืฆื•ื•ืชื™ื ืœื ื˜ืจ ืชื—ื–ื•ืงื”, ืื‘ื˜ื—ื” ื•ืจื™ื—ื•ืช ืงื•ื“ ืœืฆื“ ืฉืคื•ืช ื ืชืžื›ื•ืช ืื—ืจื•ืช ื‘ืกื‘ื™ื‘ื” ืžืื•ื—ื“ืช.

ืขื‘ื•ืจ ื‘ืกื™ืกื™ ืงื•ื“ ืฉืœ Go, SonarQube ืžืกืคืงืช ืกืจื™ืงื” ืื•ื˜ื•ืžื˜ื™ืช ืฉืœ ื‘ืขื™ื•ืช ื”ืงืฉื•ืจื•ืช ืœืžื•ืจื›ื‘ื•ืช ืงื•ื“, ืกื™ื›ื•ื ื™ ื‘ืื’ื™ื, ื”ืคืจื•ืช ืกื’ื ื•ืŸ ื•ื“ืคื•ืกื™ ืื‘ื˜ื—ื” ื‘ืกื™ืกื™ื™ื. ื”ืžืžืฉืง ืžื‘ื•ืกืก ื”ืื™ื ื˜ืจื ื˜ ืฉืœื” ืžืฆื™ืข ื•ื™ื–ื•ืืœื™ื–ืฆื™ื•ืช ืœืžื’ืžื•ืช ืื™ื›ื•ืช ืงื•ื“, ื–ื™ื”ื•ื™ ื ืงื•ื“ื•ืช ื—ืžื•ืช, ืžื“ื“ื™ ื›ืคื™ืœื•ื™ื•ืช ื•ืžืขืงื‘ ื”ื™ืกื˜ื•ืจื™, ืฉื™ื›ื•ืœื™ื ืœืขื–ื•ืจ ืœืฆื•ื•ืชื™ื ืœืงื‘ื•ืข ื™ืขื“ื™ื ืžื“ื™ื“ื™ื ืœืฉื™ืคื•ืจ.

SonarQube ืžืฉืชืœื‘ ื’ื ืขื ืžืขืจื›ื•ืช CI/CD ื ืคื•ืฆื•ืช ืจื‘ื•ืช, ื›ื•ืœืœ Jenkins, GitHub Actions ื•-GitLab CI. ื–ื” ืžืืคืฉืจ ืœืฆื•ื•ืชื™ Go ืœืื›ื•ืฃ ื’ื™ืฉื” (gateing) ื‘ื”ืชื‘ืกืก ืขืœ ื—ื•ืžืจืช ื”ื‘ืขื™ื” ืื• ืกืคื™ ื”ืื™ื›ื•ืช ื•ืœืงื‘ืœ ืžืฉื•ื‘ ื‘ื–ืžืŸ ืืžืช ื‘ืžื”ืœืš ืกืงื™ืจืช ื”ืงื•ื“. ื”ื•ื ืชื•ืžืš ื‘ื ื™ืชื•ื— ื‘ืจืžืช ื”ืกื ื™ืฃ, ืฉื™ืœื•ื‘ ื‘ืงืฉื•ืช Pull Request ื•ืื•ื˜ื•ืžืฆื™ื” ืฉืœ ื’ื™ืฉื” ืœืื™ื›ื•ืช, ืžื” ืฉื”ื•ืคืš ืื•ืชื• ืžืชืื™ื ืœืฆื•ื•ืชื™ื ื’ื“ื•ืœื™ื ื™ื•ืชืจ ื•ืœืกื‘ื™ื‘ื•ืช ืžืจื•ื‘ื•ืช ืžืื’ืจื™ื.

ืžื’ื‘ืœื•ืช ื•ืื™ืœื•ืฆื™ื ืฉืœ SonarQube ืขื‘ื•ืจ Go

ืœืžืจื•ืช ืฉ-SonarQube ืžืฆื™ืขื” ืชื•ื‘ื ื•ืช ื—ืฉื•ื‘ื•ืช ืœื’ื‘ื™ ืื™ื›ื•ืช ืงื•ื“ Go, ื™ืฉื ื ืžืกืคืจ ืชื—ื•ืžื™ื ืฉื‘ื”ื ืชื›ื•ื ื•ืช ื ื™ืชื•ื— ื”-Go ืฉืœื” ืคื—ื•ืช ืžืงื™ืคื•ืช ืžื”ืชืžื™ื›ื” ืฉืœื” ื‘ืฉืคื•ืช ืื—ืจื•ืช.

ืชื•ืกืฃ Go ืžืกืคืง ื›ืจื’ืข ืจืง ื ื™ืชื•ื— ืกื˜ื˜ื™ ื‘ืกื™ืกื™ ื‘ื”ืฉื•ื•ืื” ืœืžื” ืฉื–ืžื™ืŸ ืขื‘ื•ืจ Java ืื• C#. ื”ื•ื ื—ืกืจ ื‘ื“ื™ืงื•ืช ืกืžื ื˜ื™ื•ืช ืขืžื•ืงื•ืช ื™ื•ืชืจ ื›ื’ื•ืŸ ื ื™ืชื•ื— ื–ืจื™ืžืช ื ืชื•ื ื™ื ืžืชืงื“ื, ืžืขืงื‘ ืื—ืจ ื–ืจื™ืžืช ื‘ืงืจื” ื‘ื™ืŸ-ืคืจื•ืฆื“ื•ืจื™ืช ืื• ืžื™ื“ื•ืœ ืœื•ื’ื™ืงื” ืžื•ื“ืข ืœืžืงื‘ื™ืœื™ื•ืช. ื–ื” ืžื’ื‘ื™ืœ ืืช ื”ืชื•ืขืœืช ืฉืœื• ืœื’ื™ืœื•ื™ ื‘ืื’ื™ื ืžื•ืจื›ื‘ื™ื ืื• ื”ืคืจื•ืช ืืจื›ื™ื˜ืงื˜ื•ื ื™ื•ืช ื‘ืžืขืจื›ื•ืช Go ืžื•ืจื›ื‘ื•ืช ื™ื•ืชืจ.

ื›ื™ืกื•ื™ ื”ืื‘ื˜ื—ื” ืžื•ื’ื‘ืœ ืœื›ืœืœื™ื ืžื•ื’ื“ืจื™ื ืžืจืืฉ ื•ืื™ื ื• ื›ื•ืœืœ ื ื™ืชื•ื— ื–ื™ื”ื•ืžื™ื ืื• ืฉืจืฉื•ืจ ืคื’ื™ืขื•ื™ื•ืช. ื‘ืขื•ื“ ืฉ-SonarQube ื™ื›ื•ืœ ืœืกืžืŸ ื“ืคื•ืกื™ ืื‘ื˜ื—ื” ื‘ืจื•ืจื™ื, ื”ื•ื ืื™ื ื• ืžื“ืžื” ื›ื™ืฆื“ ืงืœื˜ ืœื ืืžื™ืŸ ื–ื•ืจื ื“ืจืš ืคื•ื ืงืฆื™ื•ืช ืื• ื›ื™ืฆื“ ืžืกืคืจ ืงืจื™ืื•ืช ืฉื ืจืื•ืช ื‘ื˜ื•ื—ื•ืช ืขืฉื•ื™ื•ืช ืœื”ืฉืชืœื‘ ืœื ืชื™ื‘ ื‘ื™ืฆื•ืข ืžืกื•ื›ืŸ.

ื”ืชืžื™ื›ื” ื‘ืžื‘ื ื™ื ืกืคืฆื™ืคื™ื™ื ืœ-Go ื›ื’ื•ืŸ ืฉื’ืจื•ืช ื’ื•ืจ, ืขืจื•ืฆื™ื ืื• ืฉื™ืžื•ืฉ ืื™ื“ื™ื•ืžื˜ื™ ื‘ืžืžืฉืงื™ื ื”ื™ื ื™ื—ืกื™ืช ืฉื˜ื—ื™ืช. ื”ืคืœื˜ืคื•ืจืžื” ืื™ื ื” ืžื“ืžื” ื”ืชื ื”ื’ื•ืช ื‘ื•-ื–ืžื ื™ืช ืื• ืžื–ื”ื” ืชื ืื™ ืžืจื•ืฅ, ืžื‘ื•ื™ ืกืชื•ื ืื• ืกื›ื ื•ืช ืžืจื•ื‘ื•ืช-ื”ืœื™ื›ื™ื ืื—ืจื•ืช. ื—ืฉืฉื•ืช ืืœื” ื ืคื•ืฆื™ื ื‘ื™ื™ืฉื•ืžื™ Go ื•ื™ืฉ ืœื˜ืคืœ ื‘ื”ื ื‘ืืžืฆืขื•ืช ื›ืœื™ื ืžื™ื•ื—ื“ื™ื ื™ื•ืชืจ.

ืคื™ืชื•ื— ื›ืœืœื™ื ืžื•ืชืืžื™ื ืื™ืฉื™ืช ืืคืฉืจื™ ืืš ืื™ื ื• ื’ืžื™ืฉ ืื• ื ื’ื™ืฉ ื›ืžื• ื‘ื›ืœื™ื ื›ืžื• Semgrep ืื• CodeQL. ืฆื•ื•ืชื™ื ื”ืžืกืชืžื›ื™ื ืขืœ ืกื˜ื ื“ืจื˜ื™ื ืžื•ืชืืžื™ื ืื™ืฉื™ืช ืฉืœ ืื™ื›ื•ืช ืขืฉื•ื™ื™ื ืœื”ืชืงืฉื•ืช ื™ื•ืชืจ ืœื™ื™ืฉื ื–ื™ื”ื•ื™ื™ื ืžื•ืชืืžื™ื ืื™ืฉื™ืช ืขื‘ื•ืจ ืžืงืจื™ ื”ืฉื™ืžื•ืฉ ื”ืกืคืฆื™ืคื™ื™ื ืฉืœื”ื.

ื‘ื™ืฆื•ืขื™ื ื‘ืคืจื•ื™ืงื˜ื™ื ื’ื“ื•ืœื™ื ืฉืœ Go ื™ื›ื•ืœื™ื ื’ื ื”ื ืœื”ื•ื•ืช ื“ืื’ื”. ืžื ื•ืข ื”ื ื™ืชื•ื— ืฉืœ SonarQube ืฆื•ืจืš ืžืฉืื‘ื™ื ื ื™ื›ืจื™ื, ื‘ืžื™ื•ื—ื“ ื‘ืขืช ืกืจื™ืงืช ืžืกืคืจ ืขื ืคื™ื ืื• ืžืื’ืจื™ื ื‘ืžืงื‘ื™ืœ. ืชื›ื ื•ืŸ ื•ื›ื™ื•ื•ื ื•ืŸ ืชืฉืชื™ื•ืช ืขืฉื•ื™ื™ื ืœื”ื™ื•ืช ื ื—ื•ืฆื™ื ื›ื“ื™ ืœื”ืฉื™ื’ ืชื•ืฆืื•ืช ืื•ืคื˜ื™ืžืœื™ื•ืช.

SonarQube ืžืชืื™ื ื‘ื™ื•ืชืจ ืœืฆื•ื•ืชื™ื ื”ืžื—ืคืฉื™ื ืคื™ืงื•ื— ื‘ืจืžื” ื’ื‘ื•ื”ื” ืขืœ ืื™ื›ื•ืช ืงื•ื“ Go, ื‘ืžื™ื•ื—ื“ ื‘ืกื‘ื™ื‘ื•ืช ืฉื›ื‘ืจ ืžืฉืชืžืฉื•ืช ื‘-SonarQube ืขื‘ื•ืจ ืฉืคื•ืช ืื—ืจื•ืช. ื”ื•ื ืžืกืคืง ืชืฆื•ื’ื” ื ืงื™ื™ื” ื•ืžืจื›ื–ื™ืช ืฉืœ ื—ื•ื‘ ื˜ื›ื ื™, ืžื’ืžื•ืช ื‘ืขื™ื•ืช ื•ื‘ืจื™ืื•ืช ื‘ืกื™ืก ื”ืงื•ื“, ืืš ื™ืฉ ืœื”ืฉืœื™ื ืื•ืชื• ืขื ืžื ืชื—ื™ื ืžืžื•ืงื“ื™ื ื™ื•ืชืจ ื›ื“ื™ ืœื”ืฉื™ื’ ื›ื™ืกื•ื™ ืกืžื ื˜ื™ ื•ืื‘ื˜ื—ื” ืžืœื ื‘ื™ื™ืฉื•ืžื™ Go.

ื’ื•-ืงืจื™ื˜ื™ืง

ื’ื•-ืงืจื™ื˜ื™ืง ื”ื•ื ื›ืœื™ ื ื™ืชื•ื— ืกื˜ื˜ื™ ืฉืคื•ืชื— ื›ื“ื™ ืœื”ืฉืœื™ื ื‘ื“ื™ืงื•ืช ืชื—ื‘ื™ืจ ืื—ืจื•ืช ืฉืœ Go ืขืœ ื™ื“ื™ ืื™ืชื•ืจ ื‘ืขื™ื•ืช ืžืชืงื“ืžื•ืช ืฉืœืขืชื™ื ืงืจื•ื‘ื•ืช ืžืคืกืคืกื•ืช ืขืœ ื™ื“ื™ ื‘ื•ื“ืงื™ ืชื—ื‘ื™ืจ ืคืฉื•ื˜ื™ื ื™ื•ืชืจ. ื”ื•ื ืžืกืคืง ืžืขืจืš ืขืฉื™ืจ ืฉืœ ื‘ื“ื™ืงื•ืช ื”ืžื›ื•ื•ื ื•ืช ืœืกื’ื ื•ืŸ ืงื•ื“, ื ื›ื•ื ื•ืช, ื‘ื™ืฆื•ืขื™ื ื•ืงืจื™ืื•ืช. ื‘ื ื™ื’ื•ื“ ืœื›ืœื™ื ื”ืžืชืžืงื“ื™ื ื‘ื›ืœืœื™ ืขื™ืฆื•ื‘ ืจื“ื•ื“ื™ื, Go-Critic ืžืฉืชืžืฉ ื‘ืžื™ื“ืข ืขืœ ืกื•ื’ื™ื ื•ื‘ื ื™ืชื•ื— ืžื‘ื ื™ ื›ื“ื™ ืœื—ืฉื•ืฃ ื—ื•ืกืจ ื™ืขื™ืœื•ืช ืขืžื•ืง ื™ื•ืชืจ ื•ืคื’ืžื™ื ืœื•ื’ื™ื™ื ื‘ืงืฆื” ื”ืžืงืจื™ื.

ื”ื›ืœื™ ืžื’ื™ืข ืขื ืจืฉื™ืžื” ื”ื•ืœื›ืช ื•ื’ื“ืœื” ืฉืœ ื‘ื“ื™ืงื•ืช, ื›ื•ืœืœ ื›ืœืœื™ื ืœืชื ืื™ื ืžื™ื•ืชืจื™ื, ื”ืงืฆืื•ืช ืœื ื™ืขื™ืœื•ืช, ื‘ืขื™ื•ืช ื”ืžืจืช ืกื•ื’ื™ื ื•ืžืžืฉืงื™ื ื‘ืฉื™ืžื•ืฉ ืœืจืขื”. ื”ื•ื ื—ื–ืง ื‘ืžื™ื•ื—ื“ ื‘ื–ื™ื”ื•ื™ ื˜ืขื•ื™ื•ืช ืœื ื‘ืจื•ืจื•ืช ืฉืขืœื•ืœื•ืช ืœื”ื•ื‘ื™ืœ ืœื”ืชื ื”ื’ื•ืช ื‘ืœืชื™ ืฆืคื•ื™ื”, ื›ื’ื•ืŸ ืฉื™ืžื•ืฉ ื‘ืžืงืœื˜ื™ ืขืจืš ื›ืืฉืจ ืฆืคื•ื™ื™ื ืžืงืœื˜ื™ ืžืฆื‘ื™ืขื™ื ืื• ื‘ื ื™ื™ืช ืœื™ื˜ืจืœื™ื ืฉืœ ืคืจื•ืกื•ืช ื‘ืฆื•ืจื” ืœื ื™ืขื™ืœื”.

ื ื™ืชืŸ ืœื”ืคืขื™ืœ ืืช Go-Critic ื‘ืื•ืคืŸ ืขืฆืžืื™ ืื• ืœืฉืœื‘ ืื•ืชื• ื‘ืžืกื’ืจื•ืช ื ื™ืชื•ื— ืกื˜ื˜ื™ื•ืช ื’ื“ื•ืœื•ืช ื™ื•ืชืจ ื›ืžื• golangci-lintื”ื•ื ื ื™ืชืŸ ืœื”ื’ื“ืจื”, ืชื•ืžืš ื‘ื”ืคืขืœื” ืื• ื”ืฉื‘ืชื” ืฉืœ ื‘ื“ื™ืงื•ืช ืกืคืฆื™ืคื™ื•ืช, ื•ืžืฆื™ืข ื”ื•ื“ืขื•ืช ืžืคื•ืจื˜ื•ืช ืขื ื”ืคื ื™ื•ืช ื‘ืจื•ืจื•ืช ืœืื–ื•ืจ ื”ื‘ืขื™ื” ื•ืชื™ืงื•ื ื™ื ืžื•ืžืœืฆื™ื.

ืžื’ื‘ืœื•ืช ื•ืฉื™ืงื•ืœื™ื ื‘ืขืช ืฉื™ืžื•ืฉ ื‘-Go-Critic

ื‘ืขื•ื“ ืฉ-Go-Critic ืžื•ืกื™ืฃ ืขื•ืžืง ื—ืฉื•ื‘ ืœืกืงื™ืจืช ืงื•ื“ ืกื˜ื˜ื™ืช, ื”ืขื™ืฆื•ื‘ ืฉืœื• ืžืฆื™ื’ ื›ืžื” ืžื’ื‘ืœื•ืช ืฉืžืคืชื—ื™ื ืฆืจื™ื›ื™ื ืœืฉืงื•ืœ ืœืคื ื™ ืฉื”ื ืžืืžืฆื™ื ืื•ืชื• ื›ื›ืœื™ ื ื™ืชื•ื— ืขื™ืงืจื™.

ื”ื›ืœื™ ืื™ื ื• ืžื‘ืฆืข ื ื™ืชื•ื— ืžืœื ืฉืœ ื–ืจื™ืžืช ื ืชื•ื ื™ื ืื• ื–ืจื™ืžืช ื‘ืงืจื”. ื”ื‘ื ืชื• ืืช ืื•ืคืŸ ืชื ื•ืขืช ื”ื ืชื•ื ื™ื ื“ืจืš ืชื•ื›ื ื™ืช ืžื•ื’ื‘ืœืช ืœื‘ื“ื™ืงื” ืžืงื•ืžื™ืช ืื• ื‘ืจืžืช ื”ืคื•ื ืงืฆื™ื”. ื›ืชื•ืฆืื” ืžื›ืš, ื”ื•ื ืื™ื ื• ื™ื›ื•ืœ ืœืขืงื•ื‘ ืื—ืจ ืžืฆื‘ ืžืฉืชื ื” ืขืœ ืคื ื™ ืคื•ื ืงืฆื™ื•ืช ืื• ืžื•ื“ื•ืœื™ื ืžืจื•ื‘ื™ื ืื• ืœื–ื”ื•ืช ื‘ืขื™ื•ืช ื”ื“ื•ืจืฉื•ืช ื™ื“ืข ืขืœ ื ืชื™ื‘ื™ ื‘ื™ืฆื•ืข ื›ืœืœ-ืชื•ื›ื ื™ืชื™ื™ื.

ื‘ืื’ื™ื ื”ืงืฉื•ืจื™ื ืœืžืงื‘ื™ืœื™ื•ืช ื’ื ื”ื ืžื—ื•ืฅ ืœืชื—ื•ื ืคืขื™ืœื•ืชื”. Go-Critic ืื™ื ื• ืžื“ืžื” ืฉื’ืจื•ืช, ืขืจื•ืฆื™ื ืื• ืžื ื’ื ื•ื ื™ ืกื ื›ืจื•ืŸ. ืฆื•ื•ืชื™ื ื”ื‘ื•ื ื™ื ื™ื™ืฉื•ืžื™ Go ืžืงื‘ื™ืœื™ื ืื• ื‘ื•-ื–ืžื ื™ื™ื ืžืื•ื“ ื™ื–ื“ืงืงื• ืœื›ืœื™ ื ื™ืชื•ื— ื ื•ืกืคื™ื ื›ื“ื™ ืœื”ื‘ื˜ื™ื— ื ื›ื•ื ื•ืช ื‘ืชื—ื•ืžื™ื ืืœื”.

ืœืžืจื•ืช ืฉ-Go-Critic ืชื•ืžืš ื‘ืžื’ื•ื•ืŸ ืจื—ื‘ ืฉืœ ื‘ื“ื™ืงื•ืช, ื”ื•ื ืื™ื ื• ืžืกืคืง ื™ืฆื™ืจืช ื›ืœืœื™ื ืžื•ืชืืžื™ื ืื™ืฉื™ืช ืื• ื™ื›ื•ืœืช ื”ืจื—ื‘ื” ื‘ืืžืฆืขื•ืช ืชื•ืกืคื™ื. ืžืฉืžืขื•ืช ื”ื“ื‘ืจ ื”ื™ื ืฉืžืคืชื—ื™ื ืื™ื ื ื™ื›ื•ืœื™ื ืœื›ืชื•ื‘ ื›ืœืœื™ื ืกืคืฆื™ืคื™ื™ื ืœืืจื’ื•ืŸ ืžื‘ืœื™ ืœืฉื ื•ืช ืืช ืงื•ื“ ื”ืžืงื•ืจ ืฉืœ ื”ื›ืœื™ ื™ืฉื™ืจื•ืช, ื“ื‘ืจ ืฉืขืฉื•ื™ ืœื”ื™ื•ืช ื‘ืœืชื™ ืืคืฉืจื™ ื‘ืฆื•ื•ืชื™ื ื’ื“ื•ืœื™ื ืื• ืžื”ื™ืจื™ื.

ืชื•ืฆืื•ืช ื—ื™ื•ื‘ื™ื•ืช ืฉื’ื•ื™ื•ืช ืขืœื•ืœื•ืช ืœื”ืชืจื—ืฉ, ื‘ืžื™ื•ื—ื“ ื›ืืฉืจ ื‘ื“ื™ืงื•ืช ืžืกืชืžื›ื•ืช ืขืœ ื”ื™ื•ืจื™ืกื˜ื™ืงื•ืช ื•ืœื ืขืœ ืขืจื‘ื•ื™ื•ืช ืกืžื ื˜ื™ื•ืช ืงืคื“ื ื™ื•ืช. ื‘ืžืงืจื™ื ืžืกื•ื™ืžื™ื, Go-Critic ืขืฉื•ื™ ืœืกืžืŸ ื“ืคื•ืกื™ื ืชืงืคื™ื ื•ืžื›ื•ื•ื ื™ื ืืš ื ืจืื™ื ืœื ื™ืขื™ืœื™ื ืื• ืฉื’ื•ื™ื™ื ืชื—ืช ืžืขืจืš ื”ื›ืœืœื™ื ืฉืœื•. ืกืงื™ืจื” ื™ื“ื ื™ืช ืฉืœ ื”ืžืžืฆืื™ื ื”ื™ื ืœืขืชื™ื ืงืจื•ื‘ื•ืช ื”ื›ืจื—ื™ืช.

ืœื‘ืกื•ืฃ, Go-Critic ืื™ื ื• ืžื™ื•ืขื“ ืœื ื™ืชื•ื— ืื‘ื˜ื—ื”. ื”ื•ื ืื™ื ื• ืžื–ื”ื” ืกื™ื›ื•ื ื™ ื”ื–ืจืงื”, ืฉื™ืžื•ืฉ ืœืจืขื” ื‘ืงืจื™ืคื˜ื•ื’ืจืคื™ื” ืื• ืงืœื˜ ืœื ืžืื•ืžืช. ืฆื•ื•ืชื™ื ื‘ืขืœื™ ืžื•ื“ืขื•ืช ืœืื‘ื˜ื—ื” ืฆืจื™ื›ื™ื ืœืฉืœื‘ ืืช Go-Critic ืขื ื›ืœื™ื ื™ื™ืขื•ื“ื™ื™ื ื›ืžื•... gosec or govulncheck ืœืฆื•ืจืš ื’ื™ืœื•ื™ ืคื’ื™ืขื•ื™ื•ืช.

Go-Critic ืฉื™ืžื•ืฉื™ ื‘ื™ื•ืชืจ ืขื‘ื•ืจ ืฆื•ื•ืชื™ื ืฉืจื•ืฆื™ื ืœืœื›ืช ืžืขื‘ืจ ืœื‘ื“ื™ืงื•ืช ื‘ืกื™ืกื™ื•ืช ืฉืœ ื‘ื“ื™ืงื•ืช ื˜ืงืกื˜ (linting) ื•ืœื–ื”ื•ืช ื‘ืขื™ื•ืช ืขื“ื™ื ื•ืช ืฉืœ ืชืงื™ื ื•ืช ืื• ื‘ื™ืฆื•ืขื™ื ื‘ืฉืœื‘ ืžื•ืงื“ื ืฉืœ ืžื—ื–ื•ืจ ื”ืคื™ืชื•ื—. ื”ื•ื ืขื•ื‘ื“ ื”ื™ื˜ื‘ ื‘ืฉื™ืœื•ื‘ ืขื ื‘ื“ื™ืงื•ืช ื˜ืงืกื˜ ืคืฉื•ื˜ื•ืช ื™ื•ืชืจ ื•ื™ื›ื•ืœ ืœืฉืคืจ ืืช ืื™ื›ื•ืช ื”ืงื•ื“ ื‘ืืžืฆืขื•ืช ื‘ื“ื™ืงื•ืช ืžื‘ื ื™ื•ืช ืžืชืงื“ืžื•ืช ื™ื•ืชืจ, ื‘ืชื ืื™ ืฉืžืžืฆืื™ื• ืžืชืคืจืฉื™ื ื‘ืฆื•ืจื” ืžื•ืฉื›ืœืช ื•ืžืฉืžืฉื™ื ื‘ืฉื™ืœื•ื‘ ืขื ืžื ืชื—ื™ื ืกื˜ื˜ื™ื™ื ืžืขืžื™ืงื™ื ื™ื•ืชืจ.

ื‘ื“ื™ืงืช ืชืœื•ืช (OWASP) ืขื‘ื•ืจ Go

ื‘ื“ื™ืงืช ืชืœื•ืช OWASP ื”ื•ื ื›ืœื™ ืงื•ื“ ืคืชื•ื— ื™ื“ื•ืข ืฉืคื•ืชื— ืขืœ ื™ื“ื™ ืงืจืŸ OWASP ืœื–ื™ื”ื•ื™ ืคื’ื™ืขื•ื™ื•ืช ื™ื“ื•ืขื•ืช ื‘ืชืœื•ืช ื‘ืคืจื•ื™ืงื˜ื™ื. ื”ื•ื ืžืฉืžืฉ ื‘ืขื™ืงืจ ืœืกืจื™ืงืช ืกืคืจื™ื•ืช ื•ื—ื‘ื™ืœื•ืช ืฉืœ ืฆื“ ืฉืœื™ืฉื™ ื‘ืคืจื•ื™ืงื˜ ืขื‘ื•ืจ ื’ืจืกืื•ืช ืขื ื‘ืขื™ื•ืช ืื‘ื˜ื—ื” ืฉื ื—ืฉืคื• ื‘ืคื•ืžื‘ื™, ื‘ื”ืชื‘ืกืก ืขืœ ืžืกื“ื™ ื ืชื•ื ื™ื ื›ื’ื•ืŸ ืžืกื“ ื”ื ืชื•ื ื™ื ื”ืœืื•ืžื™ ืœืคื’ื™ืขื•ื™ื•ืช (NVD) ื•ืžืงื•ืจื•ืช ื™ื™ืขื•ืฅ ืื—ืจื™ื.

ืœืžืจื•ืช ืฉืžืงื•ืจื• ื‘ืžืขืจื›ืช ื”ืืงื•ืœื•ื’ื™ืช ืฉืœ ื’'ืื•ื•ื”, Dependency-Check ื”ืชืคืชื— ื•ืชื•ืžืš ื‘ืฉืคื•ืช ืชื›ื ื•ืช ืžืจื•ื‘ื•ืช, ื›ื•ืœืœ ืชืžื™ื›ื” ืžื•ื’ื‘ืœืช ื‘-Golang. ื‘ืคืจื•ื™ืงื˜ื™ื ืฉืœ Go, ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ื›ืœื™ ืœืกืจื™ืงื” go.mod ื• go.sum ืงื‘ืฆื™ื ื›ื“ื™ ืœื–ื”ื•ืช ื’ืจืกืื•ืช ืžื•ื“ื•ืœื™ื ืคื’ื™ืขื•ืช ื•ืœื™ืฆื•ืจ ื“ื•ื—ื•ืช ืื‘ื˜ื—ื” ืขื CVEs ืงืฉื•ืจื™ื, ืฆื™ื•ื ื™ ื—ื•ืžืจื” ื•ืขืฆื•ืช ืœืชื™ืงื•ืŸ.

ืฆื•ื•ืชื™ื ืฉื›ื‘ืจ ืžืฉืชืžืฉื™ื ื‘-Dependency-Check ื‘ื›ืœ ื”ืžืขืจื›ื•ืช ืฉืœื”ื ืขืฉื•ื™ื™ื ืœืฉืœื‘ ืื•ืชื• ื‘ืฆื™ื ื•ืจื•ืช Go ืฉืœื”ื ื›ื“ื™ ืœืฉืžื•ืจ ืขืœ ื’ื™ืฉืช ื ื™ื”ื•ืœ ืคื’ื™ืขื•ื™ื•ืช ืื—ื™ื“ื” ื‘ื™ืŸ ืฉืคื•ืช. ื“ื•ื—ื•ืช ื–ืžื™ื ื™ื ื‘ืคื•ืจืžื˜ื™ื ืฉื•ื ื™ื, ื›ื•ืœืœ HTML, JSON ื•-XML, ืžื” ืฉื”ื•ืคืš ืื•ืชื• ืœืชื•ืื ืœืžื’ื•ื•ืŸ ืจื—ื‘ ืฉืœ ืœื•ื—ื•ืช ืžื—ื•ื•ื ื™ื ืฉืœ CI/CD ื•ืื‘ื˜ื—ื”.

ืžื’ื‘ืœื•ืช ืฉืœ ื‘ื“ื™ืงืช ืชืœื•ืช ื‘ืคืจื•ื™ืงื˜ื™ื ืฉืœ Go

ื‘ืขื•ื“ ืฉ-Dependency-Check ื™ืขื™ืœ ืœื‘ื™ืงื•ืจืช ืคื’ื™ืขื•ื™ื•ืช ื‘ืจืžืช ื”ืžืขืจื›ืช ื”ืืงื•ืœื•ื’ื™ืช, ื™ื›ื•ืœื•ืชื™ื• ื‘ืกื‘ื™ื‘ื•ืช ืกืคืฆื™ืคื™ื•ืช ืœ-Go ืžื•ื’ื‘ืœื•ืช ื™ื•ืชืจ ื‘ื”ืฉื•ื•ืื” ืœืฉื™ืžื•ืฉ ื‘ื• ื‘ืคืจื•ื™ืงื˜ื™ื ืžื‘ื•ืกืกื™ JVM.

ืชืžื™ื›ืช ื”-Go ืฉืœื” ืžื‘ื•ืกืกืช ื‘ืขื™ืงืจ ืขืœ ืžื˜ื-ื“ืื˜ื” ื•ืื™ื ื” ื›ื•ืœืœืช ืžื•ื“ืขื•ืช ืกืžื ื˜ื™ืช ืื• ื ื™ืชื•ื— ื’ืจืฃ ืงืจื™ืื•ืช. ืžืฉืžืขื•ืช ื”ื“ื‘ืจ ื”ื™ื ืฉื”ื™ื ืื™ื ื” ื™ื›ื•ืœื” ืœืงื‘ื•ืข ื”ืื ื—ื‘ื™ืœื” ืคื’ื™ืขื” ื ืžืฆืืช ื‘ืฉื™ืžื•ืฉ ื‘ืคื•ืขืœ ืขืœ ื™ื“ื™ ื”ืงื•ื“ ืื• ื”ืื ื”ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ื”ืคื’ื™ืขื” ืžื•ืคืขืœืช ืื™ ืคืขื. ื›ืชื•ืฆืื” ืžื›ืš, ื”ื›ืœื™ ืขืฉื•ื™ ืœื™ื™ืฆืจ ื”ืชืจืื•ืช ืขื‘ื•ืจ ืชืœื•ื™ื•ืช ืฉืงื™ื™ืžื•ืช ืžื‘ื—ื™ื ื” ื˜ื›ื ื™ืช ืืš ืžืขื•ืœื ืœื ืžื‘ื•ืฆืขื•ืช.

ื”ื™ื ืžืกืชืžื›ืช ื‘ืžื™ื“ื” ืจื‘ื” ืขืœ ืžืื’ืจื™ ืžื™ื“ืข ืฆื™ื‘ื•ืจื™ื™ื ื›ืžื• NVD, ืฉืขืฉื•ื™ื™ื ืœืคื’ืจ ืื—ืจื™ ืœื•ื—ื•ืช ื”ื–ืžื ื™ื ืฉืœ ื’ื™ืœื•ื™ ื‘ื–ืžืŸ ืืžืช. ื“ื‘ืจ ื–ื” ืžืฉืคื™ืข ืขืœ ื™ื›ื•ืœืชื” ืœื–ื”ื•ืช ืคื’ื™ืขื•ื™ื•ืช ืฉื“ื•ื•ื—ื• ืœืื—ืจื•ื ื” ืื• ื”ืชืจืื•ืช ืื‘ื˜ื—ื” ืฉื˜ืจื ืขื•ื‘ื“ื• ื•ืงื•ื˜ืœื’ื•.

ื‘ื“ื™ืงืช ื”ืชืœื•ืช ืื™ื ื” ื‘ื•ื“ืงืช ืืช ืงื•ื“ ื”ืžืงื•ืจ ืœืื™ืชื•ืจ ืœื•ื’ื™ืงื” ืœื ื‘ื˜ื•ื—ื”, ื‘ืขื™ื•ืช ืชืฆื•ืจื” ืื• ื“ืคื•ืกื™ื ืœื ืžืื•ื‘ื˜ื—ื™ื. ื”ื™ื ืื™ื ื” ืžืขืจื™ื›ื” ื›ื™ืฆื“ ืงืœื˜ ืžืื•ืžืช, ื›ื™ืฆื“ ืื™ืžื•ืช ืžื˜ื•ืคืœ, ืื• ื”ืื ืžืžืฉืงื™ API ืงืจื™ืคื˜ื•ื’ืจืคื™ื™ื ืžืฉืžืฉื™ื ื‘ืฆื•ืจื” ื ื›ื•ื ื”. ืชื—ื•ืžื™ื ืืœื” ื—ื™ื™ื‘ื™ื ืœื”ื™ื•ืช ืžื›ื•ืกื™ื ืขืœ ื™ื“ื™ ื›ืœื™ื ืื—ืจื™ื ื›ื’ื•ืŸ gosec or Semgrep.

ืื™ืŸ ื”ื‘ื ื” ืžื•ื‘ื ื™ืช ืฉืœ ืจื–ื•ืœื•ืฆื™ื™ืช ื”ืžื•ื“ื•ืœื™ื ืื• ื”ื ื—ื™ื•ืช ื”ื”ื—ืœืคื” ืฉืœ Go. ื‘ืžืงืจื™ื ืžืกื•ื™ืžื™ื, ื”ื›ืœื™ ืขืœื•ืœ ืœืคืจืฉ ื‘ืื•ืคืŸ ืฉื’ื•ื™ ื’ืจืกืื•ืช ืžื•ื“ื•ืœื™ื ืื• ืœื ืœื”ืชืื™ื ื ื›ื•ืŸ ืืช ื”ื™ื™ืขื•ืฅ ืื ืขืฅ ื”ืชืœื•ืช ืžืฉืชื ื” ื‘ืืžืฆืขื•ืช ืชืœื•ื™ื•ืช ืขืงื™ืคื•ืช ืื• ื ืชื™ื‘ื™ ืžื•ื“ื•ืœื™ื ืžื•ืชืืžื™ื ืื™ืฉื™ืช.

ืœื‘ืกื•ืฃ, ืฉื™ืœื•ื‘ Dependency-Check ื‘ื–ืจื™ืžื•ืช ืขื‘ื•ื“ื” ืฉืœ Go ืขืฉื•ื™ ืœื“ืจื•ืฉ ื”ื’ื“ืจื•ืช ืกืงืจื™ืคื˜ ืื• ืขื˜ื™ืคื” ื ื•ืกืคื•ืช, ืžื›ื™ื•ื•ืŸ ืฉืชืžื™ื›ื” ื‘ื›ืœื™ื ืžืงื•ืจื™ื™ื ืื™ื ื” ื‘ื•ื’ืจืช ื›ืžื• ืขื‘ื•ืจ ืฉืคื•ืช ืื—ืจื•ืช ื›ืžื• Java ืื• .NET.

ื‘ื“ื™ืงืช ืชืœื•ื™ื•ืช ืฉืœ OWASP ื ื•ืชืจื” ื ื›ืก ื™ืงืจ ืขืจืš ืœื’ื™ืœื•ื™ ืชืœื•ื™ื•ืช ืคื’ื™ืขื•ืช ื™ื“ื•ืขื•ืช ื‘ืคืจื•ื™ืงื˜ื™ื ืฉืœ Go. ืขื ื–ืืช, ื”ื™ื ืคื•ืขืœืช ื‘ืฆื•ืจื” ื”ื˜ื•ื‘ื” ื‘ื™ื•ืชืจ ื‘ืฉื™ืœื•ื‘ ืขื ื›ืœื™ื ื”ืžืฆื™ืขื™ื ื ื™ืชื•ื— ืฉื™ืžื•ืฉ ื‘ืคื•ืขืœ, ืกืจื™ืงื” ืกืžื ื˜ื™ืช ื•ื‘ื“ื™ืงืช ื–ืจื™ืžืช ื ืชื•ื ื™ื. ื‘ื–ืจื™ืžื•ืช ืขื‘ื•ื“ื” ืฉืœ ื ื™ื”ื•ืœ ืคื’ื™ืขื•ื™ื•ืช, ื”ื™ื ืžืฉืžืฉืช ื›ืกื•ืจืง ื‘ืกื™ืกื™ ื—ืฉื•ื‘ ืืš ืœื ืฆืจื™ื›ื” ืœื”ื™ื•ืช ืฉื›ื‘ืช ื”ื”ื’ื ื” ื”ื™ื—ื™ื“ื”.

ื’ื•-ืกื™ื™ืงืœื•

ื’ื•-ืกื™ื™ืงืœื• ื”ื•ื ื›ืœื™ ื ื™ืชื•ื— ืกื˜ื˜ื™ ื™ื™ืขื•ื“ื™ ื”ืžื—ืฉื‘ ืืช ืžื•ืจื›ื‘ื•ืช ืฆื™ืงืœื•ืžื˜ื™ืช ืฉืœ ืคื•ื ืงืฆื™ื•ืช ื•ืžืชื•ื“ื•ืช ื‘ืงื•ื“ Go. ืžื•ืจื›ื‘ื•ืช ืฆื™ืงืœื•ืžื˜ื™ืช ื”ื™ื ืžื“ื“ ืชื•ื›ื ื” ื”ืžื•ื“ื“ ืืช ืžืกืคืจ ื ืชื™ื‘ื™ ื”ื‘ื™ืฆื•ืข ื”ืขืฆืžืื™ื™ื ื“ืจืš ืคื•ื ืงืฆื™ื”. ืฆื™ื•ื ื™ ืžื•ืจื›ื‘ื•ืช ื’ื‘ื•ื”ื™ื ืžืฆื‘ื™ืขื™ื ืœืขืชื™ื ืงืจื•ื‘ื•ืช ืขืœ ื›ืš ืฉืงืฉื” ืœื”ื‘ื™ืŸ, ืœืชื—ื–ืง ืื• ืœื‘ื“ื•ืง ื‘ื™ืขื™ืœื•ืช ืคื•ื ืงืฆื™ื”.

ืขืœ ื™ื“ื™ ื ื™ืชื•ื— ื–ืจื™ืžืช ื”ื‘ืงืจื” ืฉืœ ื›ืœ ืคื•ื ืงืฆื™ื”, GoCyclo ืžื–ื”ื” ืงื•ื“ ืฉืขืฉื•ื™ ืœื”ื™ื•ืช ืžื•ืจื›ื‘ ืžื“ื™ ื•ื™ืฉ ืœื‘ืฆืข ื‘ื• ืขื™ื‘ื•ื“ ืžื—ื“ืฉ ืœืฆื•ืจืš ืงืจื™ืื•ืช ื•ืชื—ื–ื•ืงื” ื˜ื•ื‘ื™ื ื™ื•ืชืจ. ื”ื•ื ืžืกืคืง ืฆื™ื•ื ื™ื ืžืกืคืจื™ื™ื ืœื›ืœ ืคื•ื ืงืฆื™ื” ื•ื ื™ืชืŸ ืœื”ื’ื“ื™ืจ ืื•ืชื• ืœืกืžืŸ ืงื•ื“ ื”ื—ื•ืจื’ ืžืกืฃ ืžื•ืจื›ื‘ื•ืช ืžื•ื’ื“ืจ ืขืœ ื™ื“ื™ ื”ืžืฉืชืžืฉ.

GoCyclo ืคืฉื•ื˜ ืœืฉื™ืžื•ืฉ ื•ืžืฉืชืœื‘ ื”ื™ื˜ื‘ ืขื ืžืขืจื›ื•ืช CI, ืžืขืจื›ื•ืช Pre-Commit Hooks ื•ืื•ื˜ื•ืžืฆื™ื” ืฉืœ ื‘ื™ืงื•ืจื•ืช. ื”ื•ื ื ื›ืœืœ ืœืขืชื™ื ืงืจื•ื‘ื•ืช ื‘ืฆื™ื ื•ืจื•ืช ืื‘ื˜ื—ืช ืื™ื›ื•ืช ื’ื“ื•ืœื™ื ื™ื•ืชืจ ื›ื“ื™ ืœืžื ื•ืข ืžืงื•ื“ ืœื”ืคื•ืš ืœืžื•ืจื›ื‘ ืžื“ื™ ืื• ืžืกื•ื›ืŸ ืžื“ื™ ืœืื•ืจืš ื–ืžืŸ. ืขื‘ื•ืจ ืฆื•ื•ืชื™ื ื”ืžืชืจื’ืœื™ื ืงื•ื“ ื ืงื™ ื•ืืจื›ื™ื˜ืงื˜ื•ืจื” ื‘ืช ืงื™ื™ืžื, GoCyclo ืžืฉืžืฉ ื›ืขื“ืฉื” ืื•ื‘ื™ื™ืงื˜ื™ื‘ื™ืช ืœืžื•ืจื›ื‘ื•ืช ืœื•ื’ื™ืช.

ืžื’ื‘ืœื•ืช ื•ืฉื™ืงื•ืœื™ื ืฉืœ GoCyclo

ืœืžืจื•ืช ื”ืชื•ืขืœืช ืฉืœื•, ืœ-GoCyclo ื™ืฉ ืžื™ืงื•ื“ ืฆืจ ื•ืžืกืคืจ ืžื’ื‘ืœื•ืช ืฉื”ื•ืคื›ื•ืช ืื•ืชื• ืœืžืชืื™ื ื‘ื™ื•ืชืจ ื›ื—ืœืง ืžืฉืจืฉืจืช ื›ืœื™ื ืจื—ื‘ื” ื™ื•ืชืจ.

GoCyclo ืื™ื ื• ืžื–ื”ื” ื‘ืื’ื™ื, ืคื’ื™ืขื•ื™ื•ืช ืื• ืกื™ื›ื•ื ื™ ืื‘ื˜ื—ื”. ื“ืื’ืชื• ื”ื™ื—ื™ื“ื” ื”ื™ื ืžื“ื™ื“ืช ื”ืžื•ืจื›ื‘ื•ืช ื”ืžื‘ื ื™ืช ืฉืœ ื–ืจื™ืžืช ื”ื‘ืงืจื” ื‘ืคื•ื ืงืฆื™ื•ืช. ื›ืชื•ืฆืื” ืžื›ืš, ื”ื•ื ืื™ื ื• ื™ื›ื•ืœ ืœื—ืฉื•ืฃ ืฉื’ื™ืื•ืช ืกืžื ื˜ื™ื•ืช, ืฉื™ื˜ื•ืช ืขื‘ื•ื“ื” ื’ืจื•ืขื•ืช ืื• ื“ืคื•ืกื™ ืงื™ื“ื•ื“ ืœื ื‘ื˜ื•ื—ื™ื. ืขื‘ื•ืจ ื‘ืขื™ื•ืช ื›ืืœื”, ื›ืœื™ื ืื—ืจื™ื ื›ืžื• staticcheck or gosec ืžืชืื™ืžื™ื ื™ื•ืชืจ.

ื”ื›ืœื™ ืžื ืชื— ืคื•ื ืงืฆื™ื•ืช ื‘ื ืคืจื“. ื”ื•ื ืื™ื ื• ืžืชื—ืฉื‘ ื›ื™ืฆื“ ืคื•ื ืงืฆื™ื” ืžืงื™ื™ืžืช ืื™ื ื˜ืจืืงืฆื™ื” ืขื ืื—ืจื•ืช, ื•ื’ื ืื™ื ื• ืžืขืจื™ืš ืžื•ืจื›ื‘ื•ืช ืฉื ื•ืฆืจืช ื‘ืืžืฆืขื•ืช ืชืœื•ื™ื•ืช ืื• ืฉืจืฉืจืื•ืช ืœื•ื’ื™ื•ืช ืขืงื™ืคื•ืช. ืฉืชื™ ืคื•ื ืงืฆื™ื•ืช ื™ื›ื•ืœื•ืช ืœืงื‘ืœ ืฆื™ื•ื ื™ื ื ืžื•ื›ื™ื ื›ืœ ืื—ืช ื‘ื ืคืจื“, ืืš ืขื“ื™ื™ืŸ ืœื”ื™ื•ืช ืงืฉื•ืช ืœื”ื™ื’ื™ื•ืŸ ื‘ื™ื ื™ื”ืŸ ื›ืืฉืจ ื”ืŸ ืžืฉื•ืœื‘ื•ืช, ื“ื‘ืจ ืฉ-GoCyclo ืื™ื ื• ื™ื›ื•ืœ ืœื–ื”ื•ืช.

ืœ-GoCyclo ื—ืกืจ ื’ื ื”ืงืฉืจ ืœื’ื‘ื™ ื”ืื ืžื•ืจื›ื‘ื•ืช ื’ื‘ื•ื”ื” ืžื•ืฆื“ืงืช. ืคื•ื ืงืฆื™ื•ืช ืžืกื•ื™ืžื•ืช, ื›ืžื• ืืœื• ื”ืžื˜ืคืœื•ืช ื‘ื ื™ืชื•ื— ืคืจื•ื˜ื•ืงื•ืœื™ื ืื• ื‘ื”ืขืจื›ืช ื›ืœืœื™ ืขืกืงื™ื™ื, ืขืฉื•ื™ื•ืช ืœื”ื™ื•ืช ืžื•ืจื›ื‘ื•ืช ื‘ืื•ืคืŸ ื˜ื‘ืขื™. GoCyclo ืžื˜ืคืœืช ื‘ื›ืœ ื”ืžืงืจื™ื ื‘ืื•ืคืŸ ืื—ื™ื“, ืžื” ืฉืขืœื•ืœ ืœื”ื•ื‘ื™ืœ ืœืชื•ืฆืื•ืช ื—ื™ื•ื‘ื™ื•ืช ืฉื’ื•ื™ื•ืช ื‘ื”ืงืฉืจื™ื ืžื™ื•ื—ื“ื™ื.

ืœื ื ื™ืชื ื•ืช ื”ื“ืžื™ื•ืช ืื• ืชื•ื‘ื ื•ืช ืืจื›ื™ื˜ืงื˜ื•ื ื™ื•ืช. GoCyclo ืžืคื™ืงื” ืจืฉื™ืžื” ืฉืœ ืฆื™ื•ื ื™ ืžื•ืจื›ื‘ื•ืช, ืืš ืื™ื ื” ืงื•ืฉืจืช ืื•ืชื ืœืžื“ื“ื™ื ื›ืœืœ-ืžืขืจื›ืชื™ื™ื ืื• ืœืื™ื ื“ื™ืงื˜ื•ืจื™ื ืฉืœ ื—ื•ื‘ ื˜ื›ื ื™. ืžืคืชื—ื™ื ื—ื™ื™ื‘ื™ื ืœืคืจืฉ ืืช ื”ืชื•ืฆืื•ืช ื‘ืื•ืคืŸ ื™ื“ื ื™ ืื• ืœืฉืœื‘ ืื•ืชืŸ ืขื ืœื•ื—ื•ืช ืžื—ื•ื•ื ื™ื ืื• ืฉืขืจื™ ืื™ื›ื•ืช ื›ื“ื™ ืœืงื‘ืœ ืžืฉื•ื‘ ืžืขืฉื™.

ื”ื•ื ื’ื ืœื ืžืฆื™ืข ื”ืฆืขื•ืช ืื•ื˜ื•ืžื˜ื™ื•ืช ืœืฉื™ื ื•ื™ ืคืงื˜ื•ืจื™ื ื’. ืœืžืจื•ืช ืฉื”ื•ื ืžืฆื‘ื™ืข ืขืœ ืžื•ืจื›ื‘ื•ืช, ื”ื•ื ืื™ื ื• ืžืกืคืง ื”ื ื—ื™ื•ืช ื›ื™ืฆื“ ืœื”ืคื—ื™ืช ืื•ืชื”. ืžืคืชื—ื™ื ืฆืจื™ื›ื™ื ืœื”ืฉืชืžืฉ ื‘ืฉื™ืงื•ืœ ื“ืขืชื ื›ื“ื™ ืœื‘ื ื•ืช ืžื—ื“ืฉ ืืช ื”ืงื•ื“ ื•ืœืฉืคืจ ืืช ื”ื‘ื”ื™ืจื•ืช.

GoCyclo ืื™ื“ื™ืืœื™ ืœืฆื•ื•ืชื™ื ืฉืžื˜ืจืชื ืœืื›ื•ืฃ ืคืฉื˜ื•ืช ื‘ืจืžืช ื”ืคื•ื ืงืฆื™ื” ื•ืœืฉืžื•ืจ ืขืœ ืงื•ื“ Go ื ืงื™ ื•ื ื™ืชืŸ ืœื‘ื“ื™ืงื”. ื‘ืฉื™ืžื•ืฉ ื‘ืฉื™ืœื•ื‘ ืขื ืžื ืชื—ื™ื ืื—ืจื™ื, ื”ื•ื ืชื•ืจื ืœื‘ืกื™ืก ืงื•ื“ ื‘ืจ ืชื—ื–ื•ืงื” ืขืœ ื™ื“ื™ ื”ื“ื’ืฉืช ืชื—ื•ืžื™ื ืฉืขืฉื•ื™ื™ื ืœื”ืคื™ืง ืชื•ืขืœืช ืžืจื™ืคืงื˜ื•ืจื™ื ื’ ืœืคื ื™ ืฉื”ื ื”ื•ืคื›ื™ื ืœื—ืกืจื•ื ื•ืช ื˜ื›ื ื™ื™ื.

ื’ื•-ืžื˜ื”-ืœื™ื ื˜ืจ

ื’ื•-ืžื˜ื”-ืœื™ื ื˜ืจ ื”ื™ื” ืื—ื“ ื”ื›ืœื™ื ื”ืจืืฉื•ื ื™ื ืฉื ื•ืฆืจื• ื›ื“ื™ ืœืื’ื“ ืžืกืคืจ ืจื‘ ืฉืœ ืžืขืจื›ื•ืช Go Linters ืชื—ืช ืžืžืฉืง ื™ื—ื™ื“. ืžื˜ืจืชื• ื”ืขื™ืงืจื™ืช ื”ื™ื™ืชื” ืœื™ื™ืขืœ ืืช ื ื™ืชื•ื— ื”ืงื•ื“ ื”ืกื˜ื˜ื™ ืขืœ ื™ื“ื™ ืžืชืŸ ืืคืฉืจื•ืช ืœืžืคืชื—ื™ื ืœื”ืจื™ืฅ ื—ื‘ื™ืœืช ืžืขืจื›ื•ืช Go Linters ื‘ืžืงื‘ื™ืœ ื‘ืžืงื•ื ืœื”ืคืขื™ืœ ื›ืœ ืื—ืช ื‘ื ืคืจื“. GoMetaLinter ืชืžืš ื‘ืขืฉืจื•ืช ื›ืœื™ ืงื”ื™ืœื” ื•ื›ืœื™ ืœื™ื‘ื”, ื›ื•ืœืœ golint, vet, staticcheck, ineffassign, ื• errcheck, ื‘ื™ืŸ ื”ื™ืชืจ.

ื‘ืžืฉืš ืชืงื•ืคื” ืžืกื•ื™ืžืช, ื”ื™ื ืฉื™ืžืฉื” ื›ื‘ื—ื™ืจื” ื”ืกื˜ื ื“ืจื˜ื™ืช ืขื‘ื•ืจ ืฆื•ื•ืชื™ื ืฉืจืฆื• ื›ื™ืกื•ื™ ืžื”ื™ืจ ื•ื ื™ืชืŸ ืœื”ื’ื“ืจื” ืฉืœ ื‘ืขื™ื•ืช linting ื‘ืคืงื•ื“ื” ืื—ืช. ื”ื™ื ื”ืฆื™ืขื” ืืคืฉืจื•ื™ื•ืช ืฉื™ืžื•ืฉื™ื•ืช ืœื”ืคืขืœื” ืื• ื”ืฉื‘ืชื” ืฉืœ ื‘ืขื™ื•ืช linting ืกืคืฆื™ืคื™ื•ืช, ืกื™ื ื•ืŸ ืคืœื˜ ืœืคื™ ื—ื•ืžืจื”, ื”ืชืืžื” ืื™ืฉื™ืช ืฉืœ timeouts ื•ื”ืคืงืช ืคืœื˜ ืงืจื™ื ืขืœ ื™ื“ื™ ืžื›ื•ื ื”. GoMetaLinter ืžื™ืœืื” ืชืคืงื™ื“ ื—ืฉื•ื‘ ื‘ืขื™ืฆื•ื‘ ื”ืื•ืคืŸ ืฉื‘ื• ืคืจื•ื™ืงื˜ื™ื ืฉืœ Go ืฉื™ืœื‘ื• ื ื™ืชื•ื— ืกื˜ื˜ื™ ื‘ืฆื™ื ื•ืจื•ืช CI, ื‘ืžื™ื•ื—ื“ ื‘ืฉื ื™ื ื”ืจืืฉื•ื ื•ืช ืฉืœ ืฆืžื™ื—ืชื” ืฉืœ Go.

ืœืžืจื•ืช ืฉื”ื•ื ื›ื‘ืจ ืœื ืžืชื•ื—ื–ืง ื‘ืื•ืคืŸ ืคืขื™ืœ, ืžื•ืจืฉืชื• ืฉืœ GoMetaLinter ืžืžืฉื™ื›ื” ื‘ื›ืœื™ื ืฉืœืžื“ื• ืžื”ืืจื›ื™ื˜ืงื˜ื•ืจื” ืฉืœื• ื•ืฉื™ืคืจื• ืืช ืžื’ื‘ืœื•ืชื™ื•, ื›ื’ื•ืŸ golangci-lint.

ืžื’ื‘ืœื•ืช ื•ื”ืชื™ื™ืฉื ื•ืช ืฉืœ GoMetaLinter

ื‘ืขื•ื“ ืฉ-GoMetaLinter ื”ื™ื™ืชื” ื‘ืขืœืช ื”ืฉืคืขื”, ื”ื™ื ืžื’ื™ืขื” ืขื ืžืกืคืจ ืžื’ื‘ืœื•ืช ืžืฉืžืขื•ืชื™ื•ืช ืฉืžืคืชื—ื™ื ืฆืจื™ื›ื™ื ืœืฉืงื•ืœ ืœืคื ื™ ืื™ืžื•ืฅ ืื• ื”ืžืฉืš ื”ืฉื™ืžื•ืฉ ื‘ื”.

ื”ื›ืœื™ ื”ื•ืฆื ืžืฉื™ืžื•ืฉ ื‘ืื•ืคืŸ ืจืฉืžื™ ื•ืœื ืงื™ื‘ืœ ืชื—ื–ื•ืงื” ืื• ืขื“ื›ื•ื ื™ื ืคืขื™ืœื™ื ื‘ืžืฉืš ืžืกืคืจ ืฉื ื™ื. ืžืฉืžืขื•ืช ื”ื“ื‘ืจ ื”ื™ื ืฉื™ื™ืชื›ืŸ ืฉื”ื•ื ืœื ื™ืชืžื•ืš ื‘ื’ืจืกืื•ืช ื—ื“ืฉื•ืช ื™ื•ืชืจ ืฉืœ Go, ื‘ื’ืจืกืช linter ื—ื“ืฉื” ื™ื•ืชืจ ืื• ื‘ืชื›ื•ื ื•ืช ืฉืคื” ืžืขื•ื“ื›ื ื•ืช. ื‘ืขื™ื•ืช ืชืื™ืžื•ืช ืขืœื•ืœื•ืช ืœื”ืชืขื•ืจืจ ื‘ืกื‘ื™ื‘ื•ืช ืคื™ืชื•ื— ืžื•ื“ืจื ื™ื•ืช, ืžื” ืฉืžื•ื‘ื™ืœ ืœืฉื’ื™ืื•ืช, ืื‘ื—ื•ื ื™ื ืœื ืžื“ื•ื™ืงื™ื ืื• ืื™ื ื˜ื’ืจืฆื™ื•ืช ืคื’ื•ืžื•ืช.

ื‘ื™ืฆื•ืขื™ื ื”ื ื—ื™ืกืจื•ืŸ ื™ื“ื•ืข. GoMetaLinter ืžืจื™ืฅ ื›ืœ ืชื”ืœื™ืš ืœื™ื ื˜ืจ ื›ืชืช-ืชื”ืœื™ืš ื ืคืจื“, ืœืขืชื™ื ืงืจื•ื‘ื•ืช ืœืœื ืชื™ืื•ื ื™ืขื™ืœ ืื• ื”ืงืฉืจ ืžืฉื•ืชืฃ. ื”ืชื•ืฆืื” ื”ื™ื ื–ืžื ื™ ื ื™ืชื•ื— ืืจื•ื›ื™ื, ื‘ืžื™ื•ื—ื“ ืขื‘ื•ืจ ืคืจื•ื™ืงื˜ื™ื ื’ื“ื•ืœื™ื ื™ื•ืชืจ. ื›ืœื™ื ื—ื“ืฉื™ื ื™ื•ืชืจ ื›ืžื• golangci-lint ื™ื™ืขืœื• ืืช ื”ืชื”ืœื™ืš ื”ื–ื” ืขืœ ื™ื“ื™ ื”ื˜ืžืขืช ื—ื•ืžืจื™ ื’ืœื ื™ืฉื™ืจื•ืช ื•ืžื–ืขื•ืจ ืชืงื•ืจื”.

ืื™ืŸ ืชืžื™ื›ื” ืžื•ื‘ื ื™ืช ื‘ืžื•ื“ื•ืœื™ Go. ื›ื›ืœ ืฉื”ืžืขืจื›ืช ื”ืืงื•ืœื•ื’ื™ืช ืฉืœ Go ืขื‘ืจื” ืž... GOPATH ืขื‘ื•ืจ ืžื•ื“ื•ืœื™ื, GoMetaLinter ืœื ื”ืชืคืชื— ื›ื“ื™ ืœืชืžื•ืš ื‘ื–ืจื™ืžืช ื”ืขื‘ื•ื“ื” ื”ื—ื“ืฉื”. ืžืคืชื—ื™ื ืฉืขื•ื‘ื“ื™ื ืขื ืคืจื•ื™ืงื˜ื™ื ืžื‘ื•ืกืกื™ ืžื•ื“ื•ืœื™ื ื—ื™ื™ื‘ื™ื ืœื”ืชืื™ื ื ืชื™ื‘ื™ื ื‘ืื•ืคืŸ ื™ื“ื ื™ ืื• ืœื”ื™ืชืงืœ ื‘ื”ืชื ื”ื’ื•ืช ื‘ืœืชื™ ืฆืคื•ื™ื”.

ืœ-GoMetaLinter ื—ืกืจื•ืช ื’ื ืชื›ื•ื ื•ืช ืขืžื•ืงื•ืช ื™ื•ืชืจ ืฉืœ ื ื™ืชื•ื— ืกืžื ื˜ื™ ืื• ืžื‘ื ื™. ื”ื•ื ืžืฉืžืฉ ื‘ืขื™ืงืจ ื›ืžืขื˜ืคืช ื•ืื™ื ื• ืžื•ืกื™ืฃ ืื™ื ื˜ืœื™ื’ื ืฆื™ื” ืžืขื‘ืจ ืœืื™ืกื•ืฃ ืคืœื˜. ืขื‘ื•ืจ ืฆื•ื•ืชื™ื ื”ื–ืงื•ืงื™ื ืœื ื™ืชื•ื— ื–ืจื™ืžืช ื‘ืงืจื”, ืžืขืงื‘ ืื—ืจ ื–ืจื™ืžืช ื ืชื•ื ื™ื ืื• ืื™ืžื•ืช ืืจื›ื™ื˜ืงื˜ื•ืจื”, ื ื“ืจืฉื™ื ื›ืœื™ื ืžืชืงื“ืžื™ื ื™ื•ืชืจ.

ื”ื”ืชืืžื” ื”ืื™ืฉื™ืช ืžื•ื’ื‘ืœืช ืขืœ ื™ื“ื™ ื”-linters ื”ื‘ื•ื“ื“ื™ื ืฉื”ื•ื ืชื•ืžืš ื‘ื”ื. ืœืžืจื•ืช ืฉื”ื•ื ืžืืคืฉืจ ื”ื’ื“ืจื” ืฉืœ ืื™ืœื• ื›ืœื™ื ืœื”ืจื™ืฅ, ื”ื•ื ืื™ื ื• ืžืกืคืง ืžืขืจื›ืช ืชื•ืกืคื™ื ื ื™ืชื ืช ืœื”ืจื—ื‘ื” ืื• ืชืžื™ื›ื” ื‘ื›ืชื™ื‘ืช ื‘ื“ื™ืงื•ืช ืžื•ืชืืžื•ืช ืื™ืฉื™ืช ืขืœ ืคื ื™ ื”ืคืœื˜ ื”ืžืฆื˜ื‘ืจ.

ืžืกื™ื‘ื•ืช ืืœื”, GoMetaLinter ื ื—ืฉื‘ ื›ื›ืœื™ ื”ื™ืกื˜ื•ืจื™. ืจื•ื‘ ืฆื•ื•ืชื™ ื”-Go ื”ืžื•ื“ืจื ื™ื™ื ืขื‘ืจื• ืœื—ืœื•ืคื•ืช ื›ืžื• golangci-lint, ื”ืžืกืคืงื™ื ื‘ื™ืฆื•ืขื™ื ืžื”ื™ืจื™ื ื™ื•ืชืจ, ืชืื™ืžื•ืช ืจื—ื‘ื” ื™ื•ืชืจ ื•ืงื”ื™ืœืช ืคื™ืชื•ื— ืคืขื™ืœื” ื™ื•ืชืจ.

GoSec

GoSec ื”ื•ื ืื—ื“ ืžื›ืœื™ ื”ื ื™ืชื•ื— ื”ืกื˜ื˜ื™ ื”ืžื•ื›ืจื™ื ื‘ื™ื•ืชืจ ื”ืžื•ืงื“ืฉื™ื ืœืกืจื™ืงืช ืื‘ื˜ื—ื” ื‘ืคืจื•ื™ืงื˜ื™ื ืฉืœ Go. ืžื˜ืจืชื• ื”ืขื™ืงืจื™ืช ื”ื™ื ืœื–ื”ื•ืช ื“ืคื•ืกื™ ืงื™ื“ื•ื“ ื ืคื•ืฆื™ื ืฉืขืœื•ืœื™ื ืœื”ื›ื ื™ืก ืคื’ื™ืขื•ื™ื•ืช ื›ื’ื•ืŸ ื”ื–ืจืงืช ืคืงื•ื“ื•ืช, ืกื•ื“ื•ืช ืžืงื•ื“ื“ื™ื, ืฉื™ืžื•ืฉ ืœื ืžืื•ื‘ื˜ื— ื‘-TLS ืื• ื˜ื™ืคื•ืœ ืœื ืชืงื™ืŸ ื‘ืฉื’ื™ืื•ืช. ื”ื•ื ืžื ืชื— ืงื‘ืฆื™ ืงื•ื“ ืžืงื•ืจ ืขื‘ื•ืจ ื‘ืขื™ื•ืช ืกืคืฆื™ืคื™ื•ืช ื•ืžื“ื•ื•ื— ืขืœ ืžืžืฆืื™ื ืขืœ ืกืžืš ืกื˜ ืžื•ื‘ื ื” ืฉืœ ื›ืœืœื™ื ืžืžื•ืงื“ื™ ืื‘ื˜ื—ื”.

GoSec ืชื•ืžืš ื‘ืคื•ืจืžื˜ื™ื ืžืจื•ื‘ื™ื ืฉืœ ืคืœื˜, ื›ื•ืœืœ ื˜ืงืกื˜ ืจื’ื™ืœ, JSON ื•-SARIF, ืžื” ืฉืžืงืœ ืขืœ ืฉื™ืœื•ื‘ื• ื‘ื–ืจื™ืžื•ืช ืขื‘ื•ื“ื” ืฉืœ CI/CD ื•ื‘ืœื•ื—ื•ืช ืžื—ื•ื•ื ื™ื ืฉืœ ืื‘ื˜ื—ื”. ื”ื•ื ืžืฆื™ืข ื’ื ืกื™ื ื•ืŸ ืœืคื™ ื—ื•ืžืจืช ื›ืœืœื™ื, ืื™ ื”ื›ืœืœืช ืกืคืจื™ื•ืช ืื• ื—ื‘ื™ืœื•ืช ืกืคืฆื™ืคื™ื•ืช ื•ื”ื›ืœืœืช ื›ืœืœื™ื ื ื™ืชื ืช ืœื”ื’ื“ืจื”. ืชื›ื•ื ื•ืช ืืœื• ืขื•ื–ืจื•ืช ืœืฆื•ื•ืชื™ื ืœื›ื•ื•ื ืŸ ืืช ื”ืชื•ืฆืื•ืช ื›ืš ืฉื™ืชืื™ืžื• ืœืกื‘ื™ืœื•ืช ืฉืœื”ื ืœืกื™ื›ื•ืŸ ื•ืจืขืฉ.

ื”ื›ืœื™ ืžืื•ืžืฅ ืœืขืชื™ื ืงืจื•ื‘ื•ืช ื‘ืฉืœื‘ ืžื•ืงื“ื ืฉืœ ืฉื™ื˜ื•ืช ืื‘ื˜ื—ื” ืฉืœ Go, ืžื›ื™ื•ื•ืŸ ืฉื”ื•ื ืžืกืคืง ื ืงื•ื“ืช ื›ื ื™ืกื” ืžื”ื™ืจื” ื•ืงืœืช ืžืฉืงืœ ืœื’ื™ืœื•ื™ ื”ืชื ื”ื’ื•ื™ื•ืช ืงื™ื“ื•ื“ ืœื ืžืื•ื‘ื˜ื—ื•ืช ื™ื“ื•ืขื•ืช. ื”ื•ื ืขื•ื‘ื“ ื”ื™ื˜ื‘ ื”ืŸ ืขื‘ื•ืจ ื™ื™ืฉื•ืžื™ื ืงื˜ื ื™ื ื•ื”ืŸ ืขื‘ื•ืจ ืืจื›ื™ื˜ืงื˜ื•ืจื•ืช ืžื™ืงืจื•-ืฉื™ืจื•ืชื™ื ื’ื“ื•ืœื•ืช, ื‘ืžื™ื•ื—ื“ ื›ืืฉืจ ื”ื•ื ืžื•ืคืขืœ ื‘ืื•ืคืŸ ืงื‘ื•ืข ื›ื—ืœืง ืžืคืœื™ื ื•ืจื•ืช ืื•ื˜ื•ืžื˜ื™ื™ื.

ืžื’ื‘ืœื•ืช ื•ืื™ืœื•ืฆื™ื ืฉืœ GoSec

ื‘ืขื•ื“ ืฉ-GoSec ื”ื•ื ื›ืœื™ ื‘ืขืœ ืขืจืš ืœื–ื™ื”ื•ื™ ืคื’ื™ืขื•ื™ื•ืช ื‘ืจืžืช ื”ืฉื˜ื—, ื”ื•ื ืคื•ืขืœ ืชื—ืช ืžื’ื‘ืœื•ืช ืžืกื•ื™ืžื•ืช ืฉื”ื•ืคื›ื•ืช ืื•ืชื• ืœืœื ืžืชืื™ื ื›ืคืชืจื•ืŸ ืื‘ื˜ื—ื” ืžืœื ืขื‘ื•ืจ ื‘ืกื™ืกื™ ืงื•ื“ ืžื•ืจื›ื‘ื™ื ื™ื•ืชืจ.

GoSec ืžืฉืชืžืฉ ื‘ื”ืชืืžื” ืกื˜ื˜ื™ืช ืžื‘ื•ืกืกืช ื›ืœืœื™ื ื›ื“ื™ ืœื–ื”ื•ืช ื‘ืขื™ื•ืช. ื”ื•ื ืื™ื ื• ืžื‘ืฆืข ื–ืจื™ืžืช ื ืชื•ื ื™ื ืžืขืžื™ืงื” ืื• ื ื™ืชื•ื— ื–ื™ื”ื•ืžื™ื. ืžืฉืžืขื•ืช ื”ื“ื‘ืจ ื”ื™ื ืฉื”ื•ื ืื™ื ื• ื™ื›ื•ืœ ืœืขืงื•ื‘ ืื—ืจ ื”ืื•ืคืŸ ืฉื‘ื• ืงืœื˜ ืœื ืืžื™ืŸ ืขื•ื‘ืจ ื“ืจืš ื”ืืคืœื™ืงืฆื™ื” ืื• ื”ืื ื”ื•ื ืžื’ื™ืข ื‘ืกื•ืคื• ืฉืœ ื“ื‘ืจ ืœืคืขื•ืœื•ืช ืจื’ื™ืฉื•ืช. ื›ืชื•ืฆืื” ืžื›ืš, ื”ื•ื ืขืœื•ืœ ืœืคืกืคืก ืคื’ื™ืขื•ื™ื•ืช ืžืจื•ื‘ื•ืช ืฉืœื‘ื™ื ื”ื“ื•ืจืฉื•ืช ื”ื‘ื ื” ืฉืœ ื”ื”ืงืฉืจ ื‘ื›ืœืœื•ืช ื”ืชื•ื›ื ื™ืช.

ื”ื›ืœื™ ืื™ื ื• ื‘ื•ื ื” ื’ืจืคื™ ื–ืจื™ืžืช ื‘ืงืจื” ืื• ืžื“ืžื” ื‘ื™ืฆื•ืข. ื”ื•ื ืื™ื ื• ื™ื›ื•ืœ ืœื”ืกื™ืง ืžืกืงื ื•ืช ืœื’ื‘ื™ ืขื ืคื™ื ืžื•ืชื ื™ื, ื ืชื™ื‘ื™ื ื‘ืœืชื™ ื ื’ื™ืฉื™ื ืื• ืกื™ื›ื•ื ื™ ื‘ื™ืฆื•ืข ื‘ื•-ื–ืžื ื™ื™ื. ื”ื•ื ื’ื ืื™ื ื• ืžื•ื“ืข ืœื”ืงืฉืจ ื”ื‘ื™ืฆื•ืข, ื“ื‘ืจ ื”ืžื’ื‘ื™ืœ ืืช ื™ื›ื•ืœืชื• ืœื–ื”ื•ืช ืคื’ื™ืขื•ื™ื•ืช ืžื‘ื•ืกืกื•ืช ืชื–ืžื•ืŸ ืื• ืคื’ืžื™ื ืœื•ื’ื™ื™ื ื”ืงืฉื•ืจื™ื ืœื”ืชื ื”ื’ื•ืช ืกืคืฆื™ืคื™ืช ืœืกื‘ื™ื‘ื”.

GoSec ืื™ื ื• ืžื•ื“ืข ืœืžืงื‘ื™ืœื•ืช. ื”ื•ื ืื™ื ื• ื™ื›ื•ืœ ืœื–ื”ื•ืช ืชื ืื™ ืžืจื•ืฅ, ืฉื™ืžื•ืฉ ืœื ื ื›ื•ืŸ ื‘-gorutines ืื• ื”ืชื ื’ืฉื•ื™ื•ืช ืžืฉืื‘ื™ื ืžืฉื•ืชืคื™ื ืฉืขืœื•ืœื•ืช ืœื”ื•ื‘ื™ืœ ืœื”ืชื ื”ื’ื•ืช ื‘ืœืชื™ ืฆืคื•ื™ื” ืื• ืœื—ื•ืœืฉื•ืช ืื‘ื˜ื—ื” ื‘ื™ื™ืฆื•ืจ.

ื›ืชื™ื‘ืช ื›ืœืœื™ื ืžื•ืชืืžื™ื ืื™ืฉื™ืช ืžื•ื’ื‘ืœืช. ื‘ืขื•ื“ ืฉืืคืฉืจ ืœื‘ืฆืข ื›ื•ื•ื ื•ืŸ ืžืกื•ื™ื, GoSec ืื™ื ื” ืžืฆื™ืขื” ืฉืคืช ืฉืื™ืœืชื•ืช ืื• ื”ื’ื“ืจืช ื›ืœืœื™ื ื’ืžื™ืฉื” ื›ืžื• Semgrep ืื• CodeQL. ืฆื•ื•ืชื™ื ื”ืžืขื•ื ื™ื™ื ื™ื ืœืื›ื•ืฃ ืžื“ื™ื ื™ื•ืช ืื‘ื˜ื—ื” ืคื ื™ืžื™ืช ืื• ืœื–ื”ื•ืช ืื™ื•ืžื™ื ืกืคืฆื™ืคื™ื™ื ืœื™ื™ืฉื•ื ืขืฉื•ื™ื™ื ืœื”ืชืงืฉื•ืช ืœื”ืจื—ื™ื‘ ืืช ื”ื›ืœื™ ื‘ืื•ืคืŸ ืžืฉืžืขื•ืชื™.

ืชื•ืฆืื•ืช ื—ื™ื•ื‘ื™ื•ืช ืฉื’ื•ื™ื•ืช ื™ื›ื•ืœื•ืช ืœื”ืชืจื—ืฉ ื‘ืžืฆื‘ื™ื ื‘ื”ื ืงื•ื“ ืชื•ืื ื“ืคื•ืก ื™ื“ื•ืข ืืš ืžื•ื’ืŸ ืขืœ ื™ื“ื™ ื”ืงืฉืจ ืื• ืœื•ื’ื™ืงืช ืื™ืžื•ืช. ืžืคืชื—ื™ื ืขืฉื•ื™ื™ื ืœื”ืฉืงื™ืข ื–ืžืŸ ื‘ื‘ื“ื™ืงืช ื”ืชืจืื•ืช ืฉืื™ื ืŸ ื‘ืืžืช ื ื™ืชื ื•ืช ืœืคืขื•ืœื”, ื‘ืžื™ื•ื—ื“ ื‘ื‘ืกื™ืกื™ ืงื•ื“ ืžื“ื•ืจ ืงื•ื“ื ืฉื‘ื”ื ื ืคื•ืฆื™ื ื‘ื™ื˜ื•ื™ื™ื ืžื•ืจื›ื‘ื™ื.

GoSec ื ื•ืชืจ ืกื•ืจืง ืžื•ืขื™ืœ ื‘ืฉืœื‘ื™ื ืžื•ืงื“ืžื™ื ืขื‘ื•ืจ ืคืจื•ื™ืงื˜ื™ื ืฉืœ Go. ื”ื•ื ืžืกืคืง ืžืฉื•ื‘ ืžื”ื™ืจ ืขืœ ืกื™ื›ื•ื ื™ื ื ืคื•ืฆื™ื ื•ืžืกื™ื™ืข ื‘ื—ื™ื–ื•ืง ืฉื™ื˜ื•ืช ืงื™ื“ื•ื“ ืžืื•ื‘ื˜ื—ื•ืช. ืขื ื–ืืช, ืฆื•ื•ืชื™ื ื”ืคื•ืขืœื™ื ื‘ืกื‘ื™ื‘ื•ืช ืžื•ืกื“ืจื•ืช ืื• ืขื ื“ืจื™ืฉื•ืช ืื‘ื˜ื—ื” ืงืจื™ื˜ื™ื•ืช ืฆืจื™ื›ื™ื ืœื”ืฉืชืžืฉ ื‘ื• ืœืฆื“ ืžื ืชื—ื™ื ืกื˜ื˜ื™ื™ื ืžืขืžื™ืงื™ื ื™ื•ืชืจ ื•ื›ืœื™ ืื‘ื˜ื—ื” ื‘ื–ืžืŸ ืจื™ืฆื” ื›ื“ื™ ืœื”ืฉื™ื’ ื›ื™ืกื•ื™ ืžืœื.

ื“ื“ืงื•ื“

ื“ื“ืงื•ื“ ื”ื•ื ื›ืœื™ ื ื™ืชื•ื— ืกื˜ื˜ื™ ื”ืกื•ืจืง ืงื‘ืฆื™ ืžืงื•ืจ ืฉืœ Go ื›ื“ื™ ืœื–ื”ื•ืช ืงื•ื“ ืฉืื™ื ื• ื‘ืฉื™ืžื•ืฉ, ื›ื’ื•ืŸ ืคื•ื ืงืฆื™ื•ืช, ืžืฉืชื ื™ื, ืงื‘ื•ืขื™ื ื•ืกื•ื’ื™ื ืฉืื™ื ื ืžืžื•ืคื ื™ื. ืžื˜ืจืชื• ื”ืขื™ืงืจื™ืช ื”ื™ื ืœืขื–ื•ืจ ืœืžืคืชื—ื™ื ืœื ืงื•ืช ืืช ื‘ืกื™ืก ื”ืงื•ื“ ืฉืœื”ื ืขืœ ื™ื“ื™ ื”ืกืจืช ื”ื’ื“ืจื•ืช ืฉืžืขื•ืœื ืœื ื ืงืจืื•ืช ืื• ื ื™ื’ืฉื•ืช ืืœื™ื”ืŸ. ื–ื” ืœื ืจืง ืžืฉืคืจ ืืช ื”ืงืจื™ืื•ืช ืืœื ื’ื ืžืคื—ื™ืช ืืช ืขืœื•ื™ื•ืช ื”ืชื—ื–ื•ืงื” ืขืœ ื™ื“ื™ ื”ืกืจืช ืงื•ื“ ืฉืื™ื ื• ืžืฉืจืช ืžื˜ืจื” ืคื•ื ืงืฆื™ื•ื ืœื™ืช.

ื”ื›ืœื™ ืคื•ืขืœ ื‘ืžื”ื™ืจื•ืช ื•ืžืฉืชืœื‘ ื”ื™ื˜ื‘ ื‘ืฆื™ื ื•ืจื•ืช ื‘ื ื™ื™ื” ืื• ื‘ืฉืจืฉืจืื•ืช ื›ืœื™ื ืฉืœ ืžืคืชื—ื™ื. ื”ื•ื ืžืกืคืง ืคืœื˜ ื˜ืงืกื˜ ืจื’ื™ืœ ื•ืชื•ืžืš ื‘ืฉื™ืžื•ืฉ ื‘ืฉื•ืจืช ืคืงื•ื“ื”, ืžื” ืฉืžืงืœ ืขืœ ืฉื™ืœื•ื‘ื• ื‘ืกืงืจื™ืคื˜ื™ื ืื• ื‘ื‘ื“ื™ืงื•ืช ื˜ืจื•ื-ืงื•ืžื™ื˜. ืงื•ื“ deadcode ืฉื™ืžื•ืฉื™ ื‘ืžื™ื•ื—ื“ ื‘ืคืจื•ื™ืงื˜ื™ื ื’ื“ื•ืœื™ื ืื• ื™ืฉื ื™ื ืฉืœ Go ืฉื‘ื”ื ืฉืจื™ื“ื™ื ืฉืœ ืฉื™ื ื•ื™ื™ ืงื•ื“ืžื™ื ืขืฉื•ื™ื™ื ืœื”ื™ืฉืืจ ื‘ืฉืงื˜ ื‘ืจืงืข.

ืขืœ ื™ื“ื™ ื”ืชืžืงื“ื•ืช ืžื•ื—ืœื˜ืช ื‘ืงื•ื“ ืฉืื™ืŸ ืœื• ื”ืฉืคืขื” ืื• ืฉื™ืžื•ืฉ, deadcode ืขื•ื–ืจ ืœืฆื•ื•ืชื™ื ืœื–ื”ื•ืช ื—ื•ื‘ื•ืช ื˜ื›ื ื™ื™ื ืฉืœืขืชื™ื ืงืจื•ื‘ื•ืช ืื™ื ื ืžื•ืจื’ืฉื™ื. ื”ื•ื ืžืงื“ื ืžืžืฉืงื™ื ื ืงื™ื™ื ื™ื•ืชืจ, ืžืžืฉืงื™ API ื”ื“ื•ืงื™ื ื™ื•ืชืจ ื•ืืจื’ื•ืŸ ืงื•ื“ ืžื›ื•ื•ืŸ ื™ื•ืชืจ.

ืžื’ื‘ืœื•ืช ื•ืื™ืœื•ืฆื™ื ืฉืœ ืงื•ื“ ืžืช

ื‘ืขื•ื“ ืฉ-deadcode ืžื•ืขื™ืœ ืœื–ื™ื”ื•ื™ ื”ื’ื“ืจื•ืช ืžื™ื•ืชืจื•ืช, ื”ื•ื ืคื•ืขืœ ื‘ื”ื™ืงืฃ ืžื•ื’ื‘ืœ ื”ืžืฉืคื™ืข ืขืœ ื”ืชื•ืขืœืช ืฉืœื• ื‘ืกื‘ื™ื‘ื•ืช ืžืกื•ื™ืžื•ืช.

ื”ื›ืœื™ ืžื ืชื— ืงื•ื“ ื‘ืื•ืคืŸ ืกื˜ื˜ื™ ืืš ืื™ื ื• ืžืชื—ืฉื‘ ื‘ื”ืชื ื”ื’ื•ืช ื–ืžืŸ ืจื™ืฆื”. ื”ื•ื ืื™ื ื• ื™ื›ื•ืœ ืœื–ื”ื•ืช ืฉื™ืžื•ืฉื™ื ื“ื™ื ืžื™ื™ื ื‘ืžื–ื”ื™ื ื‘ืืžืฆืขื•ืช ื”ืฉืชืงืคื•ืช, ืžืขืจื›ื•ืช ืชื•ืกืคื™ื ืื• ืฉื™ื’ื•ืจ ืžื‘ื•ืกืก ืžืžืฉืง. ืžืฆื‘ ื–ื” ืขืœื•ืœ ืœื’ืจื•ื ืœืชื•ืฆืื•ืช ื—ื™ื•ื‘ื™ื•ืช ืฉื’ื•ื™ื•ืช ืฉื‘ื”ืŸ ืงื•ื“ ื ืจืื” ืฉืื™ื ื• ื‘ืฉื™ืžื•ืฉ ืืš ื‘ืคื•ืขืœ ืžื•ืคืขืœ ื‘ื“ืจื›ื™ื ืฉืื™ื ืŸ ื ืจืื•ืช ื“ืจืš ื”ืคื ื™ื•ืช ืกื˜ื˜ื™ื•ืช.

deadcode ืื™ื ื• ืžื‘ื™ืŸ ืงื‘ืฆื™ ื‘ื“ื™ืงื” ืื• ืงื•ื“ ื”ืžื•ืคืขืœื™ื ื“ืจืš ืžืกื’ืจื•ืช ื‘ื“ื™ืงื” ืืœื ืื ื›ืŸ ื”ื ื›ืœื•ืœื™ื ื‘ืžืคื•ืจืฉ. ื–ื” ื™ื›ื•ืœ ืœื’ืจื•ื ืœื• ืœืกืžืŸ ืคื•ื ืงืฆื™ื•ืช ืขื•ื–ืจื•ืช ื‘ื“ื™ืงื” ืื• ืœื•ื’ื™ืงืช ื”ื’ื“ืจื” ื›ืœื ื‘ืฉื™ืžื•ืฉ, ืœืžืจื•ืช ืฉื”ืŸ ื—ืฉื•ื‘ื•ืช ืœื ื›ื•ื ื•ืช ื”ืคืจื•ื™ืงื˜ ื•ืœื›ื™ืกื•ื™ ื”ื‘ื“ื™ืงื”.

ืื™ืŸ ื ื™ืชื•ื— ื–ืจื™ืžืช ื‘ืงืจื” ืื• ืžืขืงื‘ ืื—ืจ ืชืœื•ืช ื‘ื™ืŸ ื—ื‘ื™ืœื•ืช. ื”ื›ืœื™ ืžืชืžืงื“ ืจืง ื‘ืงื‘ืฆื™ื ืžืงื•ืžื™ื™ื ืื• ื‘ื—ื‘ื™ืœื•ืช ื”ืžืคื•ืจื˜ื•ืช ื‘ืžืคื•ืจืฉ. ื”ื•ื ืื™ื ื• ืžืขืจื™ืš ื”ืื ืงื•ื“ ืžืฉืžืฉ ื‘ื“ืจื›ื™ื ืขืงื™ืคื•ืช ืžืขื‘ืจ ืœื’ื‘ื•ืœื•ืช ืžื•ื“ื•ืœื™ื ืื• ื™ื™ื‘ื•ื โ€‹โ€‹ื“ื™ื ืžื™.

ื”ื•ื ืื™ื ื• ืžืกืคืง ื”ืฆืขื•ืช ื›ื™ืฆื“ ืœื”ืกื™ืจ ืงื•ื“ ืžืกื•ืžืŸ ื‘ื‘ื˜ื—ื” ืื• ืœื”ืขืจื™ืš ื”ืื ื”ืงื•ื“ ืฉืื™ื ื• ื‘ืฉื™ืžื•ืฉ ืžืฉืคื™ืข ืขืœ ืžืžืฉืงื™ API ื—ื™ืฆื•ื ื™ื™ื. ืžืคืชื—ื™ื ื—ื™ื™ื‘ื™ื ืœื‘ื“ื•ืง ื•ืœืืžืช ืฉื”ื’ื“ืจื•ืช ืžืกื•ืžื ื•ืช ื‘ื˜ื•ื—ื•ืช ืœืžื—ื™ืงื”, ื‘ืžื™ื•ื—ื“ ื‘ืขืช ืขื‘ื•ื“ื” ื‘ืกืคืจื™ื•ืช ืื• ื‘ื—ื‘ื™ืœื•ืช ืžื™ื•ืฆืื•ืช.

ืืคืฉืจื•ื™ื•ืช ื”ื”ืชืืžื” ื”ืื™ืฉื™ืช ื”ืŸ ืžื™ื ื™ืžืœื™ื•ืช. ืื™ืŸ ืกื™ื ื•ืŸ ืœืคื™ ืกื•ื’ ืžื–ื”ื”, ืื™ืŸ ื“ืจืš ืœื“ื›ื ืื–ื”ืจื•ืช ืกืคืฆื™ืคื™ื•ืช ื‘ืชื•ืš ื”ืฉื•ืจื”, ื•ืื™ืŸ ืžื ื’ื ื•ืŸ ืœื”ืชืขืœืžื•ืช ืžื ืชื™ื‘ื™ ืงื•ื“ ืฉื ื•ืฆืจื• ืื• ืžื“ื•ืจ ืงื•ื“ื. ื–ื” ื™ื›ื•ืœ ืœื”ื•ื‘ื™ืœ ืœืจืขืฉ ืขื•ื“ืฃ ื‘ืคืจื•ื™ืงื˜ื™ื ืžืกื•ื™ืžื™ื ืืœื ืื ื›ืŸ ืžื™ื•ืฉืžืช ืœื•ื’ื™ืงืช ืขื˜ื™ืคื” ื ื•ืกืคืช.

ืงื•ื“ ื“ื™ืื“ (deadcode) ื™ืขื™ืœ ื‘ื™ื•ืชืจ ื‘ืžืขื‘ืจื™ ื”ื™ื’ื™ื™ื ืช ืงื•ื“ ืžืžื•ืงื“ื™ื ืื• ื›ื—ืœืง ืžื™ื•ื–ืžื•ืช ืœื”ืคื—ืชืช ื—ื•ื‘ื•ืช ื˜ื›ื ื™ื™ื. ื”ื•ื ืžืกืคืง ืชื•ื‘ื ื” ื‘ืจื•ืจื” ืœื’ื‘ื™ ืงื•ื“ ืฉืื™ื ื• ืžืžื•ื–ื›ืจ ื•ืžืกื™ื™ืข ื‘ืื›ื™ืคืช ืขืงืจื•ืŸ ืฉืœ ืฉื˜ื— ืคื ื™ื ืžื™ื ื™ืžืœื™. ืขื‘ื•ืจ ืฆื•ื•ืชื™ื ืฉืžื˜ืจืชื ืœืฉืคืจ ืื• ืœืคืฉื˜ ืคืจื•ื™ืงื˜ื™ื ืฉืœ Go, ื”ื•ื ืžืฆื™ืข ื’ื™ืฉื” ืงืœื™ืœื” ื•ืžืžื•ืงื“ืช ืœืฉืžื™ืจื” ืขืœ ืงื•ื“ ืจื–ื” ื•ื‘ืจ ืชื—ื–ื•ืงื”.

ื’ื•ืœื™ื ื˜

ื’ื•ืœื™ื ื˜ ื”ื•ื ืื—ื“ ืžื›ืœื™ ื”-linting ื”ืžืงื•ืจื™ื™ื ืฉื ื•ืฆืจื• ืขื‘ื•ืจ ืฉืคืช Go. ืžื˜ืจืชื• ื”ืขื™ืงืจื™ืช ื”ื™ื ืœืื›ื•ืฃ ืžื•ืกื›ืžื•ืช ืกื’ื ื•ืŸ ื•ืžืชืŸ ืฉืžื•ืช ืื™ื“ื™ื•ืžื˜ื™ื•ืช ื‘ื”ืชื‘ืกืก ืขืœ ื”ื”ื ื—ื™ื•ืช ื”ืžืชื•ืืจื•ืช ื‘ืชื™ืขื•ื“ ื”ืจืฉืžื™ ืฉืœ Go. ื”ื•ื ืกื•ืจืง ืงื‘ืฆื™ ืžืงื•ืจ ืฉืœ Go ื•ืžื“ื•ื•ื— ืขืœ ื‘ืขื™ื•ืช ืกื’ื ื•ื ื™ื•ืช ืฉืืžื ื ืื™ื ืŸ ืฉื’ื™ืื•ืช ืชื—ื‘ื™ืจื™ื•ืช ืื• ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช, ืืš ืขืœื•ืœื•ืช ืœื”ืฉืคื™ืข ืขืœ ื”ื‘ื”ื™ืจื•ืช, ื”ืขืงื‘ื™ื•ืช ื•ื”ืงืจื™ืื” ืฉืœ ื”ืงื•ื“.

ื”ื›ืœื™ ืคืฉื•ื˜ ืœื”ืชืงื ื” ื•ืœื”ืคืขืœื”, ื•ืžืกืคืง ืžืฉื•ื‘ ืžื”ื™ืจ ืขืœ ื“ื‘ืจื™ื ื›ืžื• ื”ืขืจื•ืช ื—ืกืจื•ืช ื‘ืชื™ืขื•ื“, ืคื•ืจืžื˜ื™ื ืœื ื ื›ื•ื ื™ื ืฉืœ ืžืชืŸ ืฉืžื•ืช, ื’ืžื’ื•ื ื‘ื™ื™ืฆื•ื ื—ื‘ื™ืœื•ืช ื•ืกื•ื’ืจื™ื™ื ืžื™ื•ืชืจื™ื. GoLint ื ืžืฆื ื‘ืฉื™ืžื•ืฉ ื ืจื—ื‘ ืžื‘ื—ื™ื ื” ื”ื™ืกื˜ื•ืจื™ืช ื‘ืคืจื•ื™ืงื˜ื™ื ืฉืœ ืงื•ื“ ืคืชื•ื— ื•ืืจื’ื•ื ื™ื ืฉืœ Go ื›ื“ื™ ืœืขื•ื“ื“ ืกื’ื ื•ืŸ ืงื•ื“ ืื—ื™ื“ ื•ืœื”ืงืœ ืขืœ ื”ื ื™ื•ื•ื˜ ื•ื”ืชื—ื–ื•ืงื” ืฉืœ ื‘ืกื™ืกื™ ืงื•ื“.

ื–ื” ืขื•ื‘ื“ ื”ื™ื˜ื‘ ืขื‘ื•ืจ ืคืจื•ื™ืงื˜ื™ื ื‘ืฉืœื‘ ืžื•ืงื“ื, ืงืœื™ื˜ืช ืžืคืชื—ื™ื ื–ื•ื˜ืจื™ื, ืื• ื—ื™ื–ื•ืง ืขืงื‘ื™ื•ืช ื”ืงื•ื“ ื‘ื™ืŸ ืฆื•ื•ืชื™ื. ื”ื‘ื™ืฆื•ืขื™ื ื”ืžื”ื™ืจื™ื ื•ื”ืคืœื˜ ื”ืคืฉื•ื˜ ืฉืœื• ื”ื•ืคื›ื™ื ืื•ืชื• ืœื ื’ื™ืฉ ืœืฉื™ืžื•ืฉ ื™ื•ืžื™ื•ืžื™ ื‘ืกื‘ื™ื‘ื•ืช ืคื™ืชื•ื—, ื‘ื“ื™ืงื•ืช Pull Request ืื• ืื™ื ื˜ื’ืจืฆื™ื•ืช ืขื ืขื•ืจื›ื™ื.

ืžื’ื‘ืœื•ืช ื•ื—ืกืจื•ื ื•ืช ืฉืœ GoLint

ื‘ืขื•ื“ ืฉ-GoLint ื ื•ืชืจื” ืžื•ื›ืจืช ื‘ืื•ืคืŸ ื ืจื—ื‘, ื”ื™ื ืื™ื ื” ืžืชื•ื—ื–ืงืช ื‘ืื•ืคืŸ ืคืขื™ืœ ืขื•ื“ ื•ื›ื•ืœืœืช ืžืกืคืจ ืžื’ื‘ืœื•ืช ื”ืžื’ื‘ื™ืœื•ืช ืืช ื”ืชื•ืขืœืช ืฉืœื” ื‘ืชื”ืœื™ื›ื™ ืขื‘ื•ื“ื” ืžื•ื“ืจื ื™ื™ื ืฉืœ ืคื™ืชื•ื— Go.

GoLint ืžืชืžืงื“ืช ืืš ื•ืจืง ื‘ืกื’ื ื•ืŸ. ื”ื™ื ืื™ื ื” ืžื–ื”ื” ืฉื’ื™ืื•ืช ืœื•ื’ื™ื•ืช, ืฆื•ื•ืืจื™ ื‘ืงื‘ื•ืง ื‘ื‘ื™ืฆื•ืขื™ื ืื• ืคื’ื™ืขื•ื™ื•ืช ืื‘ื˜ื—ื”. ื”ื™ื ื’ื ืื™ื ื” ืžืขืจื™ื›ื” ื”ืื ื”ืงื•ื“ ื ื›ื•ืŸ, ื™ืขื™ืœ ืื• ื‘ื˜ื•ื—. ื›ืชื•ืฆืื” ืžื›ืš, ื™ืฉ ืœืฉืœื‘ ืื•ืชื• ืขื ื›ืœื™ ื ื™ืชื•ื— ืกื˜ื˜ื™ื™ื ืžืขืžื™ืงื™ื ื™ื•ืชืจ ืœืฆื•ืจืš ืื‘ื˜ื—ืช ืงื•ื“ ืžืฉืžืขื•ืชื™ืช ืื• ืื™ืžื•ืช ื”ืชื ื”ื’ื•ืช.

ืœื›ืœื™ ื™ืฉ ื™ื›ื•ืœืช ื”ื’ื“ืจื” ืžื•ื’ื‘ืœืช. ืžืคืชื—ื™ื ืื™ื ื ื™ื›ื•ืœื™ื ืœืฉื ื•ืช ืื• ืœื”ืฉืชื™ืง ื›ืœืœื™ื ื‘ืงืœื•ืช, ื•ื”ื•ื ืื™ื ื• ืชื•ืžืš ื‘ื”ื ื—ื™ื•ืช ืกื’ื ื•ืŸ ืžื•ืชืืžื•ืช ืื™ืฉื™ืช ืื• ื‘ืชืงื ื™ื ืกืคืฆื™ืคื™ื™ื ืœืคืจื•ื™ืงื˜. ื ื•ืงืฉื•ืช ื–ื• ืขืœื•ืœื” ืœื”ืชื ื’ืฉ ื‘ื”ืขื“ืคื•ืช ืกืคืฆื™ืคื™ื•ืช ืœืฆื•ื•ืช ืื• ื‘ืžื•ืกื›ืžื•ืช ืขื™ืฆื•ื‘ ืžื•ื“ืจื ื™ื•ืช.

ืžืขืจืš ื”ื›ืœืœื™ื ืฉืœื• ืกื˜ื˜ื™ ื•ื‘ืœืชื™ ืžืฉืชื ื”. ืžื›ื™ื•ื•ืŸ ืฉ-GoLint ื›ื‘ืจ ืœื ื ืžืฆื ื‘ืคื™ืชื•ื— ืคืขื™ืœ, ื”ื•ื ืื™ื ื• ืžืชืคืชื— ืขื ื”ืฉืคื”. ื™ื™ืชื›ืŸ ืฉื”ื•ื ืžืคืกืคืก ื‘ืขื™ื•ืช ืกื’ื ื•ืŸ ืฉื”ื•ืฆื’ื• ืขืœ ื™ื“ื™ ื’ืจืกืื•ืช ื—ื“ืฉื•ืช ื™ื•ืชืจ ืฉืœ Go ืื• ื ื•ื”ืœื™ ืกื™ืžื•ืŸ ื”ื ื—ืฉื‘ื™ื ื›ื™ื•ื ืžืงื•ื‘ืœื™ื ืื• ืื™ื“ื™ื•ืžื˜ื™ื™ื.

GoLint ืœืขื™ืชื™ื ืงืจื•ื‘ื•ืช ืžื™ื™ืฆืจ ืื–ื”ืจื•ืช ืฉื”ืŸ ืกื•ื‘ื™ื™ืงื˜ื™ื‘ื™ื•ืช ื•ืœืื• ื“ื•ื•ืงื ื‘ืขื™ื™ืชื™ื•ืช. ื—ืœืง ืžื”ืฆื•ื•ืชื™ื ืžื•ืฆืื™ื ืืช ื”ื”ืชืจืื•ืช ื™ื•ืชืจ ืžืกื™ื—ื•ืช ื“ืขืช ืžืืฉืจ ืžื•ืขื™ืœื•ืช, ื‘ืžื™ื•ื—ื“ ื‘ื‘ืกื™ืกื™ ืงื•ื“ ื’ื“ื•ืœื™ื ืฉื‘ื”ื ื”ืคืจื•ืช ืกื’ื ื•ืŸ ืงืœื•ืช ืจื‘ื•ืช ืขืฉื•ื™ื•ืช ืฉืœื ืœื”ืฉืคื™ืข ืขืœ ื”ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ืื• ื”ื‘ื”ื™ืจื•ืช.

ื”ื•ื ืื™ื ื• ืžืฉืชืœื‘ ืขื ืžื•ื“ื•ืœื™ Go ื‘ืฆื•ืจื” ื—ื–ืงื”. ืœืžืจื•ืช ืฉื”ื•ื ื™ื›ื•ืœ ืœืคืขื•ืœ ืขืœ ืคืจื•ื™ืงื˜ื™ื ืžื‘ื•ืกืกื™ ืžื•ื“ื•ืœื™ื, ื”ื•ื ื—ืกืจ ืชืžื™ื›ื” ื‘ืคืชืจื•ืŸ ืชืœื•ืช ืžืขืžื™ืง ื™ื•ืชืจ ืื• ื‘ื”ื‘ื ื” ืฉืœ ื’ื‘ื•ืœื•ืช ืžื•ื“ื•ืœื™ื. ื–ื” ืžื’ื‘ื™ืœ ืืช ื™ืขื™ืœื•ืชื• ื‘ืคืจื•ื™ืงื˜ื™ื ืฉืœ ืžื•ื ื•ืจืคื• ืื• ืžืจื•ื‘ื™ ืžื•ื“ื•ืœื™ื.

ื‘ืคืจื•ื™ืงื˜ื™ื ืžื•ื“ืจื ื™ื™ื ืจื‘ื™ื ืฉืœ Go, GoLint ื”ื•ื—ืœืฃ ื‘ื›ืœื™ื ืฉืคื•ืชื—ื• ื‘ืื•ืคืŸ ืคืขื™ืœ ื™ื•ืชืจ ื›ืžื• revive, ื”ืžืกืคืงื™ื ืื›ื™ืคื” ื‘ืกื’ื ื•ืŸ ื“ื•ืžื” ืขื ื™ื›ื•ืœืช ืชืฆื•ืจื”, ื‘ื™ืฆื•ืขื™ื ื•ื‘ื”ื™ืจื•ืช ื›ืœืœื™ื ื˜ื•ื‘ื™ื ื™ื•ืชืจ.

GoLint ืžืชืื™ืžื” ื‘ื™ื•ืชืจ ืœืžืฉื•ื‘ ืงืœ ื•ืžื”ื™ืจ ืขืœ ื‘ืขื™ื•ืช ืกื’ื ื•ืŸ ื‘ืกื™ืกื™ื•ืช. ื”ื™ื ืขื“ื™ื™ืŸ ื™ื›ื•ืœื” ืœืกืคืง ืขืจืš ื‘ืคืจื•ื™ืงื˜ื™ื ืงื˜ื ื™ื ืื• ื‘ื‘ืกื™ืกื™ ืงื•ื“ ืžื“ื•ืจ ืงื•ื“ื ืฉื‘ื”ื ื”ื›ืœืœื™ื ืฉืœื” ื›ื‘ืจ ืชื•ืืžื™ื ืœืชืงื ื™ื ืงื™ื™ืžื™ื. ืœืฉื™ืžื•ืฉ ืืจื•ืš ื˜ื•ื•ื— ืื• ื›ืœืœ-ืฆื•ื•ืชื™, ื›ืœื™ื ื—ื“ืฉื™ื ื™ื•ืชืจ ืžืฆื™ืขื™ื ื ืชื™ื‘ ื’ืžื™ืฉ ื•ื‘ืจ-ืชื—ื–ื•ืงื” ื™ื•ืชืจ ืงื“ื™ืžื”.

GoCallGraph

GoCallGraph ื”ื•ื ื›ืœื™ ื ื™ืชื•ื— ืกื˜ื˜ื™ ื™ื™ืขื•ื“ื™ ืฉื ื•ืขื“ ืœื™ืฆื•ืจ ื’ืจืคื™ ืงืจื™ืื” ืžืงื•ื“ ื”ืžืงื•ืจ ืฉืœ Go. ื”ื•ื ืžืžืคื” ืงืฉืจื™ื ื‘ื™ืŸ ืคื•ื ืงืฆื™ื•ืช, ื•ืขื•ื–ืจ ืœืžืคืชื—ื™ื ืœื“ืžื™ื™ืŸ ื›ื™ืฆื“ ื”ื‘ื™ืฆื•ืข ื–ื•ืจื ื“ืจืš ืชื•ื›ื ื™ืช. ืชื•ื‘ื ื” ื–ื• ืฉื™ืžื•ืฉื™ืช ื‘ืžื™ื•ื—ื“ ืœื”ื‘ื ืช ืืจื›ื™ื˜ืงื˜ื•ืจืช ืงื•ื“, ืžืขืงื‘ ืื—ืจ ืชืœื•ื™ื•ืช, ื–ื™ื”ื•ื™ ืžื•ื“ื•ืœื™ื ืžืงื•ืฉืจื™ื ื”ื™ื˜ื‘ ื•ื”ื›ื ื” ืœืจืคืงื˜ื•ืจื™ื ื’.

ื”ื›ืœื™ ืžื ืชื— ืืช ื™ื—ืกื™ ื”ืงืจื™ืื” ื‘ื™ืŸ ืคื•ื ืงืฆื™ื•ืช ื•ืฉื™ื˜ื•ืช, ื•ื”ื•ื ืžืคื™ืง ืืช ื”ืชื•ืฆืื•ืช ื‘ืคื•ืจืžื˜ื™ื ืฉืœ ื’ืจืคื™ื ื›ื’ื•ืŸ DOT, ืื•ืชื ื ื™ืชืŸ ืœืขื‘ื“ ื‘ืืžืฆืขื•ืช ื›ืœื™ ื•ื™ื–ื•ืืœื™ื–ืฆื™ื” ื›ืžื• Graphviz. ื‘ื‘ืกื™ืกื™ ืงื•ื“ ื’ื“ื•ืœื™ื ื™ื•ืชืจ, GoCallGraph ืขื•ื–ืจ ืœืžืคืชื—ื™ื ืœืขื ื•ืช ืขืœ ืฉืืœื•ืช ื›ืžื• ืื™ืœื• ืคื•ื ืงืฆื™ื•ืช ื ืงืจืื•ืช ืขืœ ื™ื“ื™ ืžื•ื“ื•ืœ ืกืคืฆื™ืคื™, ืื™ืœื• ื ืชื™ื‘ื™ื ืžื•ื‘ื™ืœื™ื ืœืคื•ื ืงืฆื™ื” ืงืจื™ื˜ื™ืช, ืื• ื›ื™ืฆื“ ื ื•ืฆืจื•ืช ืชืœื•ื™ื•ืช ืจืงื•ืจืกื™ื‘ื™ื•ืช.

ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘-GoCallGraph ื‘ื‘ื™ืงื•ืจื•ืช, ืžืคื’ืฉื™ ืงืœื™ื˜ื” ื•ืชื›ื ื•ืŸ ืจืคืงื˜ื•ืจื™ื ื’. ื”ื•ื ืžื•ืกื™ืฃ ืžื‘ื ื” ืœื‘ืกื™ืกื™ ืงื•ื“ ื‘ืžืงื•ืžื•ืช ื‘ื”ื ื”ื‘ื ืช ื”ืชื ื”ื’ื•ืช ื–ืžืŸ ืจื™ืฆื” ืขืœ ื™ื“ื™ ืงืจื™ืืช ืงื•ื“ ืžืงื•ืจ ื‘ืœื‘ื“ ืชื”ื™ื” ืงืฉื” ืื• ื’ื•ื–ืœืช ื–ืžืŸ.

ืžื’ื‘ืœื•ืช ื•ืฉื™ืงื•ืœื™ื ืฉืœ GoCallGraph

ืœืžืจื•ืช ืฉ-GoCallGraph ืžืกืคืง ืชื•ื‘ื ื•ืช ืืจื›ื™ื˜ืงื˜ื•ื ื™ื•ืช ื—ืฉื•ื‘ื•ืช, ื™ืฉ ืœื• ืžืกืคืจ ืžื’ื‘ืœื•ืช ื—ืฉื•ื‘ื•ืช ื”ืžืฉืคื™ืขื•ืช ืขืœ ืชื—ื•ืœืชื• ื‘ื–ืจื™ืžื•ืช ืขื‘ื•ื“ื” ืžื•ืจื›ื‘ื•ืช ืื• ืžื•ื“ืจื ื™ื•ืช.

ื”ื›ืœื™ ืžื™ื™ืฆืจ ื’ืจืคื™ื ืกื˜ื˜ื™ื™ื ืฉืœ ืงืจื™ืื•ืช ืžื‘ืœื™ ืœื“ืžื•ืช ืืช ื”ืชื ื”ื’ื•ืช ื”ืชื•ื›ื ื™ืช ื‘ืคื•ืขืœ. ื”ื•ื ืื™ื ื• ืžื‘ื—ื™ืŸ ื‘ื™ืŸ ืงืจื™ืื•ืช ืžื•ืชื ื•ืช, ื‘ื™ืฆื•ืข ืคื•ื ืงืฆื™ื•ืช ืขืงื™ืคื•ืช ื“ืจืš ืžืžืฉืงื™ื, ืื• ืงืจื™ืื” ืžื‘ื•ืกืกืช ื”ืฉืชืงืคื•ืช. ื“ื‘ืจ ื–ื” ืขืœื•ืœ ืœื”ื•ื‘ื™ืœ ืœืงืฆื•ื•ืช ืงืจื™ืื” ื—ืกืจื™ื ืื• ืžื™ื•ืฆื’ื™ื ื‘ืฆื•ืจื” ืœื ืžื“ื•ื™ืงืช, ื‘ืžื™ื•ื—ื“ ื‘-Go ืื™ื“ื™ื•ืžื˜ื™ ื”ืžืฉืชืžืฉ ื‘ืžื™ื“ื” ืจื‘ื” ื‘ืžืžืฉืงื™ื ืื• ื‘ื”ื–ืจืงืช ืชืœื•ื™ื•ืช.

ื™ืฉ ืœื• ืชืžื™ื›ื” ืžื•ื’ื‘ืœืช ื‘ืžืงื‘ื™ืœื™ื•ืช. ืฉื’ืจื•ืช GO ื•ื ืชื™ื‘ื™ ื‘ื™ืฆื•ืข ืžื‘ื•ืกืกื™ ืขืจื•ืฆื™ื ืื™ื ื ื ืœื›ื“ื™ื ื‘ื’ืจืคื™ ืงืจื™ืื•ืช, ืžื” ืฉืื•ืžืจ ืฉื”ื›ืœื™ ืื™ื ื• ืžื™ื™ืฆื’ ื–ืจื™ืžืช ื‘ื™ืฆื•ืข ื‘ื•-ื–ืžื ื™ืช ืื• ืืกื™ื ื›ืจื•ื ื™ืช. ืขื‘ื•ืจ ื™ื™ืฉื•ืžื™ื ืžืงื‘ื™ืœื™ื ืžืื•ื“, ื–ื” ื™ื›ื•ืœ ืœื”ืฆื™ื’ ืชืžื•ื ื” ืœื ืฉืœืžื” ืฉืœ ืื•ืคืŸ ื”ืคืขื•ืœื” ื‘ืคื•ืขืœ ืฉืœ ื”ืžืขืจื›ืช.

GoCallGraph ืื™ื ื• ืžืชืงืคืœ ื”ื™ื˜ื‘ ืขื‘ื•ืจ ื‘ืกื™ืกื™ ืงื•ื“ ื’ื“ื•ืœื™ื ืžืื•ื“. ื”ืคืœื˜ ื™ื›ื•ืœ ืœื”ื™ื•ืช ืขืžื•ืก ืื• ืžื•ืจื›ื‘ ืžื“ื™ ืœื ื™ื•ื•ื˜, ื‘ืžื™ื•ื—ื“ ืื ื™ืฉ ืืœืคื™ ืคื•ื ืงืฆื™ื•ืช ื•ืชืœื•ืช ื”ื“ื“ื™ืช ืจื‘ื•ืช. ืœืœื ืชืžื™ื›ื” ื‘ืกื™ื ื•ืŸ ืื• ืงื™ื‘ื•ืฅ, ื”ื’ืจืคื™ื ืขืœื•ืœื™ื ืœื”ื™ื•ืช ืงืฉื™ื ืžื“ื™ ืœืคื™ืจื•ืฉ ืœืœื ืขื™ื‘ื•ื“ ื™ื“ื ื™ ืžืฉืžืขื•ืชื™ ืœืื—ืจ ืžื›ืŸ.

ื”ื•ื ืื™ื ื• ืžืฆื™ืข ืžืžืฉืง ื’ืจืคื™. ื”ื›ืœื™ ืžืคื™ืง ืงื‘ืฆื™ ื’ืจืฃ ื’ื•ืœืžื™ื™ื ื”ื“ื•ืจืฉื™ื ืขื™ื‘ื•ื“ ื•ืคืจืฉื ื•ืช ื—ื™ืฆื•ื ื™ื™ื. ืฆื•ื•ืชื™ื ื—ื™ื™ื‘ื™ื ืœื”ืฉืชืžืฉ ื‘ื›ืœื™ ื•ื™ื–ื•ืืœื™ื–ืฆื™ื” ืฉืœ ืฆื“ ืฉืœื™ืฉื™ ื›ื“ื™ ืœื—ืœืฅ ืชื•ื‘ื ื•ืช ืžืขืฉื™ื•ืช, ืžื” ืฉืžื•ืกื™ืฃ ื—ื™ื›ื•ืš ืœืื™ืžื•ืฅ ื‘ืกื‘ื™ื‘ื•ืช ืœื ื˜ื›ื ื™ื•ืช.

ืื™ืŸ ืชืžื™ื›ื” ื‘ื”ืขืจื•ืช ืกืžื ื˜ื™ื•ืช. ื”ื’ืจืคื™ื ืžืฆื™ื’ื™ื ืจืง ืฉืžื•ืช ืคื•ื ืงืฆื™ื•ืช ื•ืงืฆื•ื•ืช ืงืจื™ืื”. ื”ื ืื™ื ื ื›ื•ืœืœื™ื ืžื˜ื-ื“ืื˜ื” ื›ื’ื•ืŸ ื”ืงืฉืจ ื—ื‘ื™ืœื”, ืžื™ืงื•ืžื™ ืงื‘ืฆื™ ืžืงื•ืจ, ืชื“ื™ืจื•ืช ื‘ื™ืฆื•ืข ืื• ืžื•ืจื›ื‘ื•ืช ืงื•ื“. ื–ื” ืžื’ื‘ื™ืœ ืืช ื”ื™ื›ื•ืœืช ืœืงืฉืจ ืืช ืžื‘ื ื” ื’ืจืฃ ื”ืงืจื™ืื” ืขื ืชื—ื–ื•ืงื” ืื• ื‘ื™ืฆื•ืขื™ื.

GoCallGraph ืžืฉืžืฉ ื‘ืฆื•ืจื” ื”ื˜ื•ื‘ื” ื‘ื™ื•ืชืจ ืœื ื™ืชื•ื— ืื“ืจื™ื›ืœื™ ื•ืœื”ื‘ื ืช ืชืœื•ื™ื•ืช ื‘ืจืžืช ื”ืคื•ื ืงืฆื™ื” ื‘ื™ื™ืฉื•ืžื™ Go ืงื˜ื ื™ื ืขื“ ื‘ื™ื ื•ื ื™ื™ื. ืœืงื‘ืœืช ืชื•ื‘ื ื•ืช ืกืžื ื˜ื™ื•ืช ืžืขืžื™ืงื•ืช ื™ื•ืชืจ, ื™ืฆื™ืจืช ืคืจื•ืคื™ืœื™ื ื‘ื–ืžืŸ ืจื™ืฆื” ืื• ื•ื™ื–ื•ืืœื™ื–ืฆื™ื” ืฉืœ ื–ืจื™ืžืช ื ืชื•ื ื™ื, ื™ืฉ ืœืฉืœื‘ ืื•ืชื• ืขื ื›ืœื™ื ืžืชืงื“ืžื™ื ื™ื•ืชืจ.

ื’ื•-ืคืื–

ื’ื•-ืคืื– ื”ื•ื ื›ืœื™ ื‘ื“ื™ืงื•ืช fuzz ืจื‘ ืขื•ืฆืžื” ืฉืคื•ืชื— ื‘ืžื™ื•ื—ื“ ืขื‘ื•ืจ Go. ื”ื•ื ืžืืคืฉืจ ืœืžืคืชื—ื™ื ืœื™ื™ืฆืจ ื•ืœื‘ืฆืข ื‘ืื•ืคืŸ ืื•ื˜ื•ืžื˜ื™ ืงืœื˜ ืืงืจืื™ ื›ื ื’ื“ ืคื•ื ืงืฆื™ื•ืช Go ืขืœ ืžื ืช ืœื—ืฉื•ืฃ ืงืจื™ืกื•ืช, ืคืื ื™ืงื•ืช ืื• ืคื’ืžื™ื ืœื•ื’ื™ื™ื ื‘ืœืชื™ ืฆืคื•ื™ื™ื. ื‘ื ื™ื’ื•ื“ ืœื›ืœื™ ื ื™ืชื•ื— ืกื˜ื˜ื™ ืžืกื•ืจืชื™ื™ื ืฉื‘ื•ื“ืงื™ื ืงื•ื“ ืœืœื ื‘ื™ืฆื•ืข, Go-Fuzz ืžืกืคืง ื ื™ืชื•ื— ื“ื™ื ืžื™ ืขืœ ื™ื“ื™ ื”ืคืขืœืช ืคื•ื ืงืฆื™ื•ืช ื‘ื“ื™ืงื” ืขื ื›ืžื•ื™ื•ืช ื’ื“ื•ืœื•ืช ืฉืœ ื ืชื•ื ื™ ืงืœื˜ ืกื™ื ืชื˜ื™ื™ื.

ื”ื›ืœื™ ืคื•ืขืœ ืขืœ ื™ื“ื™ ืขื™ื‘ื•ื“ ืงื•ื“ ื•ืฉื™ืžื•ืฉ ื‘ืžื ื•ืข ืžื‘ื•ืกืก ืžื•ื˜ืฆื™ื•ืช ื›ื“ื™ ืœืคืชื— ืงืœื˜ื™ื ื”ืžื’ื™ืขื™ื ืœื ืชื™ื‘ื™ ืงื•ื“ ื—ื“ืฉื™ื. ืขื ื”ื–ืžืŸ, ื”ื•ื ื™ื›ื•ืœ ืœื—ืฉื•ืฃ ืคื’ื™ืขื•ื™ื•ืช ื›ื’ื•ืŸ ื›ืฉืœื™ื ื‘ืื™ืžื•ืช ืงืœื˜, ืคืื ื™ืงื•ืช ื‘ืงื‘ื™ืขืช ืกื•ื’ื™ื, ืœื•ืœืื•ืช ืื™ื ืกื•ืคื™ื•ืช ืื• ืžืงืจื™ ืงืฆื” ื ืกืชืจื™ื ื‘ืœื•ื’ื™ืงื” ืขืกืงื™ืช. Go-Fuzz ื™ืขื™ืœ ื‘ืžื™ื•ื—ื“ ื‘ื‘ื“ื™ืงืช ืžื ืชื—ื™ื, ืžืคืขื ื—ื™ื, ืžื˜ืคืœื™ ืคืจื•ื˜ื•ืงื•ืœื™ื ื•ื›ืœ ืคื•ื ืงืฆื™ื” ื”ืžืงื‘ืœืช ืงืœื˜ ืžื•ื‘ื ื”.

ื”ื•ื ืžืฉืชืœื‘ ืขื ืงื•ื“ ื”ื‘ื“ื™ืงื” ืฉืœ Go ื•ื“ื•ืจืฉ ืจืง ืคื•ื ืงืฆื™ื™ืช ืขื˜ื™ืคื” ืคืฉื•ื˜ื” ื›ื“ื™ ืœื”ืชื—ื™ืœ ืœื‘ืฆืข fuzzing. ืœืื—ืจ ื”ื’ื“ืจืช ื”ืชืฆื•ืจื”, ื”ื•ื ื™ื›ื•ืœ ืœืคืขื•ืœ ื‘ืจืฆื™ืคื•ืช ื•ืœื—ืฉื•ืฃ ื‘ืื’ื™ื ืคื•ื ืงืฆื™ื•ื ืœื™ื™ื ืขืžื•ืงื™ื ืฉื›ืœื™ื ืกื˜ื˜ื™ื™ื ืื™ื ื ืžืชื•ื›ื ื ื™ื ืœื–ื”ื•ืช.

ืžื’ื‘ืœื•ืช ื•ืืชื’ืจื™ื ืฉืœ Go-Fuzz

ื‘ืขื•ื“ ืฉ-Go-Fuzz ื”ื•ื ื›ืœื™ ื‘ื“ื™ืงื” ื‘ืขืœ ืขืจืš, ื™ืขื™ืœื•ืชื• ืชืœื•ื™ื” ื‘ืžืกืคืจ ื’ื•ืจืžื™ื ื”ืžื’ื‘ื™ืœื™ื ืืช ืžื™ื“ืช ื”ื™ื™ืฉื•ื ื”ืจื—ื‘ ืฉืœื• ื‘ืคืจื•ื™ืงื˜.

ื–ื” ื“ื•ืจืฉ ืงื•ื“ ื‘ืจ ื‘ื™ืฆื•ืข ื›ื“ื™ ืœืชืคืงื“. Go-Fuzz ืื™ื ื• ืžื ืชื— ืงื•ื“ ืžืงื•ืจ ืกื˜ื˜ื™ ืื• ืชื—ื‘ื™ืจ ื™ืฉื™ืจื•ืช. ื”ื•ื ื—ื™ื™ื‘ ืœื”ืคืขื™ืœ ืืช ืคื•ื ืงืฆื™ื•ืช ื”ื™ืขื“ ืฉื•ื‘ ื•ืฉื•ื‘, ืžื” ืฉืื•ืžืจ ืฉื”ื•ื ืื™ื ื• ื™ื›ื•ืœ ืœื–ื”ื•ืช ื‘ืขื™ื•ืช ื‘ืงื•ื“ ืฉืื™ื ื• ื ื’ื™ืฉ ืื• ื‘ืขื ืคื™ื ืœื ืคืขื™ืœื™ื ืฉืžืขื•ืœื ืœื ืžื•ืคืขืœื™ื ื‘ืžื”ืœืš fuzzing.

ืชื”ืœื™ืš ื”ื”ืชืงื ื” ื™ื›ื•ืœ ืœื”ื™ื•ืช ืžื•ืจื›ื‘ ืขื‘ื•ืจ ืžืฉืชืžืฉื™ื ื—ื“ืฉื™ื. ืœืžืจื•ืช ืฉืคื•ื ืงืฆื™ื•ืช ื‘ืกื™ืกื™ื•ืช ืฉืœ ื™ืฆื™ืจืช ืงืœื˜ ื”ืŸ ืคืฉื•ื˜ื•ืช, ื”ืฉื’ืช ืชื•ืฆืื•ืช ืžืฉืžืขื•ืชื™ื•ืช ื“ื•ืจืฉืช ืœืขืชื™ื ืงืจื•ื‘ื•ืช ื›ืชื™ื‘ืช ืคื•ื ืงืฆื™ื•ืช ืจืชืžื” ืžื•ืชืืžื•ืช ืื™ืฉื™ืช, ื–ืจื™ืขืช ืงืœื˜ ื•ื›ื™ื•ื•ื ื•ืŸ ืืกื˜ืจื˜ื’ื™ื™ืช ื”ืžื•ื˜ืฆื™ื”. ืœืœื ืชืฆื•ืจื” ืžื•ืฉื›ืœืช, ื”ื›ืœื™ ืขืœื•ืœ ืœื‘ื–ื‘ื– ื–ืžืŸ ื‘ื—ืงื™ืจืช ื ืชื™ื‘ื™ ืงืœื˜ ืœื ืจืœื•ื•ื ื˜ื™ื™ื.

ื”ื›ื™ืกื•ื™ ืื™ื ื• ืฉืœื ืžื˜ื‘ืขื•. ื‘ื“ื™ืงื•ืช Fuzzing ื—ื•ืงืจื™ื ืžืจื—ื‘ื™ ืงืœื˜ ื‘ืื•ืคืŸ ืกื˜ื•ื›ืกื˜ื™ ื•ืื™ื ืŸ ื™ื›ื•ืœื•ืช ืœื”ื‘ื˜ื™ื— ื›ื™ืกื•ื™ ืงื•ื“ ืžืœื. ื™ื™ืชื›ืŸ ืฉืœืขื•ืœื ืœื ื™ื•ืฉื’ื• ื ืชื™ื‘ื™ื ืžืกื•ื™ืžื™ื, ื‘ืžื™ื•ื—ื“ ืืœื• ื”ื ืฉืœื˜ื™ื ืขืœ ื™ื“ื™ ืชื ืื™ื ืžื“ื•ื™ืงื™ื ืื• ืœื•ื’ื™ืงื” ืจื‘-ืฉืœื‘ื™ืช. ืžืคืชื—ื™ื ื—ื™ื™ื‘ื™ื ืœื”ืฉืœื™ื ื‘ื“ื™ืงื•ืช Fuzz ืขื ื‘ื“ื™ืงื•ืช ื™ื—ื™ื“ื” ื•ื ื™ืชื•ื— ืกื˜ื˜ื™ ืœืงื‘ืœืช ืื‘ื˜ื—ื” ืžืงื™ืคื”.

Go-Fuzz ืื™ื ื• ืžื•ื“ืข ืœืžืงื‘ื™ืœื™ื•ืช. ื”ื•ื ืื™ื ื• ืžื–ื”ื” ืชื ืื™ ืžืจื•ืฅ ืื• ื‘ืขื™ื•ืช ืกื™ื ื›ืจื•ืŸ ื‘ืงื•ื“ ืžืจื•ื‘ื” ื”ืœื™ื›ื™ื. ืคื•ื ืงืฆื™ื•ืช ื”ื›ื•ืœืœื•ืช ืฉื’ืจื•ืช, ืขืจื•ืฆื™ื ืื• ื–ื™ื›ืจื•ืŸ ืžืฉื•ืชืฃ ื—ื™ื™ื‘ื•ืช ืœื”ื™ื‘ื“ืง ื‘ืืžืฆืขื•ืช ื›ืœื™ ื’ืœืื™ ื”ืžืจื•ืฆื™ื ื”ื™ื™ืขื•ื“ื™ื™ื ืฉืœ Go ืื• ื›ืœื™ ื ื™ืชื•ื— ืžืงื‘ื™ืœื™ื•ืช.

ื ื™ืฆื•ืœ ืžืฉืื‘ื™ื ื™ื›ื•ืœ ืœื”ื™ื•ืช ืžืฉืžืขื•ืชื™. ื‘ื“ื™ืงื•ืช fuzz ืืจื•ื›ื•ืช ื˜ื•ื•ื— ืขืฉื•ื™ื•ืช ืœืฆืจื•ืš ืžืขื‘ื“ ื•ื–ื™ื›ืจื•ืŸ ื ื™ื›ืจื™ื, ื‘ืžื™ื•ื—ื“ ืขืœ ืงืœื˜ื™ื ื’ื“ื•ืœื™ื ืื• ืงื•ื“ ืจืงื•ืจืกื™ื‘ื™ ืขืžื•ืง. ืœืขืชื™ื ืงืจื•ื‘ื•ืช ืœื ืžืขืฉื™ ืœื›ืœื•ืœ ืืช Go-Fuzz ื‘ืกื‘ื™ื‘ื•ืช CI ืžื‘ืœื™ ืœื”ื’ื‘ื™ืœ ืืช ื–ืžืŸ ื”ืจื™ืฆื” ืื• ืœื”ืฉืชืžืฉ ื‘ืกื•ื•ื™ื˜ื•ืช ื‘ื“ื™ืงื•ืช ืžื‘ื•ื“ื“ื•ืช.

ืœืžืจื•ืช ืžื’ื‘ืœื•ืช ืืœื•, Go-Fuzz ื ื•ืชืจ ืื—ื“ ื”ื›ืœื™ื ื”ื™ืขื™ืœื™ื ื‘ื™ื•ืชืจ ืœืžืฆื™ืืช ื‘ืื’ื™ื ืœื ื‘ืจื•ืจื™ื ื‘ื–ืžืŸ ืจื™ืฆื” ื‘ืจื›ื™ื‘ื™ Go ืงืจื™ื˜ื™ื™ื. ื”ื•ื ืžืฉืœื™ื ื ื™ืชื•ื— ืกื˜ื˜ื™ ืขืœ ื™ื“ื™ ืžืชืŸ ืื™ืžื•ืช ื‘ืขื•ืœื ื”ืืžื™ืชื™ ื‘ืืžืฆืขื•ืช ื‘ื™ืฆื•ืข ืืงืจืื™ ื•ืžืกื™ื™ืข ืœื”ื‘ื˜ื™ื— ืฉื”ืชื•ื›ื ื” ืžืชื ื”ื’ืช ื‘ื‘ื˜ื—ื” ืชื—ืช ืงืœื˜ ืœื ืฆืคื•ื™ ืื• ืคื’ื•ื.

ืฉืœื™ื˜ื” ื‘ืื™ื›ื•ืช ืงื•ื“ Go ืขื ืชื•ื‘ื ื•ืช ืกื˜ื˜ื™ื•ืช ื•ื“ื™ื ืžื™ื•ืช

ื ื™ืชื•ื— ืกื˜ื˜ื™ ืžืžืœื ืชืคืงื™ื“ ื™ืกื•ื“ื™ ื‘ืคื™ืชื•ื— Go ืžื•ื“ืจื ื™. ื”ื—ืœ ืžื–ื™ื”ื•ื™ ื‘ืขื™ื•ืช ืกื’ื ื•ืŸ ื•ืžืฉืชื ื™ื ืฉืื™ื ื ื‘ืฉื™ืžื•ืฉ ื•ืขื“ ืœื’ื™ืœื•ื™ ืคื’ืžื™ ืžืงื‘ื™ืœื™ื•ืช ื•ืคื’ื™ืขื•ื™ื•ืช ื™ื“ื•ืขื•ืช, ื›ืœ ื›ืœื™ ื‘ืžืขืจื›ืช ื”ืืงื•ืœื•ื’ื™ืช ืฉืœ Go ืžืฉืจืช ืžื˜ืจื” ืกืคืฆื™ืคื™ืช. ื›ื›ืœ ืฉื‘ืกื™ืกื™ ื”ืงื•ื“ ืžืชืจื—ื‘ื™ื ื•ืฆื ืจืช ื”ืคื™ืชื•ื— ื”ื•ืคื›ืช ืžืชื•ื—ื›ืžืช ื™ื•ืชืจ, ืืฃ ื›ืœื™ ื‘ื•ื“ื“ ืื™ื ื• ืžืกืคื™ืง ื‘ืคื ื™ ืขืฆืžื•. ื‘ืžืงื•ื ื–ืืช, ื”ืืกื˜ืจื˜ื’ื™ื•ืช ื”ื™ืขื™ืœื•ืช ื‘ื™ื•ืชืจ ืžืฉืœื‘ื•ืช ื›ืœื™ ืขื–ืจ ืงืœื™ื, ืกื•ืจืงื™ ืื‘ื˜ื—ื”, ืžื ืชื—ื™ ืืจื›ื™ื˜ืงื˜ื•ืจื” ื•ืืคื™ืœื• ื›ืœื™ ืขื–ืจ ื‘ื–ืžืŸ ืจื™ืฆื” ื›ื“ื™ ืœืกืคืง ืชื•ื‘ื ื•ืช ืฉื›ื‘ืชื™ื•ืช ืœืื•ืจืš ื›ืœ ืžื—ื–ื•ืจ ื—ื™ื™ ื”ืชื•ื›ื ื”.

ื›ืœื™ื ื›ืžื• golangci-lint, staticcheck, ื• revive ืžืฆื•ื™ื ื™ื ืœื”ื™ื’ื™ื™ื ืช ืงื•ื“ ื™ื•ืžื™ื•ืžื™ืช, ื•ืžืืคืฉืจื™ื ืžืฉื•ื‘ ืžื”ื™ืจ ื•ืื›ื™ืคืช ืขืงื‘ื™ื•ืช. ื‘ื™ื ืชื™ื™ื, ื›ืœื™ื ืžืžื•ืงื“ื™ ืื‘ื˜ื—ื” ื›ื’ื•ืŸ gosec, govulncheck, ื• OWASP Dependency-Check ืžืฆื™ืขื™ื ื”ื’ื ื” ื—ื™ื•ื ื™ืช ืžืคื ื™ ืื™ื•ืžื™ื ื™ื“ื•ืขื™ื ื•ื“ืคื•ืกื™ื ืœื ื‘ื˜ื•ื—ื™ื. ืขื‘ื•ืจ ืฆื•ื•ืชื™ื ืฉืฆืจื™ื›ื™ื ืœื“ืžื™ื™ืŸ ืžื•ืจื›ื‘ื•ืช ืื• ืœื™ืฆื•ืจ ืงืฉืจื™ื, GoCyclo ื• GoCallGraph ืžืกืคืงื™ื ื ืจืื•ืช ืื“ืจื™ื›ืœื™ืช ื—ืฉื•ื‘ื”. ื•ืœืฆื•ืจืš ืื™ืžื•ืช ืžืชืงื“ื, ืขืจืžื•ืžื™ื•ืช ื›ืžื• Go-Fuzz ื•ืžื ืชื—ื™ื ื›ืžื• CodeQL ืœืกืคืง ืขืจื‘ื•ื™ื•ืช ืขืžื•ืงื•ืช ื™ื•ืชืจ ืขืœ ื™ื“ื™ ืกื™ืžื•ืœืฆื™ื™ืช ื‘ื™ืฆื•ืข ืื• ืžื™ื“ื•ืœ ื”ืชื ื”ื’ื•ืช ื ืชื•ื ื™ื ื‘ืงื ื” ืžื™ื“ื” ื’ื“ื•ืœ.

ื‘ื—ื™ืจืช ื”ืชืžื”ื™ืœ ื”ื ื›ื•ืŸ ืชืœื•ื™ื” ื‘ืžื˜ืจื•ืช ืฉืœื›ื. ืกื˜ืืจื˜-ืืคื™ื ืขืฉื•ื™ื™ื ืœืชืช ืขื“ื™ืคื•ืช ืœืžื”ื™ืจื•ืช ื•ืœืคืฉื˜ื•ืช, ื•ืœื”ืกืชืžืš ืขืœ ื—ื‘ื™ืœื•ืช ืงื•ื“ ืžืฆื•ืžืฆืžื•ืช. ืืจื’ื•ื ื™ื ืขื ื“ืจื™ืฉื•ืช ืชืื™ืžื•ืช ืื• ืื‘ื˜ื—ื” ืžื—ืžื™ืจื•ืช ื™ื™ื”ื ื• ืžื›ืœื™ื ื”ืชื•ืžื›ื™ื ื‘ืžืขืงื‘ ืื—ืจ ื–ื™ื”ื•ืžื™ื, ื ื™ืชื•ื— ื–ืจื™ืžืช ื‘ืงืจื” ื•ื‘ื™ืงื•ืจืช ืคื’ื™ืขื•ื™ื•ืช. ื‘ืกื™ืกื™ ืงื•ื“ ืžื“ื•ืจ ืงื•ื“ื ื“ื•ืจืฉื™ื ืœืขืชื™ื ืงืจื•ื‘ื•ืช ื›ืœื™ ื ื™ืงื•ื™ ื™ื™ืขื•ื“ื™ื™ื ื›ืžื• deadcode, ื‘ืขื•ื“ ืฉืฆื•ื•ืชื™ื ืฉืขื•ื‘ืจื™ื ืžื•ื“ืจื ื™ื–ืฆื™ื” ืฉืœ ื”ืืจื›ื™ื˜ืงื˜ื•ืจื” ืขืฉื•ื™ื™ื ืœืคื ื•ืช ืœืคืชืจื•ื ื•ืช ื—ื–ื•ืชื™ื™ื ืื• ืžื‘ื•ืกืกื™ ืžื“ื“ื™ื.

ื”ืžืขืจื›ืช ื”ืืงื•ืœื•ื’ื™ืช ืฉืœ Go ืžืžืฉื™ื›ื” ืœื”ืชืคืชื—, ื•ื›ืš ื’ื ื”ื›ืœื™ื ื”ืชื•ืžื›ื™ื ื‘ื”. ืขืœ ื™ื“ื™ ื”ื‘ื ืช ื”ืžื™ืงื•ื“, ื”ืžื’ื‘ืœื•ืช ื•ื—ื•ื–ืงื•ืช ื”ืื™ื ื˜ื’ืจืฆื™ื” ืฉืœ ื›ืœ ืคืชืจื•ืŸ ื ื™ืชื•ื— ืกื˜ื˜ื™, ืฆื•ื•ืชื™ ืคื™ืชื•ื— ื™ื›ื•ืœื™ื ืœื™ืฆื•ืจ ืฉืจืฉืจืช ื›ืœื™ื ืžื•ืชืืžืช ืื™ืฉื™ืช ืฉืชื—ื–ืง ืืช ืื™ื›ื•ืช ื”ืงื•ื“, ืชื’ื‘ื™ืจ ืืช ื”ื‘ื™ื˜ื—ื•ืŸ ื‘ืขื™ื‘ื•ื“ ืžื—ื“ืฉ ื•ืชืืคืฉืจ ืืกืคืงืช ืชื•ื›ื ื” ืžืื•ื‘ื˜ื—ืช ื•ื ื™ืชื ืช ืœืชื—ื–ื•ืงื”.