הגדרת קוד Visual Studio

Visual Studio Code (VSCode) הוא עורך קוד חינמי, הפועל על מערכות ההפעלה macOS, Linux ו-Windows. יש לו תמיכה בכלים אלגנטיים התומכים בפיתוח Python ו-C++, ניפוי באגים חזותי, אינטגרציה עם git ועוד הרבה תכונות מעניינות. בשל קלות השימוש וניהול ההרחבות, זהו עורך נהדר לפיתוח TensorFlow IO. עם זאת, יש צורך במאמץ מסוים כדי להגדיר אותו כראוי. מכיוון שתצורת VSCode היא מאוד גמישה, היא מאפשרת למפתחים לקמפל פרויקטים באמצעות bazel ולהריץ את הקוד תחת באגים של Python ו-C++. הגדרת הכלי הבסיסית עשויה להיות שונה בהתבסס על מערכות ההפעלה, אך גישת התצורה צריכה להיות דומה.

הרחבות

כדי להתקין תוסף לחץ על סמל תצוגת ההרחבות (הרחבות) בסרגל הצד, או השתמש בקיצור Ctrl+Shift+X. לאחר מכן חפש את מילת המפתח למטה.

  • C/C++ - תוסף C++ רשמי מבית מיקרוסופט
  • Python - הרחבה רשמית של Python מבית מיקרוסופט
  • Python Extension Pack - הרחבה שימושית נוספת לפיתוח Python

הידור פרויקטים

TensorFlow IO מורכב באמצעות פקודת bazel build:

bazel build -s --verbose_failures --compilation_mode dbg //tensorflow_io/...

ראה קובץ README של הפרויקט לפרטים כיצד להגדיר סביבת פיתוח באובונטו. --compilation_mode dbg דגל כאן מציין שבינארי שהופק צריך להיות סמלי ניפוי באגים. ברגע שאתה יכול להרכיב פרויקט משורת הפקודה, אתה יכול גם להגדיר VSCode כדי להיות מסוגל להפעיל את אותה פקודה.

פתח את View->Command Pallete ( Ctrl+Shift+P ) והתחל להקליד: "Tasks: Configure Build Task". אם אתה עושה זאת בפעם הראשונה, העורך יציע ליצור קובץ tasks.json. ברגע שיש לך את זה, הדבק את ה-json הבא:

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Build TF.IO (Debug)",
            "type": "shell",
            "command": "bazel build -s --verbose_failures --compilation_mode dbg //tensorflow_io/...",
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "problemMatcher": []
        }
    ]
}

כעת, אתה יכול ללחוץ על Ctrl+Shift+B , ו- VSCode ישתמש בפקודה למעלה כדי לבנות את הפרויקט. הוא משתמש בחלון מסוף משלו, שבו כל הקישורים ניתנים ללחיצה. אז כאשר מתרחשת שגיאת קומפילציה, אתה פותח את הקובץ המתאים ומנווט אל השורה על ידי לחיצה על הקישור בחלון המסוף.

איתור באגים בפרויקטים

איתור באגים בקוד Python הוא טריוויאלי, עקוב אחר התיעוד הרשמי כדי להבין כיצד להגדיר את VSCode כדי לאפשר זאת: https://code.visualstudio.com/docs/python/debugging

עם זאת, איתור באגים בקוד C++ דורש התקנה של GDB במערכת שלך. אם יש לך סקריפט bq_sample_read.py python שמשתמש בספריית tensorflow-io ובדרך כלל מבוצע באופן הבא:

python3 bq_sample_read.py --gcp_project_id=...

אתה יכול לבצע אותו תחת GDB באמצעות הפעולות הבאות:

gdb -ex r --args python3 bq_sample_read.py --gcp_project_id=...

אם האפליקציה קורסת בשלב הקוד C++, אתה יכול להריץ backtrace במסוף GDB כדי לקבל את ה-stacktrace של השגיאה.

ל- VSCode יש גם תמיכה באגים של GDB. הוא מאפשר הוספת נקודות שבירה, צפייה בערכים של משתנים וצעד דרך הקוד צעד אחר צעד. כדי להוסיף תצורת ניפוי באגים, לחץ על סמל תצוגת ניפוי באגים (Debug) בסרגל הצד, או השתמש בקיצור Ctrl+Shift+D . כאן, לחץ על החץ הקטן למטה ליד כפתור ההפעלה ובחר "הוסף תצורה...". כעת הוא יצור קובץ launch.json , שאליו נא הוסף את התצורה הבאה:

{
    "name": "(gdb) Launch",
    "type": "cppdbg",
    "request": "launch",
    "program": "/usr/bin/python3",
    "args": ["bq_sample_read.py", "--gcp_project_id=..."],
    "stopAtEntry": false,
    "cwd": "${workspaceFolder}",
    "environment": [
        {
            /* path to your bazel-bin folder */
            "name": "TFIO_DATAPATH",
            "value": "/usr/local/google/home/io/bazel-bin"
        },
        {
            /* other env variables to use */
            "name": "GOOGLE_APPLICATION_CREDENTIALS",
            "value": "..."
        }
    ],
    "externalConsole": false,
    "MIMode": "gdb",
    "setupCommands": [
        {
            "description": "Enable pretty-printing for gdb",
            "text": "-enable-pretty-printing",
            "ignoreFailures": true
        }
    ]
}

אם הכל מוגדר כהלכה, אתה אמור להיות מסוגל לבצע הפעלה -> התחל איתור באגים ( F5 ) או הפעלה -> הפעלה ללא ניפוי באגים ( Ctrl + F5 ). זה יריץ את הקוד שלך תחת באגים:

מאתר באגים VSCode

על מנת לפשט עוד יותר את חוויית ניפוי הבאגים, אתה יכול להגדיר את GDB לדלג על ספריות C++ סטנדרטיות. זה מאפשר לך להתעלם מהקוד שלא אכפת לך ממנו. לשם כך, צור קובץ ~/.gdbinit עם התוכן הבא:

skip -gfi /usr/include/c++/*/*/*
skip -gfi /usr/include/c++/*/*
skip -gfi /usr/include/c++/*

עיצוב קבצים

אתה תמיד יכול לאתחל מחדש קובץ C++ או Python על ידי לחיצה ימנית -> עיצוב מסמך ( Ctrl + Shift + I ), אבל VSCode משתמש במוסכמה שונה בסגנון. למרבה המזל, קל לשנות.

לעיצוב Python, ראה https://donjayamanne.github.io/pythonVSCodeDocs/docs/formatting/

עבור עיצוב C++, בצע את הפעולות הבאות:

  • עבור אל העדפות -> הגדרות
  • חפש "C_Cpp.clang_format_fallbackStyle"
  • שנה את הקובץ file:setting.json ישירות על ידי הוספת התוכן הבא
"C_Cpp.clang_format_fallbackStyle": "{ BasedOnStyle: Google}"