انگلیسیفرانسویاسپانیایی

Ad


فاویکون OnWorks

FileCheck-3.6 - آنلاین در ابر

اجرای FileCheck-3.6 در ارائه دهنده هاست رایگان OnWorks از طریق Ubuntu Online، Fedora Online، شبیه ساز آنلاین ویندوز یا شبیه ساز آنلاین MAC OS

این دستور FileCheck-3.6 است که می تواند در ارائه دهنده هاست رایگان OnWorks با استفاده از یکی از چندین ایستگاه کاری آنلاین رایگان ما مانند Ubuntu Online، Fedora Online، شبیه ساز آنلاین ویندوز یا شبیه ساز آنلاین MAC OS اجرا شود.

برنامه:

نام


FileCheck - تأیید کننده فایل تطبیق الگوی انعطاف پذیر

خلاصه


بررسی فایل نام فایل مسابقه [--check-prefix=XXX] [--فضای سفید دقیق]

شرح


بررسی فایل دو فایل را می خواند (یکی از ورودی استاندارد و دیگری مشخص شده در خط فرمان)
و از یکی برای تایید دیگری استفاده می کند. این رفتار به ویژه برای مجموعه آزمایشی مفید است،
که می خواهد تأیید کند که خروجی برخی ابزارها (مثلاً llc) شامل موارد مورد انتظار است
اطلاعات (مثلا یک movsd از esp یا هر چیز دیگری که جالب است). این مشابه است
به استفاده از grep استفاده، اما برای تطبیق چندین ورودی مختلف در یک فایل در a بهینه شده است
سفارش خاص

La نام فایل مسابقه file فایلی را مشخص می کند که شامل الگوهای مطابقت است. پرونده
برای تأیید از ورودی استاندارد خوانده می شود مگر اینکه --فایل ورودی گزینه استفاده می شود.

OPTIONS


-کمک خلاصه ای از گزینه های خط فرمان را چاپ کنید.

--چک-پیشوند پیشوند
FileCheck محتویات را جستجو می کند نام فایل مسابقه برای مطابقت الگوها توسط
پیشوند این الگوها با "بررسی:اگر می خواهید از a
پیشوند متفاوت (مثلاً به این دلیل که یک فایل ورودی یکسان در حال بررسی چندین متفاوت است
ابزار یا گزینه ها)، --چک-پیشوند آرگومان به شما امکان می دهد یک یا چند مورد را مشخص کنید
پیشوندها برای مطابقت پیشوندهای چندگانه برای تست هایی که ممکن است تغییر کنند مفید هستند
گزینه های اجرا متفاوت است، اما اکثر خطوط یکسان باقی می مانند.

--فایل ورودی نام فایل
فایل برای بررسی (به طور پیش فرض به stdin).

--فضای سفید دقیق
به طور پیش فرض، FileCheck فضای سفید افقی ورودی (فضاها و برگه ها) را متعارف می کند.
که باعث می شود این تفاوت ها را نادیده بگیرد (یک فاصله با یک برگه مطابقت دارد). در
--فضای سفید دقیق استدلال این رفتار را غیرفعال می کند. سکانس های انتهای خط هستند
به سبک یونیکس متعارف شده است \n در همه حالت ها

- ضمنی-بررسی-نه الگوی چک
بررسی های منفی ضمنی را برای الگوهای مشخص شده بین چک های مثبت اضافه می کند.
این گزینه امکان نوشتن تست های سخت گیرانه تری را بدون پر کردن آنها می دهد چک - خیرs.

مثلا، "- ضمنی-بررسی-نه هشدار:" می تواند هنگام آزمایش تشخیصی مفید باشد
پیام‌هایی از ابزارهایی که گزینه مشابهی ندارند چنگال -تأیید کردن. با این
گزینه FileCheck بررسی می‌کند که ورودی حاوی اخطارهایی نباشد که تحت پوشش قرار نگرفته باشند
هر بررسی: الگوهای.

-version
شماره نسخه این برنامه را نشان دهید.

خروج وضعیت


If بررسی فایل تأیید می کند که فایل با محتوای مورد انتظار مطابقت دارد، با 0 خارج می شود.
در غیر این صورت، در غیر این صورت، یا اگر خطایی رخ دهد، با مقدار غیر صفر خارج می شود.

