پیکربندی کد ویژوال استودیو

ویژوال استودیو کد (VSCode) یک ویرایشگر کد رایگان است که روی سیستم عامل‌های macOS، Linux و Windows اجرا می‌شود. پشتیبانی از ابزار ظریفی دارد که از توسعه Python و C++، اشکال زدایی بصری، ادغام با git و بسیاری از ویژگی های جالب دیگر پشتیبانی می کند. به دلیل سهولت استفاده و مدیریت برنامه افزودنی، این ویرایشگر عالی برای توسعه TensorFlow IO است. با این حال، مقداری تلاش برای پیکربندی صحیح آن ضروری است. از آنجایی که پیکربندی VSCode بسیار انعطاف‌پذیر است، به توسعه‌دهندگان اجازه می‌دهد تا پروژه را با استفاده از bazel کامپایل کرده و کد را تحت اشکال‌زدای Python و C++ اجرا کنند. تنظیم ابزار پایه ممکن است بر اساس سیستم های عملیاتی متفاوت باشد، اما رویکرد پیکربندی باید مشابه باشد.

برنامه های افزودنی

برای نصب یک برنامه افزودنی، روی نماد نمای افزونه ها (افزونه ها) در نوار کناری کلیک کنید یا از میانبر Ctrl+Shift+X استفاده کنید. سپس کلمه کلیدی زیر را جستجو کنید.

تدوین پروژه ها

TensorFlow IO با استفاده از دستور ساخت bazel کامپایل شده است:

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 زیر را Paste کنید:

{
    "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 از دستور بالا برای ساخت پروژه استفاده می کند. از پنجره ترمینال خود استفاده می کند، جایی که همه پیوندها قابل کلیک هستند. بنابراین هنگامی که یک خطای کامپایل رخ می دهد، فایل مربوطه را باز کرده و تنها با کلیک بر روی پیوند در پنجره ترمینال، به خط هدایت می شوید.

اشکال زدایی پروژه ها

اشکال زدایی کد پایتون بی اهمیت است، اسناد رسمی را دنبال کنید تا بفهمید چگونه VSCode را برای فعال کردن آن پیکربندی کنید: https://code.visualstudio.com/docs/python/debugging

با این حال، اشکال زدایی کد ++C نیاز به نصب GDB بر روی سیستم شما دارد. اگر یک اسکریپت پایتون bq_sample_read.py دارید که از کتابخانه 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 View (Debug) را در نوار کناری فشار دهید یا از میانبر Ctrl+Shift+D استفاده کنید. در اینجا، فلش کوچک رو به پایین در کنار دکمه پخش را فشار دهید و "Add Configuration..." را انتخاب کنید. اکنون یک فایل 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
        }
    ]
}

اگر همه چیز به درستی پیکربندی شده باشد، باید بتوانید Run -> Start Debugging ( F5 ) یا Run -> Run Without Debugging ( Ctrl + F5 ) را انجام دهید. این کد شما را تحت دیباگر اجرا می کند:

دیباگر VSCode

به منظور ساده‌تر کردن تجربه اشکال‌زدایی، می‌توانید GDB را طوری پیکربندی کنید که از کتابخانه‌های استاندارد C++ رد شود. این به شما امکان می دهد کدی را که برایتان مهم نیست نادیده بگیرید. برای این کار یک فایل ~/.gdbinit با محتوای زیر ایجاد کنید:

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

فرمت کردن فایل ها

همیشه می‌توانید فایل C++ یا Python را با کلیک راست -> Format Document ( Ctrl + Shift + I ) دوباره قالب‌بندی کنید، اما VSCode از یک قرارداد سبک متفاوت استفاده می‌کند. خوشبختانه، تغییر آن آسان است.

برای قالب‌بندی پایتون، به https://donjayamanne.github.io/pythonVSCodeDocs/docs/formatting/ مراجعه کنید.

برای قالب بندی C++، موارد زیر را انجام دهید:

  • به تنظیمات -> تنظیمات بروید
  • جستجو برای "C_Cpp.clang_format_fallbackStyle"
  • file:setting.json را مستقیماً با افزودن محتوای زیر تغییر دهید
"C_Cpp.clang_format_fallbackStyle": "{ BasedOnStyle: Google}"