ພາສາອັງກິດພາສາຝຣັ່ງແອສປາໂຍນ

ແລ່ນເຊີບເວີ | Ubuntu > | Fedora > |


OnWorks favicon

icheck - ອອນລາຍໃນຄລາວ

ແລ່ນ icheck ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີຜ່ານ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator

ນີ້ແມ່ນຄໍາສັ່ງ icheck ທີ່ສາມາດດໍາເນີນການໄດ້ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີໂດຍໃຊ້ຫນຶ່ງໃນຫຼາຍໆບ່ອນເຮັດວຽກອອນໄລນ໌ຂອງພວກເຮົາເຊັ່ນ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator

ໂຄງການ:

NAME


icheck - ຕົວກວດສອບ C interface ABI/API

ສະຫຼຸບສັງລວມ


ກວດເບິ່ງ --canonify [[-- ພື້ນຖານ ເອກະສານ] ...] [OPTIONS] [GCC_OPTIONS] [--] ໄຟ

ກວດເບິ່ງ --ປຽບທຽບ [OPTIONS] old_file new_file

ລາຍລະອຽດ


ເຄື່ອງ​ມື​ສໍາ​ລັບ​ການ​ກວດ​ສອບ​ສະ​ຖິ​ຕິ C interfaces ສໍາ​ລັບ​ການ​ປ່ຽນ API ແລະ ABI​. ການປ່ຽນແປງທັງໝົດຕໍ່ກັບປະເພດ
ການປະກາດທີ່ສາມາດເຮັດໃຫ້ເກີດການປ່ຽນແປງ ABI ຄວນຖືກກວດພົບ, ພ້ອມກັບການປ່ຽນແປງ API ສ່ວນໃຫຍ່.

icheck ມີຈຸດປະສົງເພື່ອໃຊ້ກັບຫ້ອງສະຫມຸດ, ເປັນວິທີການປ້ອງກັນ ABI drift.

ສາມາດ


ຫຼຸດຊຸດຂອງໄຟລ໌ແຫຼ່ງໄປຫາໄຟລ໌ການໂຕ້ຕອບ canonical ດ້ວຍ --canonify, ຈາກນັ້ນປຽບທຽບ
ສອງໄຟລ໌ການໂຕ້ຕອບດັ່ງກ່າວກັບ --compare. ຖ້າມີການປ່ຽນແປງການໂຕ້ຕອບລະຫວ່າງພວກມັນ,
icheck ຈະອະທິບາຍການປ່ຽນແປງແລະລົ້ມເຫລວ.

--canonify [[-- ພື້ນຖານ ເອກະສານ] ...] [OPTIONS] [GCC_OPTIONS] [--] ໄຟ

Canonify ໄຟລ໌ລະຫັດແຫຼ່ງ (ໂດຍປົກກະຕິ .h headers) ເພື່ອປຽບທຽບໃນພາຍຫຼັງ
--ປຽບທຽບ. ປົກກະຕິແລ້ວໃຊ້ກັບ -o ທາງ​ເລືອກ​ທີ່​ຈະ​ບັນ​ທຶກ​ການ​ສະ​ຫຼຸບ​ກັບ​ໄຟລ​໌​.

--ປຽບທຽບ [OPTIONS] old_file new_file

ອ່ານໄຟລ໌ການໂຕ້ຕອບ canonical ສອງອັນທີ່ສ້າງຂຶ້ນດ້ວຍ --canonify ແລະປຽບທຽບ
ໂຄງສ້າງຂອງລະຫັດແຫຼ່ງຕໍ່ການປ່ຽນແປງໃນການໂຕ້ຕອບສາທາລະນະຂອງແອັບພລິເຄຊັນ
(ສ່ວນຕິດຕໍ່ນັກພັດທະນາຫຼື API) ແລະ Application Binary Interface (ABI) ເຄີຍໃຊ້
ເຊື່ອມຕໍ່ກັບໂຄງການອື່ນໆຫຼືຫ້ອງສະຫມຸດ.

