JavaRush /בלוג Java /Random-HE /חיפוש קוד GitHub: מצא יותר, חפש פחות - GitHub השיקה מנוע ...
Roman Beekeeper
רָמָה

חיפוש קוד GitHub: מצא יותר, חפש פחות - GitHub השיקה מנוע חיפוש

פורסם בקבוצה
שלום לכולם, חברים יקרים! בתור חובב תכונות חדשות ב- GitHub, מאוד עניין אותי לדעת שבקרוב כולנו נוכל לחפש במהירות וביעילות בבסיס הקוד של GitHub. זה יכול להיות מאוד נוח, במיוחד אם אתה צריך למצוא דרך מתוחכמת להשתמש בכלי. "חיפוש קוד GitHub: מצא יותר, חפש פחות" - GitHub השיקה מנוע חיפוש - 1זה מהדהד במיוחד עם העובדה שמתחרה עתידית ל-GitHub נפתחה ברוסיה. לכן, GitHub בהחלט לא צריך לנוח על זרי הדפנה, למרות העובדה שהם ללא ספק המובילים בשוק. אנחנו צריכים להמשיך הלאה ולהתפתח, אחרת זה אפילו לא שעה והמתחרים יתפסו את הפער ויסחפו. ושלא ייראה כל כך מדהים. כדוגמה: כמה אנשים עדיין משתמשים בטלפונים של נוקיה? מי בכלל יודע שהם יצרו טלפונים? פעם הם היו פשוט בלתי ניתנים להשגה, מובילי שוק ללא עוררין... ועכשיו הם מופיעים איפשהו בתחום הטעות הסטטיסטית.

רושם ראשוני

GitHub יצרה פרויקט שבו אתה יכול לחפש, לנווט ולנתח את הקוד שלך ואת מיליארדי שורות הקוד שפורסמו ב-GitHub. חשוב לציין שהחיפוש ניתן להרחבה, מהיר ומדויק. הוא נוצר מאפס במיוחד עבור חיפוש קוד. הניווט עובד עבור 10 שפות תכנות עיקריות ללא הגדרות (אנו מקווים שהרשימה תגדל בעתיד). אתה יכול לחפש באמצעות ביטוי רגולרי, וזה מאוד מגניב. מסננים אחרים זמינים גם:
  • לפי ארגון;
  • על שפות תכנות;
  • על ידי בעלים ספציפיים;
  • לפי סיומת קובץ;
  • על ידי ביטוי רגולרי.
הרשימה כבר מרשימה! מסתבר שמנוע החיפוש נותן לנו אפשרות ליצור שאילתות חיפוש מורכבות בהן נוכל להגדיר בצורה ברורה את הגבולות שלאורכם נדרש החיפוש. החלק החשוב השני במנוע הוא ניווט קוד 😳 למה נוחות סביבות פיתוח ולמה אנשים משלמים עליהן כסף? מכיוון שהם מקלים על חיינו, עזרו לנו לנווט בקוד, כך שמהירות הפיתוח וקריאת הקוד תגדל. ו-GitHub מציע לנו כעת את התכונה המגניבה הזו. זה מדהים. כן, אני יודע שכרגע יש כבר משהו דומה לניווט ב-GitHub, אבל הפונקציונליות עדיין קצרה וגסה. כלומר, ללא סביבת פיתוח, ניתן לחפש היכן משתמשים בשיטות מסוימות, היכן הן הוגדרו. זה פשוט נפלא. GitHub אתה משמח אותי. ניתן גם ניווט לייבוא ​​במחלקות. זה פותר בעיות רבות במציאת ולימוד ספרייה מסוימת ב- GitHub. כעת תהליך זה מואץ פי כמה. והכל בחינם. פשוט מעולה. האם הוא יהיה מבוקש? אני בטוח שכן!

בואו נדבר בפירוט רב יותר על חיפוש

