গোলংয়ে কোড কভারেজ কীভাবে পরিমাপ করবেন?


উত্তর:


138

নোট করুন যে গো 1.2 (Q4 2013, আরসি 1 উপলব্ধ) এখন পরীক্ষা কভারেজ ফলাফল প্রদর্শন করবে :

এর একটি প্রধান নতুন বৈশিষ্ট্য go testহ'ল এটি এখন গণনা করতে পারে এবং নতুন, পৃথকভাবে ইনস্টল করা go tool coverপ্রোগ্রামের সাহায্যে " " পরীক্ষার কভারেজ ফলাফল প্রদর্শন করে

coverটুল অংশ go.toolssubrepository । এটি চালিয়ে ইনস্টল করা যেতে পারে

$ go get golang.org/x/tools/cmd/cover

কভার টুল দুটি জিনিস করে।

  • প্রথমে, যখন পতাকাটি go testদেওয়া হয় -cover, প্যাকেজটির উত্সটি পুনরায় লিখতে এবং উপকরণের বিবৃতি সন্নিবেশ করার জন্য এটি স্বয়ংক্রিয়ভাবে চালিত হয়। পরীক্ষাটি পরে সংকলিত হয় এবং যথারীতি চালানো হয় এবং প্রাথমিক কভারেজের পরিসংখ্যানগুলি রিপোর্ট করা হয়:
$ go test -coverprofile fmtcoverage.html fmt
ok      fmt 0.060s  coverage: 91.4% of statements
$

দ্বিতীয়ত, আরও বিশদ প্রতিবেদনের জন্য, "গো পরীক্ষা" -এর জন্য পৃথক পতাকা একটি কভারেজ প্রোফাইল ফাইল তৈরি করতে পারে, যা কভার প্রোগ্রামটি " go tool cover" এর সাথে অনুরোধ করা হয়েছিল, তারপরে বিশ্লেষণ করতে পারে।

ফ্র্যাঙ্ক শিয়েরার উল্লেখ :

গো (2013/09/19) এর সর্বশেষ সংস্করণগুলি ব্যবহার করুন:

go test -coverprofile <filename> <package name>

কভারেজের পরিসংখ্যান কীভাবে তৈরি করা যায় এবং বিশ্লেষণ করা যায় তার বিশদগুলি কমান্ডগুলি চালিয়ে পাওয়া যাবে

$ go help testflag
$ go tool cover -help

ইভান ব্ল্যাক মন্তব্যগুলিতে উল্লেখ করেছেন :

go test -coverprofile cover.outএবং তারপরে আপনার ডিফল্ট ব্রাউজারে
go tool cover -html=cover.outখোলেcover.out

আমি এমনকি ব্রাউজারটি খোলার জন্য অপেক্ষা করতে চাই না, তাই আমি এই উপনামটি সংজ্ঞায়িত করেছি:

alias gc=grep -v -e " 1$" cover.out

আমি শুধু যে ধরনের gc, এবং সমস্ত লাইনের একটি তালিকা আছে না এখনো আবৃত (এখানে: একটি সঙ্গে coverage.outলাইন না সঙ্গে "বিভক্তি 1")।


2
নোট করুন যে গো ( go test -coverprofile <filename> <package name>
2013/09/19

পছন্দ করুন আরও দৃশ্যমানতার জন্য আমি আপনার মন্তব্যে উত্তরে অন্তর্ভুক্ত করেছি।
ভোনসি

go test -coverprofile cover.outএবং তারপরে ব্রাউজারে go tool cover -html=cover.out -o cover.htmlখুলুনcover.html
ইভান ব্ল্যাক

@ ইভান ব্ল্যাক ভাল পয়েন্ট। আরও দৃশ্যমানতার জন্য আমি এটিকে উত্তরে অন্তর্ভুক্ত করেছি। আমি অনাবৃত লাইনগুলি দ্রুত দেখতে ব্যবহার করার জন্য একটি ব্যবহারকারীর নামও যুক্ত করেছি।
ভোনসি

1
@ ভনসি go tool cover -html=cover.outস্বয়ংক্রিয়ভাবে একটি ব্রাউজার খুলবে, তবে এটি আমার সিস্টেমে কার্যকর হয় না। আমি ব্রাউজারটি উন্মুক্ত রাখতে এবং প্রয়োজনে পৃষ্ঠাটি রিফ্রেশ করতে পছন্দ করি।
ইভান ব্ল্যাক

41

গো পরীক্ষা এবং কভারেজ জন্য দুর্দান্ত সরঞ্জাম সহ আসে। যদিও সমস্ত গো সরঞ্জামগুলি নথিভুক্ত রয়েছে go tool cover -helpআমি সরকারী গো ব্লগে কভার স্টোরি নিবন্ধটি পড়ার পরামর্শ দেব । এর প্রচুর উদাহরণ রয়েছে এবং আমি দৃ strongly়ভাবে এটির প্রস্তাব দিচ্ছি!

আমার function / .Bash_ প্রোফাইলে আমার এই ফাংশনটি রয়েছে। (এটি চেষ্টা করার জন্য আপনি কেবল এটি টার্মিনালে পেস্ট করতে পারেন)।

cover () { 
    t="/tmp/go-cover.$$.tmp"
    go test -coverprofile=$t $@ && go tool cover -html=$t && unlink $t
}

তারপরে cdএকটি গো প্রকল্পে / প্যাকেজ ফোল্ডারে লিখুন এবং টাইপ করুন cover। এটি ব্রাউজারে একটি ভিজ্যুয়াল সরঞ্জাম খোলে যা আপনাকে বর্তমান প্যাকেজের প্রতিটি ফাইলের জন্য পরীক্ষিত এবং অরীক্ষিত কোড দেখায়। খুব দরকারী আদেশ! 100% যা এখনও পরীক্ষিত নয় তা সন্ধানের জন্য আমি দৃ strongly়তার সাথে এটি সুপারিশ করছি! প্রদর্শিত ফলাফল প্রতি ফাইল হয়। উপরের-বামে একটি ড্রপ ডাউন থেকে আপনি সমস্ত ফাইলের ফলাফল দেখতে পারেন।

এই কমান্ডের সাহায্যে আপনি কোনও প্যাকেজের কভারেজ পরীক্ষা করতে পারেন উদাহরণস্বরূপ:

cover fmt

এই কমান্ড থেকে টার্মিনালে আউটপুট হবে:

ok      fmt 0.031s  coverage: 91.9% of statements

আপনার ব্রাউজারে এটির পাশাপাশি আপনি দেখতে পাবেন যে এই সরঞ্জামটি কোডের সমস্ত লাইনকে পরীক্ষায় আচ্ছন্ন করে রেড দেখাচ্ছে:

এখানে চিত্র বর্ণনা লিখুন

এইচটিএমএল কভারেজ ফাইলটি ব্রাউজারে না খোলার পরিবর্তে এটি সংরক্ষণ করাও সম্ভব। আপনার পরীক্ষাগুলি + কভারেজ জেনকিনসের মতো সিআই সরঞ্জাম দ্বারা পরিচালিত হয় ক্ষেত্রে এটি খুব কার্যকর is এইভাবে আপনি একটি কেন্দ্রীয় সার্ভার থেকে কভারেজ ফাইলগুলি পরিবেশন করতে পারেন এবং পুরো টিম প্রতিটি বিল্ডের জন্য কভারেজের ফলাফল দেখতে সক্ষম হবে।


স্নিপেট এখান থেকে অনুলিপি করেছে কোডারওয়াল.com
পাভেল নিকোলভ

আকর্ষণীয়, আমি এটি পরীক্ষা করব। +1
ভোনসি

এটা সত্যিই দারুন! ভাগ করে নেওয়ার জন্য ধন্যবাদ. আমি আমার প্রোগ্রামের একটি প্রধান প্যাকেজটি পরীক্ষা করতে চেয়েছি বলে একটি পরীক্ষা স্ক্রিপ্টে স্থানান্তরিত হয়েছিল। চিয়ার্স
জেমস ও'টুল

11

উপরের ভাল উত্তরের পাশাপাশি, আমি এই তিনটি লাইন এটির সর্বাধিক সহজ উপায় হিসাবে খুঁজে পেয়েছি (যার মধ্যে সমস্ত প্যাকেজ রয়েছে):

go test -v -coverprofile cover.out ./YOUR_CODE_FOLDER/...
go tool cover -html=cover.out -o cover.html
open cover.html

নোট করুন যে এইচটিএমএল ফাইলে আপনি একটি ড্রপডাউন বোতাম পাবেন যা আপনাকে সমস্ত ফাইলে ডাইরেক্ট করবে।


5

এটি ঠিক এখানে , কিছু ডক্স এখানে

$ go tool
6a
6c
6g
6l
addr2line
api
cgo
cov
dist
ebnflint
fix
gotype
nm
objdump
pack
pprof
prof
vet
yacc
$ go tool cov -h
usage: cov [-lsv] [-g substring] [-m minlines] [6.out args...]
-g specifies pattern of interesting functions or files
go tool cov: exit status 1
$

আমি এটি ব্যবহার করি নি, এটাই আমি জানি।


আপনি নিজে এটি ইনস্টল করতে হবে? আমার স্থানীয় গো ইনস্টলেশন (go সংস্করণ go1) এ এটি নেই।
উয়ার্স

আমি বিশ্বাস করি এটি ./all.bash দ্বারা তৈরি হবে। আমি এটিএম যাচাই করতে পারছি না, আমি মুক্তি পাচ্ছি না কারণ আমার কাছে সিএল মুলতুবি রয়েছে, তবে গতকালকার ~/go/pkg/tool/linux_amd64আমার শেষ গোপনের সাথে মেলে দেখলাম কোভ বাইনারি টাইম স্ট্যাম্প ।
zzzz

হ্যাঁ, ./all.bash চালান এবং আপনি এটি পাবেন। সহায়তার জন্য ধন্যবাদ, জেএনএমএল!
জর্জ অ্যাটসেভ

এটি আমার x86 মেশিনে চালাতে আমার কিছু সমস্যা হচ্ছে। আমি এই থ্রেডে উল্লিখিত হিসাবে মেইন.সি. পরিবর্তন করার চেষ্টা করেছি: গ্রুপ. google.com/group/golang-dev/browse_thread/thread/… তবে এটি অন্য জায়গায় রানটাইম ত্রুটি উত্পন্ন করে। আমি এটি একটি 64 বিট মেশিনে চেষ্টা করব।
জর্জ আটসেভ

3

আপনি যদি টার্মিনালে সরাসরি ফাংশন দ্বারা অনাবৃত লাইনগুলি দেখতে চান তবে আমি এই উদ্দেশ্যে কভার সরঞ্জামটি পুনরায় লিখেছি। এটি https://github.com/gregoryv/uncover এ উপলব্ধ ।

ব্যবহার

go get -u github.com/gregoryv/uncover/...
go test -coverprofile /tmp/c.out
uncover /tmp/c.out

স্ক্রিনশট

এখানে চিত্র বর্ণনা লিখুন


2

আপনি যদি ভিএসকোড ব্যবহার করছেন তবে এই কার্যকারিতাটি বক্সের বাইরে সমর্থিত হবে ( তবে ডিফল্টরূপে অক্ষম )

কেবল সংরক্ষণ + কভারেজ প্রতিবেদন পরীক্ষা চালু করুন

https://github.com/microsoft/vscode-go/wiki/On-Save-features

এমনকি এটি আপনার সম্পাদকটিতে প্রদর্শিত হবে যে কোন লাইনগুলি আচ্ছাদিত নয় যা কোন অতি কার্যকর।


2

কভারেজ রিপোর্ট →

ক) সমস্ত পরীক্ষা চালান এবং কভারেজ সক্ষম করুন -> go test ./... -coverprofile coverage.out

খ) স্বতন্ত্র ফাংশনগুলির পাশাপাশি সামগ্রিক কভারেজের জন্য কভারেজ পান → go tool cover -func coverage.out

গ) দেখুন লাইন আবৃত এবং বেশী আপনার পরীক্ষা → আওতায় পড়ে না go tool cover -html=cover.out -o coverage.htmlcoverage.htmlএখানে ব্রাউজারে উত্পন্ন ফাইলটি খুলুন এবং বিস্তারিত কভারেজের তথ্য বিশ্লেষণ করুন।


1

একটি দ্রুত এবং সহজ উপায় হ'ল অন্তর্নির্মিত গো দিয়ে আসা কভারেজ সরঞ্জামটি ব্যবহার করা:

test পরীক্ষা-কভার প্রোফাইলে যান সিপি.আউট // এক লাইনার শতাংশের ভিত্তিতে কভারেজটি নির্ধারণ করে

উপরের কমান্ডটি কার্যকর করার পরে, আপনি যদি কোডটি দৃশ্যত দেখতে চান (যেমন আচ্ছাদন বিবৃতি এবং মিস করা ইত্যাদি)

tool গো সরঞ্জামের কভার -html = cp.out

দ্রষ্টব্য: আপনি যে ফোল্ডারে কভারেজ দেখতে চান সেখানে উপরের কমান্ডগুলি কার্যকর করতে হবে