آموزش


FileCheck معمولاً از تست های رگرسیون LLVM استفاده می شود که در خط RUN فراخوانی می شود.
امتحان. یک مثال ساده از استفاده از FileCheck از خط RUN به شکل زیر است:

; RUN: llvm-as < %s | llc -مارس=x86-64 | بررسی فایل %s

این نحو می گوید که فایل فعلی را لوله کنید ("%s") به llvm-as، آن را به داخل لوله کنید llc، و سپس
لوله خروجی از llc به بررسی فایل. این بدان معنی است که FileCheck آن را تأیید می کند
ورودی استاندارد (خروجی llc) در برابر آرگومان نام فایل مشخص شده (اصلی .ll
فایل مشخص شده توسط "%s"). برای اینکه ببینیم این چگونه کار می کند، اجازه دهید به بقیه موارد نگاه کنیم .ll پرونده
(بعد از خط RUN):

تعریف void @sub1(i32* %p, i32 %v) {
ورود:
; بررسی: sub1:
; بررسی: subl
%0 = دم تماس i32 @llvm.atomic.load.sub.i32.p0i32(i32* %p، i32 %v)
باطل شدن
}

تعریف void @inc4(i64* %p) {
ورود:
; بررسی: inc4:
; بررسی: incq
%0 = دم تماس i64 @llvm.atomic.load.add.i64.p0i64(i64* %p, i64 1)
باطل شدن
}

در اینجا می توانید برخی از "بررسی:" خطوط مشخص شده در نظرات. اکنون می توانید نحوه فایل را مشاهده کنید
لوله شده است llvm-as، و سپس llcو خروجی کد ماشین همان چیزی است که ما در حال بررسی آن هستیم.
FileCheck خروجی کد دستگاه را بررسی می کند تا بررسی کند که مطابق با آنچه "بررسی:" خطوط
مشخص كردن.

نحو "بررسی:"خطوط بسیار ساده است: آنها رشته های ثابتی هستند که باید در آنها وجود داشته باشند
سفارش. پیش فرض FileCheck نادیده گرفتن تفاوت های فضای سفید افقی است (مثلاً یک فاصله است
مجاز به مطابقت با یک برگه) اما در غیر این صورت، محتویات "بررسی:"خط مورد نیاز است
چیزی را در فایل تست دقیقا مطابقت دهید.

یک چیز خوب در مورد FileCheck (در مقایسه با grep) این است که امکان ادغام موارد آزمایشی را فراهم می کند
با هم در گروه های منطقی به عنوان مثال، به دلیل اینکه تست بالا در حال بررسی است
"زیر 1:"و"inc4:"برچسب ها، مطابقت نخواهد داشت مگر اینکه یک" وجود داشته باشدفرعی"در بین آنها
برچسب ها. اگر در جای دیگری در فایل وجود داشته باشد، به حساب نمی آید: "grep استفاده فرعی"
مطابقت دارد اگر "فرعی" در هر جایی از فایل وجود دارد.

La بررسی فایل -چک-پیشوند انتخاب
بررسی فایل -چک-پیشوند این گزینه اجازه می دهد تا از چندین تنظیمات آزمایشی استفاده شود
یک .ll فایل. این در بسیاری از شرایط مفید است، به عنوان مثال، آزمایش های مختلف
انواع معماری با llc. در اینجا یک مثال ساده آورده شده است:

; RUN: llvm-as < %s | llc -mtriple=i686-apple-darwin9 -mattr=sse41 \
; اجرا: | FileCheck %s -check-prefix=X32
; RUN: llvm-as < %s | llc -mtriple=x86_64-apple-darwin9 -mattr=sse41 \
; اجرا: | FileCheck %s -check-prefix=X64

تعریف <4 x i32> @pinsrd_1(i32 %s, <4 x i32> %tmp) nounwind {
%tmp1 = درج عنصر <4 x i32>; %tmp، i32 %s، i32 1
ret <4 x i32> %tmp1
; X32: pinsrd_1:
; X32: pinsrd $1، 4 (%esp)، %xmm0

; X64: pinsrd_1:
; X64: pinsrd $1، %edi، %xmm0
}

در این مورد، ما در حال آزمایش هستیم که تولید کد مورد انتظار را با هر دو 32 بیت و
تولید کد 64 بیتی