זה מאוד מעניין להסתכל ולנסות לחפש בעצמך: האם זה נוח כמו שאומרים? לעת עתה, תכונה זו אינה זמינה לציבור ואתה יכול להוסיף את עצמך לרשימת ההמתנה באמצעות הקישור . אנחנו ממלאים שם את כל הנקודות, השאלות פשוטות, לא אתאר אותן כאן. כתוצאה מכך, אנו מתווספים לרשימת ההמתנה וממשיכים הלאה. כתוצאה מכך, התשובה תהיה כזו: "חיפוש קוד GitHub: מצא יותר, חפש פחות" - GitHub השיקה מנוע חיפוש - 2אתה רק צריך לחכות. ברגע שאצורף, אני בהחלט אראה לך הכל. אל תתמהמהו, הוסיפו את עצמכם כדי שתוכלו להבין את זה מאוחר יותר ולהשתמש בו לשמחתכם) וכמובן, חבל שאתם לא יכולים לנסות את הכלי החדש מיד, אז בואו ננתח את התיעוד שלהם ונתאר ב פרט יותר כיצד נוכל להשתמש בכלי זה לעבודה שלנו. עכשיו לגבי החיפוש. זה ישתמש בשיעורים ובמבנים הגיוניים בספרייה שאני כותב. זה יעשה לי את זה ברור וקל יותר, ואני מקווה שגם לך זה יהיה קל יותר.

חיפוש בסיסי

ImageComparison הוא החיפוש הפשוט ביותר שמחפש בדיוק עם השאילתה בשמות קבצים ובתוכן שלהם. הכל נראה מאוד פשוט כאן. אם נרצה למצוא בבירור לפי שם המחלקה, היכן היא מוצהרת ואיפה היא משמשת, חיפוש כזה יעזור לנו בכך. כאשר אתה מזין מילים מרובות מופרדות ברווחים, התוצאה תהיה חיפוש של כולן בנפרד: השוואת תמונה , כלומר היא תמצא קבצים וקוד עבור תמונה והשוואה כאחד . אם אתה צריך לחפש מחרוזת המכילה רווחים, אתה רק צריך להשתמש במירכאות. לדוגמה: "ImageComparison comparison = new ImageComparison()" ואז החיפוש יתאים לכל המחרוזת. עבור בריחה, אנו משתמשים ב-"\" כמו תמיד. עד כה, הכל אינטואיטיבי ולעתים קרובות כך זה נעשה. יתר על כן, אנו יכולים להוסיף מסננים לחיפוש בסיסי זה. לכן, בואו נדבר על כל אחד מהם. אלה יהיו "ANDs" הגיוניים למסנן שכבר יצרנו.

סנן לפי מאגר

ברגע שהמסנן הבסיסי שלנו מוכן, נוכל לצמצם את החיפוש שלנו ולחפש לפי מאגר ספציפי, וזה מאוד נוח. אתה לא צריך לחפש באיזו תיקייה ממוקמת הכיתה, אתה יכול פשוט לכתוב:
repo:romankh3/image-comparison ImageComparisonResult
איפה אנחנו צריכים לציין repo:${user_name}/${repo_name} . אתה יכול גם לחפש במאגרים מרובים פשוט על ידי הוספת OR:
repo:romankh3/image-comparison או repo:romankh3/usage-image-comparison ImageComparisonResult
כפי שצוין ב-GitHub, כרגע הם לא תומכים בחיפוש במאגרים שבהם השם מצוין כביטוי רגולרי... זה אומר שהם מתכננים להוסיף פיצ'ר כזה וזה אומר שהפרויקט לא יעצור במוצהר פונקציונליות ויתפתחו עוד יותר.

סנן לפי ארגון

חיפוש לפי ארגון או משתמש נעשה בדיוק באותו אופן כמו חיפוש לפי מאגר, רק מילת המפתח לא תהיה repo , אלא org :
org:romankh3 ImageComparison
ואז החיפוש יעבור בכל המאגרים של המשתמש/הארגון.

סינון לפי שפות תכנות

ניתן גם לציין חיפוש אחר קבצים בשפת תכנות מסוימת. כאן הבנייה זהה לזו של המאגר והארגון, רק מילת המפתח היא שפה :
שפה: Java ImageComparison
בדיוק כמו המאגר, הוא תומך בחיפוש במספר שפות בו-זמנית באמצעות מילת המפתח OR:
language:java או language:ruby ImageComparison
רשימה מלאה של שפות הנתמכות על ידי GitHub ניתן למצוא כאן . אני תוהה אם BrainFuck יש? 😂

סנן לפי נתיב קובץ

