كيف يمكنك التعامل مع التعليمات البرمجية الموجودة في العديد من الأدلة المختلفة؟

StackOverflow https://stackoverflow.com/questions/865382

  •  21-08-2019
  •  | 
  •  

سؤال

أنا أعمل على برنامج Python الذي يستخدم البيض بكثافة (Plone).وهذا يعني أن هناك 198 دليلاً مليئًا بكود Python الذي قد أرغب في البحث فيه أثناء تصحيح الأخطاء.هل هناك طريقة جيدة للبحث فقط في ملفات .py في هذه الأدلة فقط، مع تجنب التعليمات البرمجية غير ذات الصلة والملفات الثنائية الكبيرة؟

هل كانت مفيدة؟

المحلول

find DIRECTORY -name "*.py" | xargs grep PATTERN

وبالمناسبة، منذ كتابة هذا، لقد اكتشفت ACK ، وهو حل أفضل من ذلك بكثير.

(ومنذ ذلك تحرير، لقد اكتشفت AG).

نصائح أخرى

وأود أن نوصي بشدة ACK أو بديلا البقرى "، التي تهدف إلى مبرمجين مع الأشجار الكبيرة من التعليمات البرمجية المصدر غير متجانسة" ( من موقع)

grep -r -n "PATTERN" --include="*.py" DIRECTORY

وأنا أيضا استخدام ACK كثيرا في هذه الأيام. لم قرص عليه قليلا للعثور على جميع أنواع الملفات ذات الصلة:

# Add zcml to the xml type:
--type-add
xml=.zcml

# Add more files the plone type:
--type-add
plone=.dtml,.zpt,.kss,.vpy,.props

# buildout config files
--type-set
buildout=.cfg

# Include our page templates to the html type so we can limit our search:
--type-add
html=.pt,.zpt

# Create txt file type:
--type-set
txt=.txt,.rst

# Define i18n file types:
--type-set
i18n=.pot,.po

# More options
--follow
--ignore-case
--nogroup

والمهم أن نتذكر أن ACK لن تجد الملفات إذا كان التمديد هو ليس في التكوين الخاص بها. انظر "ACK --help-أنواع" لجميع أنواع المتاحة.

وأنا أيضا نفترض انك تستخدم عجة ذلك يمكنك البقرى / ACK / العثور على كافة الملفات ذات الصلة؟

وكانت هذه المشكلة الدافع لإنشاء collective.recipe.omelette. إنها وصفة buildout التي يمكن الرمزي كل البيض من مجموعة العمل الخاصة بك في هيكل دليل واحد، والتي يمكن أن نشير فائدة البحث المفضلة لديك في.

find <directory> -name '*.py' -exec grep <pattern> {} \;

وهناك أيضا GNU idutils إذا كنت ترغب في البقرى ل معرفات في شجرة مصدر الكبيرة بسرعة كبيرة جدا. ويتطلب ذلك بناء قاعدة بيانات البحث مقدما، عن طريق تشغيل mkid (واللف ملف التكوين لعدم تجاهل الملفات .py). z3c.recipe.tag يعتني ذلك، إذا كنت تستخدم buildout.

وفقط في حال كنت ترغب في OSS حل غير فلكس ...

وأنا استخدم pycharm. وقد بني في دعم buildout. يمكنك الإشارة إليها في وbuildout المتولدة بن / المثال ويقوم بتعيين مشاريع الاعتماد على الخارج لجميع البيض يستخدمه المثيل. ثم كل IDE والتأمل وقانون الملاحة العمل بشكل جيد. تعريف غوتو، حالات غوتو، دعم إعادة الهيكلية والبحث بطبيعة الحال.

وأنا نوصي ابتسامة للبحث، <وأ href = "HTTP: //pypi.python كافيه / pypi / collective.recipe.omelette "يختلط =" نوفولو "> عجة عند العمل مع بلون وبيديف ميزة" متصفح جلوبل "(مع الكسوف أو استوديو aptana).

وببساطة لأنه لا يوجد ما يكفي من الإجابات ...

إذا كنت مطورا بشكل روتيني، انها تستحق الجهد المبذول لتثبيت الكسوف مع بيديف (أو حتى أسهل، Aptana ستوديو - وهو الكسوف المعدلة)، وفي هذه الحالة الأدوات تجد هناك حق

أصبحت حياتي الممتعة أكثر إرضاءً منذ اكتشاف أمر rgrep الخاص بـ Emacs.

لنفترض أنني أريد العثور على "IPortletDataProvider" في مصدر Plone.أفعل:

  1. M-x rgrep
  2. يطالب Emacs بسلسلة البحث (IPortletDataProvider)
  3. ...ثم الملفات التي يجب البحث عنها (*.py)
  4. ...ثم أي دليل (~/Plone/buildout-cache/eggs).إذا كنت أقوم بتحرير ملف بالفعل، فسيتم تعيين هذا افتراضيًا على دليل هذا الملف، والذي عادةً ما يكون بالضبط ما أريده.

تظهر النتائج في مخزن مؤقت جديد.في الأعلى هو find | xargs grep ركض الأمر إيماكس.يتم تسليط الضوء على جميع المباريات.يمكنني البحث في المخزن المؤقت باستخدام أوامر البحث عن النص القياسية.وأفضل ما في الأمر هو أنه يمكنني الضغط على Enter (أو النقر) على المباراة لفتح هذا الملف.

إنها طريقة جميلة للعمل.يعجبني أنه ليس علي أن أتذكر find | xargs grep تسلسلات الحجة، ولكن كل هذه القوة موجودة إذا كنت في حاجة إليها.

Emacs rgrep example

وOpenGrok هو خيار ممتاز للبحث المصدر والملاحة. يعمل على جافا، وبالرغم من ذلك.

وأتمنى حقا كان هناك شيء من هذا القبيل http://opengrok.plone.org/

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top