OPTIONS


ໄອເຊັກ OPTIONS
-o, -- ຜົນຜະລິດ ເອກະສານ

ປ່ອຍຜົນຜະລິດໄປຫາ FILE, ແທນທີ່ຈະ stdout.

--debug N

ຖິ້ມຂໍ້ມູນການດີບັກ.

-- ເທົ່ານັ້ນ ສິ່ງທີ່

ພຽງແຕ່ປະມວນຜົນສິ່ງທີ່ໃຫ້.

--ຂ້າມ-ຈາກ ເອກະສານ

ຂ້າມສິ່ງທີ່ບໍ່ຈໍາເປັນຈາກ ເອກະສານ.

--ຂ້າມ-ຈາກ-re regexp

ຂ້າມສິ່ງທີ່ບໍ່ຈໍາເປັນຈາກໄຟລ໌ທີ່ກົງກັບການສະແດງຜົນປົກກະຕິ.

--ພຽງແຕ່-ຈາກ ເອກະສານ

ພຽງແຕ່ເອົາສິ່ງທີ່ມາຈາກ ເອກະສານ.

--only-from-re regexp

ເອົາສິ່ງທີ່ມາຈາກໄຟລ໌ທີ່ກົງກັບການສະແດງຜົນປົກກະຕິເທົ່ານັ້ນ.

GCC_OPTIONS

GCC_OPTIONS ຖືກສົ່ງຜ່ານໄປຫາ gcc -E

ຊ່ວຍ​ເຫຼືອ OPTIONS
- ຊ່ວຍ
ສະແດງບົດສະຫຼຸບການຊ່ວຍເຫຼືອສໍາລັບ ກວດເບິ່ງ.

ຕົວຢ່າງ


ໄຟລ໌ແຫຼ່ງທັງຫມົດແມ່ນໄດ້ຖືກປຸງແຕ່ງກ່ອນດ້ວຍ gcc, ດັ່ງນັ້ນ canonify ຕ້ອງການຂໍ້ມູນດຽວກັນ
ເປັນລະຫັດແຫຼ່ງ - ປະຕິບັດຕາມ syntax ຈາກ Makefile ເພື່ອປະກອບມີທາງເລືອກ -I cpp (ຫຼື
gcc) ເພື່ອໃຫ້ຫົວທີ່ຈໍາເປັນທັງຫມົດສາມາດຕັ້ງຢູ່. ກວດເບິ່ງ ຈະເອົາລູກອອກຖ້າຕ້ອງການ
ສ່ວນຫົວບໍ່ພົບ. ແຫຼ່ງຕ້ອງລວບລວມ; icheck ບໍ່ສາມາດປະມວນຜົນໄຟລ໌ທີ່
ບໍ່ສາມາດລວບລວມໄດ້ໂດຍກົງ. ຖ້າສ່ວນຫົວຂາດ #include statements, ຫຼືຖ້າບໍ່ດັ່ງນັ້ນ
ຮຽກຮ້ອງໃຫ້ມີການນໍາໃຊ້ໃນລັກສະນະພິເສດ, ຫຼັງຈາກນັ້ນມັນບໍ່ສາມາດດໍາເນີນການໂດຍກົງກັບ icheck.
ແທນທີ່ຈະ, ຂຽນໄຟລ໌ C stub ທີ່ຕັ້ງສິ່ງຕ່າງໆໃຫ້ເຫມາະສົມແລະຫຼັງຈາກນັ້ນ #includes
header

ກວດເບິ່ງ --canonify -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/ສະບັບໃໝ່.

ກວດເບິ່ງ --ປຽບທຽບ -o ~/icheck/results.txt ~/icheck/oldversion ~/icheck/ສະບັບໃໝ່