לכל קובץ בפרויקט יש נתיב משלו וניתן גם לחפש בו על ידי הוספת מסנן. לדוגמה, יש קובץ ImageComparisonResult , יש לו את הנתיב:
src/main/java/com/github/romankh3/image/comparison/model/ImageComparisonResult.java
אז כדי למצוא את כל המחלקות שהנתיב שלהן מתחיל ב- src/main/java/com/github/romankh3/image , אתה צריך:
path:src/main/java/com/github/romankh3/image
יכול להיות שימושי במקרים שבהם אנחנו לא רוצים ששיעורי מבחן יישארו מחוץ לתוצאות החיפוש שלנו. או להיפך, רק בדיקות. זה הופך את החיפוש שלך לגמיש יותר. ניתן לציין מסנן לפי נתיב קובץ באמצעות ביטוי רגולרי. למשל, אנחנו צריכים למצוא
path:src/*/*.js

פעולות בוליאניות

וכמובן, השיא של כל בניית מסננים הוא שילוב העניין הזה יחד באמצעות פעולות בוליאניות. בשביל זה יש לנו AND, OR, AND NOT. אני חושב שזה אמור להספיק לנו. לדוגמה, בואו ניצור שאילתת חיפוש מורכבת: קוד מייצור Java או Kotlin עבור משתמש/ארגון ספציפי:
repo:romankh3 AND (שפה:java OR language:kotlin) ולא נתיב:*/test/*
וזה, אני אומר לכם, פשוט מדהים. בקשת החיפוש כתובה בצורה כל כך פשוטה, מהירה, תמציתית וברורה שלא תהיינה בעיות בחיפוש ובקריאת הבקשה.

נסיגה קטנה

אמנם התענוג שלנו עדיין לא התקרר, אבל אני רוצה לחזור לשנת 2018 ולהיזכר במשהו... זוכרים, כשכולם גילו שמיקרוסופט קונה את GitHub, כולם חשבו שהפרויקט ייקבר? שהגורל שלו הוא דרכו של הסקייפ השני? איך כולם התחילו להעביר את הפרויקטים שלהם ל-GitLab? אבל בואו נהיה כנים, בעקבות ההייפ הזה יצרתי וסבלתי משהו. אבל למען האמת, מעולם לא ביקרתי שוב במקום שאליו העברתי את הפרויקטים. ואיכשהו אני לא רוצה. ולמה? יש גם מחשבות על זה. הרשו לי להזכיר לכם שלאחר מכירת GitHub לביל גייטס, הפרויקט הוסיף את היכולת להחזיק מאגרים פרטיים בחינם, GitHub Actions שוחררו לתהליך ה-CI/CD ועוד הרבה יותר. ועכשיו גם מנוע חיפוש חזק. זה לא נשמע כמו רצון להטביע את הפרויקט. זה יותר כאילו מיקרוסופט לא רצתה לשלם מסים על רווחים וביצעה רכישה מוצלחת עד סוף השנה עבור יותר מ-9 מיליארד דולר 😁 ואז אחרי כל זה הם החליטו לפתח את הפרויקט הזה. וזה נכון שלמפתח קוד פתוח זה מקום מצוין לאחסן את הקוד שלו. אתה יכול לפתח את המוצר שלך במלואו מבלי לעזוב את GitHub.

בסופו של דבר

כתבתי את המאמר במכה אחת. אני באמת אוהב את זה כשמילים ורגשות פשוט זורמים כמו גייזר. זה מה שמניע את הטכנולוגיה קדימה. אז אנחנו עם האצבע על הדופק ולא מרפים מהמצב. אני בטוח שכל אחד מאיתנו צריך ללמוד להשתמש בו. לכל מי שלא נרשם ל-GitHub, אני ממליץ בחום לעשות זאת. זה שווה את זה. כמו תמיד, חברים, אל תשכחו להירשם לערוץ הטלגרם שלי , בו אני משלב את כל הפעילויות הציבוריות שלי. בנוסף למאמרים שאני מפרסם כאן, אני כותב שם פוסטים קצרים יותר בהם אני נוגע בנושאים שמעניינים אותי מעולם הפיתוח וה-IT בכלל. יש שם כבר יותר מ-800 מנויים! וכמובן, חשבון GitHub שלי , שבו אני מפרסם את כל פרויקטי ההדגמה למאמרים, מעדכן את הספריות שלי ומפתח ארגוני קוד פתוח. זה הכל, תודה לכולכם שקראתם, בואו לא ניפרד 👌
הערות
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION