این دستور icheck است که می تواند در ارائه دهنده هاست رایگان OnWorks با استفاده از یکی از چندین ایستگاه کاری آنلاین رایگان ما مانند Ubuntu Online، Fedora Online، شبیه ساز آنلاین ویندوز یا شبیه ساز آنلاین MAC OS اجرا شود.
برنامه:
نام
icheck - جستجوگر رابط C ABI/API
خلاصه
چک کردن -- مقدس کردن [[--خط پایه فایل] ...] [OPTIONS] [GCC_OPTIONS] [--] فایل ها
چک کردن -- مقایسه کنید [OPTIONS] old_file new_file
شرح
ابزاری برای بررسی ایستا رابط های C برای تغییرات API و ABI. همه تغییرات در نوع
اعلان هایی که می توانند باعث تغییرات ABI شوند باید به همراه اکثر تغییرات API شناسایی شوند.
icheck برای استفاده با کتابخانه ها به عنوان روشی برای جلوگیری از رانش ABI در نظر گرفته شده است.
دستورات
مجموعه ای از فایل های منبع را با --canonify به یک فایل رابط متعارف کاهش دهید، سپس مقایسه کنید
دو فایل رابط با --compare. اگر تغییرات رابط بین آنها وجود داشته باشد،
icheck تغییرات را توصیف می کند و شکست می خورد.
-- مقدس کردن [[--خط پایه فایل] ...] [OPTIONS] [GCC_OPTIONS] [--] فایل ها
فایلهای کد منبع (معمولاً سرصفحههای h.) را متعارف کنید تا بعداً با آنها مقایسه شوند
-- مقایسه کنید. معمولا با استفاده می شود -o گزینه ای برای ذخیره خلاصه در یک فایل.
-- مقایسه کنید [OPTIONS] old_file new_file
دو فایل رابط متعارف تولید شده با را می خواند -- مقدس کردن و مقایسه می کند
ساختار کد منبع به تغییرات در رابط عمومی برنامه
(رابط توسعه دهنده یا API) و رابط باینری برنامه (ABI) استفاده می شد
پیوند در برابر برنامه ها یا کتابخانه های دیگر.
OPTIONS
ICHECK OPTIONS
-o, -- خروجی فایل
خروجی را به جای stdout به FILE ارسال کنید.
- رفع اشکال N
اطلاعات اشکال زدایی را تخلیه کنید.
--فقط چیز
فقط چیز داده شده را پردازش کنید.
--پرش-از فایل
از چیزهای غیر ضروری بگذرید فایل.
--پرش-از-re regexp
موارد غیر ضروری را از فایل های مطابق با عبارت معمولی حذف کنید.
--فقط-از فایل
فقط چیزها را از فایل.
--فقط-از-re regexp
فقط چیزهایی را از فایل های مطابق با عبارت معمولی بگیرید.
GCC_OPTIONS
GCC_OPTIONS به gcc -E منتقل می شود
کمک OPTIONS
--کمک
نمایش خلاصه کمک برای چک کردن.
مثال ها
همه فایلهای منبع با gcc پیش پردازش شدهاند، بنابراین canonify به اطلاعاتی مشابه نیاز دارد
به عنوان کد منبع - از دستور Makefile پیروی کنید تا گزینه های -I را در آن قرار دهید cpp (و یا
gcc) به طوری که تمام هدرهای لازم را بتوان قرار داد. چک کردن در صورت لزوم سقط خواهد شد
سرصفحه ها یافت نمی شوند. منبع باید قابل کامپایل باشد. icheck نمی تواند فایل هایی را پردازش کند که
نمی توان مستقیماً کامپایل کرد. اگر سرصفحه ای از دست رفته است عبارت #include یا در غیر این صورت
نیاز به استفاده به روش خاصی دارد، پس نمی توان آن را مستقیماً با icheck پردازش کرد.
در عوض، یک فایل خرد C بنویسید که همه چیز را به درستی تنظیم کند و سپس #شامل آن باشد
سرتیتر.
چک کردن -- مقدس کردن -o ~/icheck/oldversion -I/usr/include/foo-2.0 /usr/src/bar/src/foobar.h
یک خلاصه متنی از فایل foobar.h و همه فایلهای موجود در آن آماده کنید. خلاصه این است
نوشته شده است ~/icheck/oldversionبه برای تکرار کنید /usr/src/bar1/src/foobar.h - همان فایل
در فهرست منبع جدیدتر، خروجی به یک فایل جدید، به عنوان مثال ~/icheck/newversion.
چک کردن -- مقایسه کنید -o ~/icheck/results.txt ~/icheck/oldversion ~/icheck/newversion
گزارش مقایسه دو فایل خلاصه را می نویسد. گزارش تمام موارد را نشان می دهد
تغییرات در ABI و/یا API که در طول مقایسه یافت شد.
چک کردن -- مقدس کردن -o debian/icheck.canonical -Idebian/foo-dev/usr/include debian/foo-
dev/usr/include/foobar.h
چک کردن -- مقایسه کنید debian/icheck.manifest debian/icheck.canonical
این دو عبارت، در الف دبیان/قوانین فایل، باعث می شود که پکیج بیلد شود
اگر API یا ABI به روشهای غیرمنتظره تغییر کرده باشد، شکست بخورد، جایی که icheck.manifest یک کپی از
رابط مورد انتظار، موجود در بسته.
توجه داشته باشید که آرگومان های --compare خود فایل های C معتبری هستند که از قبل پردازش شده اند.
بنابراین icheck.manifest می تواند حاوی منطق پیش پردازنده C باشد. این می تواند مفید باشد زمانی که یک بسته
بسته به معماری میزبان، واسط های مختلف را صادر می کند. در این مورد، شما نمی توانید
هنگامی که رابط تغییر می کند و شما نیاز دارید، آن را با یک کپی جدید از icheck.canonical جایگزین کنید
مانیفست را به روز کنید به جای به روز رسانی کل مانیفست با دست، دست را قرار دهید-
توضیحات رابط نوشته شده در یک فایل (icheck.static-manifest) و سپس استفاده کنید:
چک کردن -- مقدس کردن --خط پایه debian/icheck.static-manifest -o debian/icheck.dynamic-
ظاهر
در نهایت، icheck.manifest را ایجاد کنید که حاوی:
#include "icheck.static-manifest"
#include "icheck.dynamic-manifest"
این به شما امکان میدهد تا برخی از قسمتهای مانیفست را بهصورت دستی بهروزرسانی کنید، در حالی که هنوز بهطور خودکار انجام میشود
تولید بقیه
OUTPUT
icheck شرح مفصلی از هر تغییر API یا ABI ممکن بر اساس نوع ایجاد می کند
اطلاعات کد برنامه واقعی را بررسی نمی کند و بنابراین ممکن است
برخی از تغییرات نوع که تشخیص می دهد، تغییرات ABI یا API واقعی نیستند. با این حال، این به طور معمول
فقط زمانی اتفاق می افتد که کد برنامه به صراحت برای آن نوشته شده باشد. اگر شک دارید، فرض کنید اینطور است
تغییر کرد.
در پایان، icheck خلاصه ای از تغییرات را ارائه می دهد. توجه داشته باشید که مسیرها در اینجا هستند
وابسته به ترتیب آرگومانها برای --compare: رابط قدیمیتر باید اول باشد،
یا مسیرها برعکس خواهد بود. معانی اصطلاحات مختلف به این صورت است
به شرح زیر است:
ABI اگر چیزهایی در برابر یک نسخه از آن کامپایل شده باشند، ABI سازگار است
رابط زمانی که با استفاده از نسخه دیگر اجرا شود کار خواهد کرد.
API اگر مواردی در برابر یک نسخه از آن کامپایل شده باشند، API سازگار است
رابط را می توان در برابر دیگری کامپایل کرد.
سازگار با فوروارد
اگر چیزهایی در مقابل قدیمی کامپایل شده باشند، یک رابط با فوروارد سازگار است
نسخه با جدید کار خواهد کرد. این ویژگی مهم برای سونام
تغییرات.
به عقب سازگار است
اگر چیزهایی در برابر جدید کامپایل شده باشند، یک رابط سازگار با عقب است
نسخه با قدیمی کار خواهد کرد. این ویژگی مهم برای شلیب ها
نسخه تغییر می کند. اگر بستههای دبیان را نمیسازید، احتمالاً این کار را نمیکنید
به تغییراتی که با عقب سازگار نیستند اهمیت دهید.
از icheck آنلاین با استفاده از خدمات onworks.net استفاده کنید