ইমাক্সের জন্য ট্যাগগুলি: ইটাগস, ইরোজ, সিস্কোপ, জিএনইউ গ্লোবাল এবং বিস্তৃত সিটি্যাগগুলির মধ্যে সম্পর্ক


102

আমি সি ++ প্রকল্পে কাজ করি, এবং আমি স্টেডওভারফ্লোতে ট্যাগ সম্পর্কে সিএডিইটি এবং অন্যান্য থ্রেডের অ্যালেক্স অট গাইডের মধ্য দিয়ে গিয়েছিলাম , তবে কীভাবে স্বতঃপূরণ সহজ করার জন্য এই বিভিন্ন ট্যাগ সিস্টেমের সাথে ইমাক্স ইন্টারফেস, সংজ্ঞা সংজ্ঞা, উত্সের নেভিগেশন সম্পর্কে আমি বিভ্রান্ত কোড বেস বা ডক-স্ট্রিংগুলির পূর্বরূপ।

  1. পার্থক্য (যেমন বৈশিষ্ট্য পদ) কী etags, ebrowse, exuberant ctags, cscope, GNU Globalএবং GTags? এ্যাম্যাক্সে সেগুলি ব্যবহার করার জন্য আমার কী করা দরকার ?

  2. আমি যদি নেভিগেট / স্বতঃপূণ প্রতীকগুলির জন্য ট্যাগগুলি ব্যবহার করতে চাই তবে আমার কী শব্দার্থক / সিনেটর (সিইডিইটি) দরকার?

  3. এই বিভিন্ন ট্যাগ ইউটিলিটিগুলির শীর্ষে সিমেন্টিক কী টেবিলটিতে নিয়ে আসে? কীভাবে এটি এই সরঞ্জামগুলির সাথে ইন্টারফেস করে?


2
ট্রাঙ্কটি বিচার করে GTagsআপনি যে প্রকল্পটি যুক্ত করেছেন সেটি বেশ মরে গেছে। যদি কারও বিষয়ে কথা হয় gtags, তারা সম্ভবত জিএনইউ গ্লোবালকে উল্লেখ করছেন।
গর্ডন গুস্তাফসন

উত্তর:


71

আমি সম্প্রতি এখানে পড়েছি হিসাবে এটি একটি ভাল প্রশ্ন, তাই আমি আরও বিস্তারিতভাবে পার্থক্য ব্যাখ্যা করার চেষ্টা করব:

পয়েন্ট 1:

etagsএবং ctagsউভয়ই উত্স ফাইলগুলিতে পাওয়া ভাষার সামগ্রীর একটি সূচক (ওরফে ট্যাগ / TAGS) ফাইল উত্পন্ন করে যা এই আইটেমগুলিকে একটি টেক্সট সম্পাদক বা অন্যান্য ইউটিলিটি দ্বারা দ্রুত এবং সহজেই স্থান দিতে দেয়। একটি ট্যাগ এমন একটি ভাষা অবয়বকে নির্দেশ করে যার জন্য একটি সূচক এন্ট্রি পাওয়া যায় (বা, বিকল্প হিসাবে, সেই বস্তুর জন্য তৈরি সূচক এন্ট্রি)। সিটি্যাগ দ্বারা উত্পাদিত ট্যাগগুলি মেটাডেটার দিক থেকে আরও সমৃদ্ধ, তবে এমাকস অতিরিক্ত উপাত্তগুলি যেভাবেই ব্যাখ্যা করতে পারে না, তাই আপনার সেগুলি কমবেশি একই হিসাবে বিবেচনা করা উচিত (এর মূল সুবিধাটি ctagsআরও ভাষার জন্য এটির সমর্থন হবে) be ট্যাগ ফাইলগুলির প্রাথমিক ব্যবহার শ্রেণি / পদ্ধতি / ফাংশন / ধ্রুবক / ইত্যাদি ঘোষণা / সংজ্ঞাগুলি সন্ধান করে।