ຂຽນບົດລາຍງານການປຽບທຽບສອງເອກະສານສະຫຼຸບ. ບົດ​ລາຍ​ງານ​ຊີ້​ໃຫ້​ເຫັນ​ທັງ​ຫມົດ
ການປ່ຽນແປງໃນ ABI ແລະ/ຫຼື API ທີ່ພົບເຫັນໃນລະຫວ່າງການປຽບທຽບ.

ກວດເບິ່ງ --canonify -o debian/icheck.canonical -Idebian/foo-dev/usr/ລວມ debian/foo-
dev/usr/include/foobar.h

ກວດເບິ່ງ --ປຽບທຽບ debian/icheck.manifest debian/icheck.canonical

ຖະ​ແຫຼງ​ການ​ທັງ​ສອງ​ນີ້​ລວມ​ຢູ່​ໃນ a debian/ກົດລະບຽບ ໄຟລ໌, ຈະເຮັດໃຫ້ຊຸດສ້າງ
ລົ້ມເຫລວຖ້າ API ຫຼື ABI ມີການປ່ຽນແປງໃນທາງທີ່ບໍ່ຄາດຄິດ, ບ່ອນທີ່ icheck.manifest ແມ່ນສໍາເນົາຂອງ
ການໂຕ້ຕອບທີ່ຄາດໄວ້, ລວມຢູ່ໃນຊຸດ.

ໃຫ້ສັງເກດວ່າການໂຕ້ຖຽງກັບ --compare ແມ່ນຕົວຂອງມັນເອງທີ່ຖືກຕ້ອງ C ໄຟລ໌ທີ່ຖືກປຸງແຕ່ງກ່ອນ,
ດັ່ງນັ້ນ icheck.manifest ສາມາດບັນຈຸ C preprocessor ຕາມເຫດຜົນ. ນີ້ສາມາດເປັນປະໂຫຍດໃນເວລາທີ່ຊຸດ
ສົ່ງອອກສ່ວນຕິດຕໍ່ທີ່ແຕກຕ່າງກັນໂດຍຂຶ້ນກັບສະຖາປັດຕະຍະກໍາເຈົ້າພາບ. ໃນກໍລະນີດັ່ງກ່າວນີ້, ທ່ານບໍ່ສາມາດ
ແທນທີ່ມັນດ້ວຍສໍາເນົາໃຫມ່ຂອງ icheck.canonical ເມື່ອການໂຕ້ຕອບມີການປ່ຽນແປງແລະທ່ານຕ້ອງການ
ປັບປຸງ manifest. ແທນທີ່ຈະປັບປຸງ manifest ທັງຫມົດດ້ວຍມື, ເອົາມື -
ລາຍ​ລະ​ອຽດ​ການ​ໂຕ້​ຕອບ​ລາຍ​ລັກ​ອັກ​ສອນ​ໃນ​ຫນຶ່ງ​ໄຟລ​໌ (icheck.static-manifest) ແລະ​ຫຼັງ​ຈາກ​ນັ້ນ​ນໍາ​ໃຊ້​:

ກວດເບິ່ງ --canonify -- ພື້ນຖານ debian/icheck.static-manifest -o debian/icheck.dynamic-
manifest

ສຸດທ້າຍ, ສ້າງ icheck.manifest ທີ່ປະກອບດ້ວຍ:
#ລວມທັງ "icheck.static-manifest"
#include "icheck.dynamic-manifest"
ນີ້ອະນຸຍາດໃຫ້ທ່ານປັບປຸງບາງສ່ວນຂອງ manifest ດ້ວຍມື, ໃນຂະນະທີ່ຍັງອັດຕະໂນມັດ
ການຜະລິດສ່ວນທີ່ເຫຼືອ.

OUTPUT