La بررسی - بعدی: رهنمود
گاهی اوقات می خواهید خطوط را مطابقت دهید و می خواهید تأیید کنید که مطابقت ها دقیقاً اتفاق می افتد
خطوط متوالی بدون هیچ خط دیگری در بین آنها. در این صورت می توانید از "بررسی:"
و "بررسی - بعدی:اگر یک پیشوند بررسی سفارشی را مشخص کرده اید،
فقط استفاده کن "-بعد:برای مثال، چیزی شبیه به این همانطور که انتظار دارید کار می کند:

تعریف void @t2(<2 x double>* %r, <2 x double>* %A, double %B) {
%tmp3 = بار <2 x double>* %A، تراز کردن 16
%tmp7 = درج عنصر <2 x double> unef، دو برابر %B، i32 0
%tmp9 = بردار تصادفی <2 x double> %tmp3،
<2 x double> %tmp7،
<2 x i32> < i32 0, i32 2 >
ذخیره <2 x double> %tmp9، <2 x double>* %r، تراز کردن 16
باطل شدن

; بررسی: t2:
; بررسی: movl 8 (%esp)، %eax
; CHECK-NEXT: movapd (%eax)، %xmm0
; بررسی بعدی: movhpd 12(%esp)، %xmm0
; بررسی بعدی: movl 4 (%esp)، %eax
; CHECK-NEXT: movapd %xmm0، (%eax)
; بررسی بعدی: دوباره
}

"بررسی - بعدی:دستورالعمل‌ها ورودی را رد می‌کنند مگر اینکه دقیقاً یک خط جدید بین آن وجود داشته باشد
و بخشنامه قبلی آ "بررسی - بعدی:"نمی تواند اولین دستورالعمل در یک فایل باشد.

La بررسی - خیر: رهنمود
"بررسی - خیر:دستورالعمل " برای تأیید اینکه یک رشته بین دو اتفاق نمی افتد استفاده می شود
مسابقات (یا قبل از اولین مسابقه یا بعد از آخرین مسابقه). به عنوان مثال، برای تأیید آن
یک بار با یک تبدیل حذف می شود، آزمایشی مانند این را می توان استفاده کرد:

تعریف i8 @coerce_offset0(i32 %V, i32* %P) {
ذخیره i32 %V، i32* %P

%P2 = bitcast i32* %P به i8*
%P3 = getelementptr i8* %P2, i32 2

%A = بار i8* %P3
ret i8 %A
; بررسی کنید: @coerce_offset0
; بررسی - نه: بارگذاری
; بررسی: ret i8
}

La CHECK-DAG: رهنمود
اگر لازم است رشته‌هایی را که به صورت کاملاً متوالی وجود ندارند مطابقت دهید،
"CHECK-DAG:" می تواند برای تایید آنها بین دو مسابقه (یا قبل از اولین مسابقه،
یا بعد از آخرین مسابقه). به عنوان مثال، clang گلوبال های vtable را به ترتیب معکوس منتشر می کند. استفاده كردن
CHECK-DAG:، می توانیم چک ها را به ترتیب طبیعی نگه داریم:

// اجرا: %clang_cc1 %s -emit-llvm -o - | بررسی فایل %s

struct Foo { virtual void method(); }
Foo f; // انتشار vtable
// CHECK-DAG: @_ZTV3Foo =

struct Bar { virtual void method(); }
نوار b;
// CHECK-DAG: @_ZTV3Bar =

بررسی - خیر: دستورالعمل ها را می توان با آن مخلوط کرد CHECK-DAG: دستورالعمل هایی برای حذف رشته های بین
محیط اطراف CHECK-DAG: بخشنامه ها در نتیجه اطراف CHECK-DAG: دستورات
نمی توان دوباره ترتیب داد، یعنی همه رخدادها مطابقت دارند CHECK-DAG: قبل از بررسی - خیر: نباید
عقب افتادن از تطابق وقوع CHECK-DAG: بعد از بررسی - خیر:. مثلا،

; چک-داگ: قبل از
; چک-نه: نه
; چک-داگ: بعد

این مورد رشته های ورودی را رد می کند قبل از پس از آن رخ می دهد بعد از.