cscopeএটি অনেক বেশি শক্তিশালী জন্তু (কমপক্ষে সি / সি ++ এবং জাভা সম্পর্কিত) যদিও এটি কম বা কম একই নীতিতে পরিচালিত হয় (দরকারী মেটাডেটার একটি ফাইল উত্পন্ন করে) এটি আপনাকে কিছু প্রত্নসম্পর্কিত জিনিস যেমন কোনও চিহ্নের সমস্ত রেফারেন্স সন্ধান করতে, কোনও ফাংশনটি কোথায় আনা হচ্ছে তা দেখুন etc ইত্যাদি (আপনি সংজ্ঞাও খুঁজে পেতে পারেন) করতে পারবেন ।

এটি যোগ করা:

ctagsএক আপনাকে প্রতীক ঘোষণার / সংজ্ঞা (কেউ কেউ কী এক-দিকের অনুসন্ধান বলে ডাকে ) নেভিগেট করতে দেয় । ctagsবিভিন্ন ভাষার জন্য কার্যকর একটি সাধারণ উদ্দেশ্য সরঞ্জাম।

অন্যদিকে (প্রকল্পের পৃষ্ঠায় উল্লিখিত) cscopeআপনাকে এগুলি অনুমতি দেয়:

  • প্রতীক ঘোষণায় যান
  • প্রতীকের সমস্ত উল্লেখের একটি নির্বাচনের তালিকা প্রদর্শন করুন
  • যে কোনও বিশ্বব্যাপী সংজ্ঞা অনুসন্ধান করুন
  • একটি ফাংশন দ্বারা ডাকা ফাংশন
  • একটি ক্রিয়াকলাপ কলিং ফাংশন
  • একটি পাঠ্য স্ট্রিং জন্য অনুসন্ধান করুন
  • নিয়মিত প্রকাশের প্যাটার্ন অনুসন্ধান করুন
  • একটি ফাইল সন্ধান করুন
  • একটি ফাইল সহ সমস্ত ফাইল সন্ধান করুন

এই মুহুর্তে কারও কাছে অবাক হওয়ার মতো বিষয় হওয়া উচিত নয় যে আমি যখন সি / সি ++ প্রকল্পের সাথে কাজ করি তখন আমি cscopeখুব ভারী ব্যবহার করি এবং সে সম্পর্কে খুব কম যত্ন করি ctags। অন্যান্য ভাষার সাথে কথা বলার সময় পরিস্থিতি অবশ্যই বিপরীত হবে।

পয়েন্ট 2।

বুদ্ধিমান স্বতঃপূরণ পেতে আপনার একটি সত্য উত্স কোড পার্সার প্রয়োজন (যেমন শব্দার্থক), অন্যথায় আপনি আপনার অ্যাপ্লিকেশনগুলিতে বস্তুর প্রকারগুলি (উদাহরণস্বরূপ) এবং সেগুলিতে অনুরোধ করা যেতে পারে এমন পদ্ধতিগুলি জানেন না। আপনি বিভিন্ন বিভিন্ন উত্সের উপর ভিত্তি করে একটি স্ব-সমাপ্তি পেতে পারেন, তবে সর্বোত্তম ফলাফল পেতে আপনার শেষ পর্যন্ত পার্সার লাগবে। একই সিনট্যাক্স হাইলাইটিংয়ের জন্য যায় - বর্তমানে ইমাক্স প্রধান মোডগুলিতে সিনট্যাক্স হাইলাইট করা কেবল নিয়মিত অভিব্যক্তির উপর ভিত্তি করে এবং এটি অত্যন্ত ভঙ্গুর এবং ত্রুটিযুক্ত প্রবণ। আশা করি ইমাসাস ২৩.২-তে অর্থশাস্ত্র অন্তর্ভুক্তির সাথে (এটি আগে বাহ্যিক প্যাকেজ হিসাবে ব্যবহৃত হত) আমরা এর আরও ব্যবহার দেখতে শুরু করব (যেমন এটি সঠিকভাবে হাইলাইট করার জন্য বাফার উত্স কোড বিশ্লেষণ করতে এটি ব্যবহার করা)