icheck ສ້າງລາຍລະອຽດຍາວຂອງທຸກໆການປ່ຽນແປງ API ຫຼື ABI ທີ່ເປັນໄປໄດ້, ໂດຍອີງໃສ່ປະເພດ
ຂໍ້ມູນ. ມັນບໍ່ໄດ້ສືບສວນລະຫັດໂຄງການຕົວຈິງ, ແລະດັ່ງນັ້ນມັນກໍ່ເປັນໄປໄດ້
ການປ່ຽນແປງບາງປະເພດທີ່ມັນກວດພົບບໍ່ແມ່ນການປ່ຽນແປງ ABI ຫຼື API ຕົວຈິງ. ຢ່າງໃດກໍຕາມ, ນີ້ປົກກະຕິ
ເກີດຂຶ້ນພຽງແຕ່ໃນເວລາທີ່ລະຫັດໂຄງການໄດ້ຖືກຂຽນຢ່າງຊັດເຈນສໍາລັບມັນ. ຖ້າສົງໃສ, ຖືວ່າມັນ
ປ່ຽນແປງ.

ໃນທີ່ສຸດ, icheck ສະຫນອງບົດສະຫຼຸບຂອງການປ່ຽນແປງ. ໃຫ້ສັງເກດວ່າທິດທາງນີ້ແມ່ນ
ຂຶ້ນກັບຄໍາສັ່ງຂອງການໂຕ້ຖຽງກັບ --compare: ການໂຕ້ຕອບທີ່ເກົ່າແກ່ຕ້ອງມາກ່ອນ,
ຫຼືທິດທາງຈະເປັນທາງອື່ນ. ຄວາມຫມາຍຂອງຄໍາສັບຕ່າງໆແມ່ນເປັນ
ຕໍ່ໄປນີ້:

ABI ABI ແມ່ນເຂົ້າກັນໄດ້ຖ້າຫາກວ່າສິ່ງທີ່ລວບລວມກັບສະບັບຫນຶ່ງຂອງ
ການໂຕ້ຕອບຈະເຮັດວຽກໃນເວລາທີ່ດໍາເນີນການໂດຍໃຊ້ສະບັບອື່ນ.

API API ແມ່ນເຂົ້າກັນໄດ້ຖ້າສິ່ງທີ່ຖືກລວບລວມກັບສະບັບຫນຶ່ງຂອງ
ອິນເຕີເຟດສາມາດຖືກລວບລວມກັບຄົນອື່ນ.

forwards-ເຂົ້າກັນໄດ້
ອິນເຕີເຟດແມ່ນເຂົ້າກັນໄດ້ຕໍ່ກັບການສົ່ງຕໍ່ຖ້າສິ່ງທີ່ຖືກລວບລວມທຽບກັບແບບເກົ່າ
ຮຸ່ນຈະເຮັດວຽກກັບ ໃໝ່. ນີ້ແມ່ນລັກສະນະທີ່ສໍາຄັນສໍາລັບ ນາມສະກຸນ
ປ່ຽນແປງ.

ກັບຫຼັງ-ເຂົ້າກັນໄດ້
ການໂຕ້ຕອບແມ່ນເຂົ້າກັນໄດ້ກັບຫຼັງຖ້າສິ່ງທີ່ຖືກລວບລວມຕໍ່ກັບອັນໃຫມ່
ຮຸ່ນຈະເຮັດວຽກກັບເກົ່າ. ນີ້ແມ່ນລັກສະນະທີ່ສໍາຄັນສໍາລັບ shlibs
ສະບັບພາສາ ການປ່ຽນແປງ. ຖ້າທ່ານບໍ່ໄດ້ສ້າງແພັກເກັດ Debian, ທ່ານອາດຈະເຮັດບໍ່ໄດ້
ຫ່ວງໃຍກ່ຽວກັບການປ່ຽນແປງທີ່ບໍ່ເຂົ້າກັນໄດ້ກັບຫຼັງ.

ໃຊ້ icheck ອອນໄລນ໌ໂດຍໃຊ້ບໍລິການ onworks.net


Ad


Ad