1

সহায়তা মেনু এবং এই প্রশ্নের অন্যান্য উত্তর দ্বারা অনুপ্রাণিত, কেবল চালান:

f=cover.out; if [ -f $f ]; then rm $f; fi; go test ./... -coverprofile $f && \
go tool cover -html $f && \
rm $f

0

গাইয়া-ডকার / বেস-গো-বিল্ড ডকার চিত্র ব্যবহার করার চেষ্টা করুন ।

এটি একটি ডকার চিত্র যা আপনার কভারেজ তৈরির ও পরীক্ষার জন্য যা যা প্রয়োজন তা রয়েছে contains ডকারের ধারকের ভিতরে পরীক্ষা কভারেজ চালানো আপনার প্রকল্পের পরীক্ষার কভারেজ ফলাফলের সাথে .কভার ফোল্ডার তৈরি করে ।

docker run --rm -v "$PWD":$PROJECT_PATH -w $PROJECT_PATH $BUILDER_IMAGE_NAME /go/script/coverage.sh

পরীক্ষা কভারেজ স্ক্রিপ্ট সব প্রকল্পে চলমান 'ফোল্ডার ও জেনারেট করে, ভিতরে .cover প্রতিটি ফোল্ডারের জন্য junit এবং কভারেজ প্রতিবেদন ফোল্ডারের, এবং একটি সব প্রকল্পের কভারেজ প্রতিবেদন একত্রিত' পরীক্ষা।

কোডেকভ এমন একটি স্ক্রিপ্টেরও পরামর্শ দেয় যা কভারেজের ফলাফলগুলি সংগ্রহ করে: একাধিক ফাইল


-1

গোলংয়ের জন্য পরীক্ষার কভারেজ

go get github.com/axw/gocov/gocov go get -u gopkg.in/matm/v1/gocov-html

এটি সঠিকভাবে ইনস্টল করা আছে তা পরীক্ষা করুন এবং আপনার টার্মিনাল থেকে আপনার অ্যাক্সেস রয়েছে

টেস্ট কেস চালান

আপনি যদি পরীক্ষার কেসটি চালনা করেন তবে ফাইলটির উপর ভিত্তি করে .json ফাইলটি পুনর্নির্মাণ হবে আপনি এইচটিএমএল ফাইলে কোড কভারেজ রিপোর্ট পাবেন on

gocov test >your_Coverage_report.json

আপনার পরীক্ষার কেস হয়ে গেলে .json ব্যবহার করে .html ফাইলটিতে একটি প্রতিবেদন তৈরি করুন

gocov-html your_Coverage_report.json >your_Coverage_report.html

উল্লেখ

গো ল্যাং-এর জন্য GoTest কভারেজ সরঞ্জাম

পরীক্ষার রিপোর্ট সরঞ্জাম যান

বিকল্প পদ্ধতি

নেটিভ টেস্টের কভারেজ যান

go test -coverprofile=coverage.out
go tool cover -html=coverage.out
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.