যেহেতু Emacs 24.1 অর্থসূচকটি ইমাস সমাপ্তির কাঠামো থেকে ব্যবহারযোগ্য। এটি পরীক্ষার সহজতম উপায় হ'ল সি উত্স কোড ফাইল এবং টাইপিং খোলা M-TABবা C-M-iশব্দসম্পূর্ণ স্বয়ংক্রিয়ভাবে আপনার জন্য সম্পূর্ণ হিসাবে দেখা। যে ভাষাগুলির জন্য ডিফল্টরূপে শব্দার্থকতা সক্ষম করা নেই, আপনি নিজের পছন্দমতো মোড হুকটিতে নিম্নলিখিত লাইনটি যুক্ত করতে পারেন:

(add-to-list 'completion-at-point-functions 'semantic-completion-at-point-function)

পয়েন্ট 3।

শব্দার্থবিজ্ঞান সত্য কোড সচেতনতা এনেছে (বর্তমানে কয়েকটি ভাষায় এটি সমর্থন করে) এবং আইডিই এবং ইম্যাকের মধ্যে ব্যবধানটি বন্ধ করে দেয়। এটি আসলে etagsএবং এর মতো সরঞ্জামগুলির সাথে সত্যই ইন্টারফেস cscopeকরে না তবে এর অর্থ এই নয় যে আপনি সেগুলি একসাথে ব্যবহার করতে পারবেন না।

আশা করি আমার ব্যাখ্যাগুলি অর্থবোধ করে এবং আপনার পক্ষে কার্যকর হবে।

পিএস আমি globalএবং এর সাথে বেশ পরিচিত নই ebrowse, তবে স্মৃতি যদি আমাকে পরিবেশন করে তবে তারা এট্যাগ ব্যবহার করেছিল।


1
এটা অসাধারণ. ধন্যবাদ! আপনি কি জানেন যে আমি cscopeইম্যাকগুলিতে কীভাবে ব্যবহার করতে পারি ? আমি এখানেxcscope.el ইম্যাকস উইকি সম্পর্কে পড়লাম তবে আমি ফাইলটির কোনও লিঙ্ক খুঁজে পাইনি। এছাড়াও, আপনি ইমাকগুলি পেতে কোন ফাইলটি ব্যবহার করেন ? .elcscope
আমেলিও ওয়াজকেজ-রেইনা

1
xcscope.elএ অবস্থিত cscope/contrib/xcscope/(এটি বিতরণ প্যাকেজের মধ্যে রয়েছে)। এটাই আমি ব্যবহার করি।
বোজিদার বাতসভ

আরও একটি প্রশ্ন: এর সাথে কীভাবে semanticতুলনা করা যায় cscope? সোর্স কোডের মাধ্যমে নেভিগেট করার ক্ষেত্রে, শব্দার্থবিজ্ঞান এমন কোনও কার্যকারিতা সরবরাহ করে যা cscopeনা? আপনি উভয় ব্যবহার?
অ্যামিলিও ওয়াজকেজ-রেইনা

4
আমি জিএনইউ গ্লোবাল ইটাগ, বিটিডব্লু ব্যবহার বিশ্বাস করি না। আইআইআরসি এটি একটি 'যথাযথ' ডাটাবেস (ফ্ল্যাট পাঠ্য ফাইল স্ক্যান করার চেয়ে) রক্ষণাবেক্ষণ এবং অনুসন্ধান করে, যা অনুসন্ধানের জন্য এবং (বিশেষত) ট্যাগগুলি আপডেট করার ক্ষেত্রে উভয়েরই অনেক কার্যকারিতা উপকারিতা রয়েছে।
ফিলস

@ বোজিদারবাটসভ যখন আপনি বলেছেন For languages where semantic is not enabled by default, you can add the following line to your major mode hook of choice ... <code>। সেই কোড স্নিপেট ঠিক কী করে?
অ্যামিলিও ওয়াজকেজ-রেইনা

45

আমি 1 তে কিছু ব্যাখ্যা যুক্ত করার চেষ্টা করব।

এটা কি?

  • ইটাগস হ'ল 'ট্যাগস' ফাইল উত্পন্ন করার জন্য একটি আদেশ যা ইমাক্সের জন্য ট্যাগ ফাইল। আপনি ইটাগ্স.ইল দিয়ে ফাইলটি ব্যবহার করতে পারেন যা ইমাস প্যাকেজের অংশ।
  • Ctags 'ট্যাগ' ফাইল উত্পন্ন করার জন্য একটি আদেশ যা vi এর জন্য ট্যাগ ফাইল। এখন এক্সবিউরেন্ট Ctags -e বিকল্প দ্বারা 'TAGS' ফাইল তৈরি করতে পারে এবং 41 টি প্রোগ্রামিং ভাষাকে সমর্থন করতে পারে।
  • সিস্কোপ সি ভাষার জন্য একটি সর্বস্তর উত্স কোড ব্রাউজিং সরঞ্জাম। এটির নিজস্ব সূক্ষ্ম সিইআই (অক্ষর ব্যবহারকারী ইন্টারফেস) এবং ট্যাগ ডাটাবেসগুলি (cscope.in.out, cscope.out, cscope.po.out) রয়েছে। আপনি ইমাস্যাক্স থেকে সিস্কোপ ব্যবহার করতে পারেন xcscope.el যা সিস্কোপ প্যাকেজের অংশ।
  • জিএনইউ গ্লোবাল একটি উত্স কোড ট্যাগিং সিস্টেম। যদিও এটি উপরের সরঞ্জামগুলির অনুরূপ, এটি তাদের থেকে পৃথক হয় যে এটি কোনও সম্পাদক থেকে নির্ভরশীল এবং কমান্ড লাইন ব্যতীত এর কোনও ব্যবহারকারী ইন্টারফেস নেই। Gtags হল GLOBAL (GTAGS, GRTAGS, GPATH) এর জন্য ট্যাগ ফাইল তৈরি করার একটি আদেশ command গ্লোবাল প্যাকেজের অংশ হ'ল gtags.el ব্যবহার করে আপনি ইম্যাক্স থেকে গ্লোবাল ব্যবহার করতে পারেন। এগুলি ছাড়াও এর জন্য অনেকগুলি এলিজপ লাইব্রেরি রয়েছে (xgtags.el, ggtags.el, যেকোনো কিছু- gtags.el, হেলম-gtags.el, ইত্যাদি)।

তুলনা

  • Ctags এবং etags কেবল সংজ্ঞা ব্যবহার করে। সিস্কোপ এবং জিএনইউ গ্লোবাল কেবল সংজ্ঞাগুলিই নয় তবে রেফারেন্সগুলিও বিবেচনা করে।
  • Ctags এবং etags একটি সমতল পাঠ্য ট্যাগ ফাইল ব্যবহার করে। সিস্কোপ এবং জিএনইউ গ্লোবাল কী-মান ট্যাগ ডাটাবেস ব্যবহার করে।
  • সিস্কোপ এবং জিএনইউ গ্লোবালটিতে সার্চ ইঞ্জিনের মতো একটি গ্রেপ এবং ট্যাগ ফাইলগুলির বর্ধিত আপডেটের সুবিধা রয়েছে।

সমাহার

আপনি এক্সপ্লোরেন্ট Ctags এর সমৃদ্ধ ভাষা সমর্থন এবং GNU GLOBAL এর ডাটাবেস সুবিধাকে গ্লোবালের প্লাগ-ইন পার্সার হিসাবে ctags ব্যবহার করে একত্রিত করতে পারেন।

নিম্নলিখিতগুলি ব্যবহার করে দেখুন: (যথাক্রমে গ্লোবাল-6.০, এক্সিউভারেন্ট সিটিগস -৫.৫ বা তার পরে প্রয়োজন)

জিএনইউ গ্লোবাল বিল্ডিং:

$ ./configure --with-exuberant-ctags=/usr/local/bin/ctags
$ sudo make install

ব্যবহার:

$ export GTAGSCONF=/usr/local/share/gtags/gtags.conf
$ export GTAGSLABEL=ctags
$ gtags                     # invokes Exuberant Ctags internally
$ emacs -f gtags-mode       # load gtags.el

(তবে, আপনি এই পদ্ধতিতে রেফারেন্সগুলি চিকিত্সা করতে পারবেন না, কারণ ctags রেফারেন্সগুলি চিকিত্সা করে না))