با متغیرهای ضبط شده، CHECK-DAG: قادر به مطابقت با ترتیبات توپولوژیکی معتبر یک DAG است
با لبه هایی از تعریف متغیر تا استفاده از آن. این مفید است، به عنوان مثال، زمانی که شما
موارد تست باید با توالی خروجی های مختلف از زمانبندی دستورالعمل مطابقت داشته باشند. برای
مثال،

; CHECK-DAG: [[REG1:r[0-9]+]]، r1، r2 را اضافه کنید
; CHECK-DAG: [[REG2:r[0-9]+]]، r3، r4 را اضافه کنید
; بررسی: mul r5، [[REG1]]، [[REG2]]

در این مورد، هر ترتیب از آن دو اضافه کردن دستورالعمل ها مجاز خواهد بود.

اگر تعریف می کنید و استفاده از متغیرها در همان CHECK-DAG: مسدود کنید، آگاه باشید که
قانون تعریف می تواند مطابقت داشته باشد بعد از استفاده از آن

بنابراین، برای مثال، کد زیر ارسال می شود:

; CHECK-DAG: vmov.32 [[REG2:d[0-9]+]][0]
; CHECK-DAG: vmov.32 [[REG2]][1]
vmov.32 d0[1]
vmov.32 d0[0]

در حالی که این کد دیگر، این کار را نخواهد کرد:

; CHECK-DAG: vmov.32 [[REG2:d[0-9]+]][0]
; CHECK-DAG: vmov.32 [[REG2]][1]
vmov.32 d1[1]
vmov.32 d0[0]

اگرچه این می تواند بسیار مفید باشد، اما خطرناک است، زیرا در مورد ثبت نام
دنباله، شما باید یک نظم قوی داشته باشید (خواندن قبل از نوشتن، کپی قبل از استفاده، و غیره). اگر
تعریفی که تست شما به دنبال آن است مطابقت ندارد (به دلیل وجود اشکال در کامپایلر).
ممکن است دورتر از کاربرد مطابقت داشته باشد و اشکالات واقعی را بپوشاند.

در این موارد، برای اجرای دستور، از یک دستورالعمل غیر DAG بین بلوک‌های DAG استفاده کنید.

La برچسب چک: رهنمود
گاهی اوقات در یک فایل حاوی چندین تست تقسیم شده به بلوک های منطقی، یک یا چند
بررسی: دستورالعمل ها ممکن است به طور ناخواسته با تطبیق خطوط در بلوک بعدی موفق شوند. در حالی که یک
معمولاً در نهایت خطا ایجاد می‌شود، چک علامت‌گذاری شده به عنوان عامل خطا ممکن است نباشد
در واقع هر گونه ارتباطی با منبع واقعی مشکل دارند.

به منظور ایجاد پیام های خطای بهتر در این موارد، "برچسب چک:" بخشنامه می تواند
مورد استفاده قرار گیرد. به طور یکسان با یک حالت عادی درمان می شود بررسی دستورالعمل به جز آنچه FileCheck می سازد
یک فرض اضافی که یک خط مطابق با دستورالعمل را نیز نمی توان با آن مطابقت داد
هر چک دیگری موجود در نام فایل مسابقه; این برای خطوط در نظر گرفته شده است
حاوی برچسب ها یا سایر شناسه های منحصر به فرد. از نظر مفهومی، حضور CHECK-LABEL
جریان ورودی را به بلوک های جداگانه تقسیم می کند که هر کدام به طور مستقل پردازش می شوند.
جلوگیری از الف بررسی: دستورالعمل در یک بلوک با خطی در بلوک دیگر مطابقت دارد. مثلا،

تعریف %struct.C* @C_ctor_base(%struct.C* %this, i32 %x) {
ورود:
; CHECK-LABEL: C_ctor_base:
; بررسی: mov [[SAVETHIS:r[0-9]+]]، r0
; بررسی: bl A_ctor_base
; بررسی: mov r0، [[SAVETHIS]]
%0 = bitcast %struct.C* %this to %struct.A*
%call = تماس دم %struct.A* @A_ctor_base(%struct.A* %0)
%1 = bitcast %struct.C* %this to %struct.B*
%call2 = فراخوانی دم %struct.B* @B_ctor_base(%struct.B* %1، i32 %x)
ret %struct.C* % this
}

تعریف %struct.D* @D_ctor_base(%struct.D* %this, i32 %x) {
ورود:
; CHECK-LABEL: D_ctor_base:

استفاده از برچسب چک: دستورالعمل در این مورد تضمین می کند که سه بررسی: دستورات
فقط خطوط مربوط به بدنه را بپذیرید @C_ctor_base عملکرد، حتی اگر
الگوها با خطوطی که بعداً در فایل یافت می شوند مطابقت دارند. علاوه بر این، اگر یکی از این سه بررسی:
دستورات شکست می خورند، FileCheck با ادامه دادن به بلوک بعدی بازیابی می شود و اجازه می دهد چندین مورد
شکست های تست باید در یک فراخوان شناسایی شوند.

هیچ الزامی وجود ندارد برچسب چک: دستورالعمل ها شامل رشته هایی هستند که مطابقت دارند
برچسب‌های نحوی واقعی در یک زبان مبدأ یا خروجی: آنها باید به سادگی با a مطابقت داشته باشند
یک خط در فایل در حال تایید

برچسب چک: دستورالعمل ها نمی توانند شامل تعاریف یا کاربردهای متغیر باشند.

بررسی فایل الگو تطابق نحو
"بررسی:"و"بررسی - خیر:"دستورالعمل‌ها هر دو الگوی مطابقت دارند. برای بیشتر کاربردها
FileCheck، تطبیق رشته ثابت کاملاً کافی است. برای برخی چیزها، بیشتر
شکل انعطاف پذیر تطبیق مورد نظر است. برای پشتیبانی از این، FileCheck به شما اجازه می دهد تا مشخص کنید
عبارات منظم در رشته های منطبق که توسط پرانتزهای دوتایی احاطه شده اند: {{yourregex}}.
از آنجا که ما می خواهیم از تطبیق رشته ثابت برای اکثر کارهایی که انجام می دهیم استفاده کنیم، FileCheck دارد
برای پشتیبانی از اختلاط و تطبیق تطبیق رشته ثابت با معمولی طراحی شده است
اصطلاحات. این به شما امکان می دهد مواردی مانند این را بنویسید:

; بررسی: movhpd {{[0-9]+}}(%esp)، {{%xmm[0-7]}}

در این حالت، هرگونه آفست از رجیستر ESP مجاز خواهد بود و هر رجیستر xmm مجاز خواهد بود
مجاز.

از آنجایی که عبارات منظم با پرانتزهای دوتایی محصور شده اند، از نظر بصری متمایز هستند.
و شما نیازی به استفاده از کاراکترهای فرار در داخل پرانتزهای دوگانه مانند C ندارید.
در موارد نادری که بخواهید مهاربندهای دوتایی را به صراحت از ورودی مطابقت دهید، می توانید
از چیزی مانند زشت استفاده کنید {{[{][{]}} به عنوان الگوی شما

بررسی فایل متغیر
اغلب مفید است که یک الگو را تطبیق دهید و سپس تأیید کنید که بعداً دوباره رخ می دهد
فایل. برای تست های کدژن، این می تواند برای اجازه دادن به هر ثبت مفید باشد، اما بررسی کنید که آن را تأیید کنید
ثبات بعداً به طور مداوم استفاده می شود. برای انجام این، بررسی فایل اجازه می دهد تا متغیرهای نامگذاری شده باشند
تعریف و جایگزین الگوها می شود. در اینجا یک مثال ساده است:

; بررسی: test5:
; بررسی کنید: اکنون [[ثبت نام:%[az]+]]
; بررسی کنید: andw {{.*}}[[ثبت نام]]

اولین خط چک با یک regex مطابقت دارد %[az]+ و آن را در متغیر ثبت می کند ثبت نام.
خط دوم تأیید می کند که هر آنچه در آن است ثبت نام بعداً در فایل بعد از an رخ می دهد
"andw". بررسی فایل ارجاعات متغیر همیشه در داخل هستند [[ ]] جفت ها و آنها
نام ها را می توان با regex تشکیل داد [a-zA-Z][a-zA-Z0-9]*. اگر یک دونقطه به دنبال نام باشد،
سپس تعریفی از متغیر است. در غیر این صورت، یک استفاده است.

بررسی فایل متغیرها را می توان چندین بار تعریف کرد و استفاده ها همیشه آخرین مقدار را دریافت می کنند.
متغیرها همچنین می توانند بعداً در همان خطی که روی آن تعریف شده اند استفاده شوند. مثلا:

; بررسی: عملیات [[REG:r[0-9]+]]، [[REG]]

اگر عملوندهای آن را می خواهید می تواند مفید باشد op برای ثبت نام مشابه، و مهم نیست
دقیقا کدوم رجیستر هست

بررسی فایل عبارات
گاهی اوقات نیاز به تأیید خروجی وجود دارد که به شماره خطوط فایل مطابقت اشاره می کند.
به عنوان مثال هنگام آزمایش تشخیص کامپایلر. این باعث شکنندگی خاصی از مسابقه می شود
ساختار فایل، به عنوان "بررسی:خطوط حاوی اعداد خط مطلق در همان فایل هستند که
هر زمان که شماره خطوط به دلیل افزودن یا حذف متن تغییر می کند، باید به روز شود.

برای پشتیبانی از این مورد، FileCheck اجازه استفاده را می دهد [[@LINE]], [[@LINE+ ]],
[[@LINE- ]] عبارات در الگوها این عبارات به تعدادی از موارد گسترش می یابد
خطی که یک الگو در آن قرار دارد (با یک افست عدد صحیح اختیاری).

به این ترتیب الگوهای تطبیق را می توان در نزدیکی خطوط تست مربوطه قرار داد و شامل خط نسبی نیز کرد
مراجع اعداد، به عنوان مثال:

// بررسی: test.cpp:[[@LINE+4]]:6: خطا: مورد انتظار ';' پس از اعلام کننده سطح بالا
// CHECK-NEXT: {{^int a}}
// بررسی بعدی: {{^ \^}}
// بررسی بعدی: {{^ ;}}
int a

از FileCheck-3.6 به صورت آنلاین با استفاده از خدمات onworks.net استفاده کنید


سرورها و ایستگاه های کاری رایگان

دانلود برنامه های ویندوز و لینوکس

  • 1
    پلاگین Tomcat Eclipse
    پلاگین Tomcat Eclipse
    پلاگین Eclipse Tomcat فراهم می کند
    ادغام ساده سرورلت تامکت
    ظرفی برای توسعه جاوا
    برنامه های کاربردی وب شما می توانید به ما بپیوندید
    بحث...
    دانلود پلاگین Eclipse Tomcat
  • 2
    دسکتاپ WebTorrent
    دسکتاپ WebTorrent
    WebTorrent Desktop برای پخش جریانی است
    تورنت در مک، ویندوز یا لینوکس. آی تی
    به هر دو بیت تورنت وصل می شود
    همتایان وب تورنت اکنون وجود ندارد
    باید منتظر بود...
    دانلود WebTorrent Desktop
  • 3
    GenX
    GenX
    GenX یک برنامه علمی برای اصلاح است
    بازتاب اشعه ایکس، نوترون
    بازتابش و اشعه ایکس سطح
    داده های پراش با استفاده از دیفرانسیل
    الگوریتم تکامل ....
    GenX را دانلود کنید
  • 4
    pspp4 windows
    pspp4 windows
    PSPP یک برنامه برای آمار است
    تجزیه و تحلیل داده های نمونه برداری شده رایگان است
    جایگزینی برای برنامه اختصاصی
    SPSS. PSPP دارای هر دو مبتنی بر متن و
    ما گرافیکی...
    دانلود pspp4windows
  • 5
    برنامه های افزودنی Git
    برنامه های افزودنی Git
    Git Extensions یک ابزار UI مستقل است
    برای مدیریت مخازن Git. آن را نیز
    با Windows Explorer و
    مایکروسافت ویژوال استودیو
    (2015/2017/2019). این...
    برنامه های افزودنی Git را دانلود کنید
  • 6
    eSpeak: سنتز گفتار
    eSpeak: سنتز گفتار
    موتور متن به گفتار برای زبان انگلیسی و
    بسیاری از زبان های دیگر اندازه جمع و جور با
    تلفظ واضح اما مصنوعی
    در دسترس به عنوان یک برنامه خط فرمان با
    زیاد ...
    دانلود eSpeak: سنتز گفتار
  • بیشتر "

دستورات لینوکس

Ad