আপনি জিএনইউ গ্লোবালের ক্লায়েন্ট হিসাবে সিস্কোপ ব্যবহার করতে পারেন। গ্লোবাল প্যাকেজটিতে 'gtags-cscope' নামে একটি কমান্ড অন্তর্ভুক্ত রয়েছে যা সিস্কোপের একটি বন্দর, অর্থাৎ এটি cscope হয় ব্যতীত এটি গ্লোবালকে সিস্কোপের পরিবর্তে অনুসন্ধান ইঞ্জিন হিসাবে ব্যবহার করে।

$ gtags-cscope          # this is GLOBAL version of cscope

সংমিশ্রণের সাথে, আপনি 41 টি ভাষার জন্য সিস্কোপ ব্যবহার করতে পারেন।

শুভকামনা!


1
ডেবিয়ান এবং উবুন্টুর মতো ডেরিভেটিভ ব্যবহারকারীদের জন্য: জিএনইউ গ্লোবাল ওয়েবপৃষ্ঠা সতর্ক করে দিয়েছে যে এই লিনাক্স ডিস্ট্রিবিউশনের সাহায্যে পাঠানো .deb প্যাকেজগুলি তারিখযুক্ত, এবং ব্যবহার করা উচিত নয়। আমার ক্ষেত্রে গ্লোবালটি ভার্সন on. and.১ তে ছিল এবং আমি ইমা্যাকস 24 তে সঠিকভাবে কাজ করতে gtags.el, ggtags.el বা হেল্ম-gtags.el পেতে পারি না Ex আমি ব্যবহার করে 5.8) একটি ট্রিট কাজ। (চমৎকার পয়েন্টারগুলির জন্য ধন্যবাদ, @ শিগিও)।
রব

9

TAGS ফাইলগুলির সংজ্ঞা রয়েছে

একটি TAGSফাইলে যেখানে ফাংশন এবং ক্লাস সংজ্ঞায়িত করা হয় তার একটি তালিকা থাকে। এটি সাধারণত কোনও প্রকল্পের গোড়ায় স্থাপন করা হয় এবং এর মতো দেখায়:

^L
configure,3945
as_fn_success () { as_fn_return 0; }^?as_fn_success^A180,5465
as_fn_failure () { as_fn_return 1; }^?as_fn_failure^A181,5502
as_fn_ret_success () { return 0; }^?as_fn_ret_success^A182,5539
as_fn_ret_failure () { return 1; }^?as_fn_ret_failure^A183,5574

এটি ইম্যাক্সকে সংজ্ঞাগুলি সন্ধান করতে সক্ষম করে। বেসিক নেভিগেশন অন্তর্নির্মিত হয় find-tag, তবে etags-selectএকাধিক ম্যাচ থাকলে একটি ভাল ইউআই সরবরাহ করে।

কোড সমাপ্তির জন্য আপনি TAGS ফাইলগুলিও ব্যবহার করতে পারেন। উদাহরণস্বরূপ, সংস্থার etags ব্যাকএন্ডে TAGS ফাইলগুলি ব্যবহার করা হয়

TAGS ফাইলগুলি বিভিন্ন সরঞ্জাম দ্বারা নির্মিত যেতে পারে

ctags(পূর্বে 'ইউনিভার্সাল ctags' বা 'বিস্তৃত ctags' নামে পরিচিত) TAGS ফাইল তৈরি করতে পারে এবং ভাষার বিস্তৃত পরিসরকে সমর্থন করে। এটি সক্রিয়ভাবে গিথুবে রক্ষণাবেক্ষণ করা হয়।

দুই প্রোগ্রাম ট্যাগগুলি ফাইল জেনারেট বলা সঙ্গে এ গিয়ে Emacs জাহাজ etagsএবং ctags। এ গিয়ে Emacs ' ctagsঠিক হয় etagsসার্বজনীন ctags হিসাবে একই CLI ইন্টারফেসের সাথে। বিভ্রান্তি এড়াতে, অনেকগুলি ডিস্ট্রো এই প্রোগ্রামগুলির নাম পরিবর্তন করে (উদাহরণস্বরূপ ctags.emacs24দেবিয়ান)।

TAGS ফাইল তৈরির জন্য ভাষা নির্দিষ্ট সরঞ্জামও রয়েছে, যেমন jsctagsএবং hasktags

অন্যান্য ফাইল ফর্ম্যাট

ebrowseইমাস সহ শিপ করা একটি সি প্রোগ্রাম। এটি সি / সি ++ কোড সূচী করে এবং একটি BROWSEফাইল উত্পন্ন করে । ebrowse.el সাধারণত অনুসন্ধান সংজ্ঞা এবং সমাপ্তি সরবরাহ করে। BROWSEক্লাস / ফাংশনটির সংক্ষিপ্ত বিবরণ একটি কোডবেস সংজ্ঞায়িত করতে আপনি সরাসরি ফাইলটি ইমাসে খুলতে পারেন ।

গনুহ গ্লোবাল নিজস্ব ডাটাবেসের ফরম্যাট, একটি নিয়ে গঠিত যা হয়েছে GTAGS, GRTAGSএবং GPATHফাইল। আপনি gtagsকমান্ডের সাহায্যে এই ফাইলগুলি তৈরি করতে পারেন যা সি / সি ++ কোড পার্স করে। অন্যান্য ভাষার জন্য, জিএনইউ গ্লোবাল সর্বজনীন ctags দ্বারা উত্পন্ন ফাইলগুলি পড়তে পারে।

জিএনইউ গ্লোবাল আরও পরিশীলিত প্রশ্ন জিজ্ঞাসার জন্য একটি সি এল এল ইন্টারফেসও সরবরাহ করে, যেমন 'এই চিহ্নটির উল্লেখ কোথায়?' এটি একটি ইম্যাক্স প্যাকেজ gtags.el সহ পাঠায় তবে জিএনইউ গ্লোবাল ডাটাবেসগুলি অ্যাক্সেস করার জন্যও ggtags.el জনপ্রিয়।

জিএসইউ গ্লোবালের সাথে সিস্কোপ একইরকম: এটি সি / সি ++ এর নিজস্ব ডাটাবেস ফর্ম্যাটে পার্স করে। এটি 'এই ফানসিটনের সমস্ত কলার / কলিগুলি অনুসন্ধান করুন' এর মতো প্রশ্নের উত্তরও দিতে পারে।

বৈশ্বিক এবং cscope এর সাথে তুলনা করে এই এইচএন আলোচনাটিও দেখুন ।

ক্লায়েন্ট / সার্ভার প্রকল্পগুলি

অবিচ্ছিন্ন সার্ভার ব্যবহার করে rtags পার্স এবং সূচি সি / সি ++। এটি ক্ল্যাং পার্সার ব্যবহার করে, সুতরাং এটি সি ++ কে সত্যিই ভাল পরিচালনা করে। এটি সার্ভারের জিজ্ঞাসা করতে ইমাস প্যাকেজ সহ পাঠায়।

google-gtags একটি প্রকল্প ছিল যেখানে একটি সার্ভারে একটি বড় TAGS ফাইল সংরক্ষণ করা হত। আপনি যখন সার্ভারটি জিজ্ঞাসা করেছিলেন, এটি আপনার অনুসন্ধানের সাথে প্রাসঙ্গিক TAGS ফাইলের একটি উপসেট সরবরাহ করবে।

শব্দার্থবিজ্ঞান (সিডিইটি)

সিমেন্টিক হ'ল একটি অন্তর্নির্মিত ইমাস প্যাকেজ যা সি / সি ++ এর জন্য পার্সার রয়েছে, সুতরাং এটি সংজ্ঞাগুলিও সন্ধান করতে পারে। এটি TAGS ফাইল, csope ডাটাবেস এবং অন্যান্য উত্স থেকে ডেটা আমদানি করতে পারে। সিইডিইটিতে আইডিই শৈলীর কার্যকারিতা অন্তর্ভুক্ত রয়েছে যা এই ডেটা ব্যবহার করে, যেমন শ্রেণি শ্রেণিবিন্যাসের ইউএমএল ডায়াগ্রাম তৈরি করা।


7

[ শিগিওর কাছ থেকে উত্তর আপডেট হয়েছে ]

আমি প্রশ্নের 1 অংশে কিছু ব্যাখ্যা যুক্ত করার চেষ্টা করব।

এটা কি?

  1. ইটাগস এমন একটি TAGSফাইল উত্পন্ন করে যা ইমাসের জন্য ট্যাগ ফাইল ফর্ম্যাট । আপনি একটি Etags ফাইল ব্যবহার করতে পারেন etags.elযা ইমাসের অংশ।
  2. Ctagsকোনও tagsফাইল উত্পন্ন করতে পারে এমন কোনও জিনিসের জন্য জেনেরিক শব্দটি যা vi এর নেটিভ ট্যাগ ফাইল ফর্ম্যাট। ইউনিভার্সাল Ctags (ওরফে UCtags, পূর্বে এক্সকিউরেন্ট Ctags) -eবিকল্প সহ Etagগুলি তৈরি করতে পারে ।
  3. Cscope নিজস্ব ট্যাগ ডাটাবেস (সঙ্গে, (সি ++ এবং জাভা জন্য ক্ষুদ্রতর সমর্থন সহ) সি জন্য একটি সব কিছু এক সোর্স কোড ব্রাউজিং টুল cscope.in.out, cscope.out, cscope.po.out) এবং Tui । সিমস্কোপ সমর্থন ভিমে অন্তর্নির্মিত; আপনি xcscope.el প্যাকেজ ব্যবহার করে Emacs থেকে সিস্কোপ ব্যবহার করতে পারেন । এছাড়াও রয়েছে স্কোপভিত্তিক জিইউআই
  4. জিএনইউ গ্লোবাল (ওরফে Gtags) আরেকটি উত্স কোড ট্যাগিং সিস্টেম (উল্লেখযোগ্য পার্থক্য সহ - পরবর্তী বিভাগটি দেখুন), এটি ট্যাগ ফাইলও উত্পন্ন করে gene

তুলনা

  • Ctags এবং Etags শুধুমাত্র সংজ্ঞা (যেমন, ভেরিয়েবল এবং ফাংশন) ব্যবহার করে। Cscope এবং Gtags এছাড়াও রেফারেন্স চিকিত্সা করে।
  • Ctags এবং Etags ট্যাগ ফাইলগুলি সমতল । Cscope এবং Gtags ট্যাগ ফাইলগুলি আরও কার্যকর কী-মান ডাটাবেস , যা (উদাহরণস্বরূপ) বর্ধিত আপডেটের অনুমতি দেয়।
  • Cscope এবং Gtags এর grepমত একটি অনুসন্ধান ইঞ্জিন রয়েছে।
  • Ctags আরও ভাষা এবং ডেটা ফর্ম্যাটগুলির জন্য অন্তর্নির্মিত সমর্থন করেছে: ইউনিভার্সাল Ctags পার্সারের বর্তমান ইন-রিপোজিটরি তালিকাটি দেখুন । ইউসিটাগগুলি কীভাবে আপনার নিজের পার্সার বিকাশ করতে পারে তা নথিভুক্ত করেছে ।
  • Cscope এবং Gtags সম্পাদক-স্বতন্ত্র।
  • Gtags তার নিজস্ব ব্যবহারকারী ইন্টারফেস সরবরাহ করে না, তবে বর্তমানে (অক্টোবর 2016) কমান্ডলাইন (সিএলআই), ইমাস এবং আত্মীয়, ভি এবং আত্মীয়, less(পেজার), ডক্সিজেন এবং যে কোনও ওয়েব ব্রাউজার থেকে ব্যবহার করা যেতে পারে।
  • Gtags gtags.elগ্লোবাল প্যাকেজটির মাধ্যমে সরবরাহ করে, তবে xgtags.el, ggtags.el, যেকোনো কিছু- gtags.el, হেলম- gtags.el সহ আরও অনেক এলিজপ এক্সটেনশন রয়েছে।

সমাহার

আপনি ইউনিভার্সাল Ctags 'Gtags সঙ্গে সমৃদ্ধ ভাষা সমর্থন' ডাটাবেস সুবিধা এবং অসংখ্য এক্সটেনশন একত্রিত করতে পারেন বিশ্বব্যাপী প্লাগ-ইন পার্সার হিসাবে Ctags ব্যবহার করে :

# build GNU GLOBAL
./configure --with-exuberant-ctags=/usr/local/bin/ctags
sudo make install

# use it
export GTAGSCONF=/usr/local/share/gtags/gtags.conf
export GTAGSLABEL=ctags
gtags                     # invokes Universal Ctags internally
emacs -f gtags-mode       # load gtags.el

আবার নোট করুন যে আপনি যদি Ctags কে আপনার Gtags এর পার্সার হিসাবে ব্যবহার করেন, আপনি রেফারেন্সগুলি (যেমন, ভেরিয়েবল ইউজেনশন, ফাংশন কল) যা গেটাগগুলি অন্যথায় সরবরাহ করবে তা চিকিত্সা করার ক্ষমতা হারাবে। মূলত, আপনি Gtags 'Ctags জন্য রেফারেন্স ট্র্যাকিং' বৃহত্তর অন্তর্নির্মিত ভাষা সমর্থন বন্ধ বাণিজ্য।

এছাড়াও আপনি Gtags একটি ক্লায়েন্ট হিসাবে Cscope ব্যবহার করতে পারেন: gtags-cscope

শুভকামনা!


আমি পড়েছি: "আবার নোট করুন যে আপনি যদি আপনার গ্যাটাগগুলির জন্য পার্সার হিসাবে Ctags ব্যবহার করেন তবে আপনি রেফারেন্সগুলি (যেমন, ভেরিয়েবল ব্যবহার, ফাংশন কল) যা গ্যাটাগগুলি অন্যথায় সরবরাহ করবে তা চিকিত্সা করার ক্ষমতা হারিয়ে ফেলবে sen Ctags এর বৃহত্তর অন্তর্নির্মিত ভাষা সমর্থন "" পুরানো সিটি্যাগগুলি ইমাস সহ প্রেরণকারীদের পক্ষে কি এটি সত্য, বা ইউনিভার্সাল সিটি্যাগগুলির জন্য এটি এখনও সত্য? এছাড়াও, আমি "ইউনিভার্সাল সিটিএগের সমৃদ্ধ ভাষাটি একত্রিত করি" পড়ি তবে শেল স্নিপেটে এটি ব্যবহার করা হয় --with-exuberant-ctags=...যখন এখন 2019 এর --with-universal-ctagsবিকল্প রয়েছে। এটা কি পরবর্তীতে পরিবর্তন করা উচিত?
বিগুডার

3

আমি আসলে চেক করি নি, তবে সিডিইটি ম্যানুয়াল অনুসারে ( http://www.randomsample.de/cedetdocs/common/cedet/CScope.html ):

শব্দার্থবিজ্ঞান ডাটাবেস অনুসন্ধানের জন্য পিছনের প্রান্ত হিসাবে CScope ব্যবহার করতে পারে। এটি সক্ষম করতে, ব্যবহার করুন:

 (semanticdb-enable-cscope-databases)

এটি সমস্ত সি এবং সি ++ বাফারদের জন্য সিস্কোপ ব্যবহার সক্ষম করবে।

সিএসকোপ তখন প্রজেক্ট-ব্যাপী অনুসন্ধানগুলির জন্য ব্যাকআপ হিসাবে ব্যবহৃত হবে যখন প্রাক-বিদ্যমান সিমেটিক ডাটাবেস অনুসন্ধানগুলি আপনার সমস্ত ফাইল বিশ্লেষণ না করে।


1
এটি Emacs 24.3.1 এ কাজ করবে বলে মনে হচ্ছে না, এটি ভ্যানিলা সিডিইটি ২.০ ব্যবহার করে যা এর সাথে চালিত হয় (কোনও সিমেন্টডিবি-সক্ষম-সিস্কোপ-ডাটাবেস পদ্ধতি নেই)।
রব
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.