vscode-suitescript-governance
v1.0.0
Published
Right-click any SuiteScript file to check governance point consumption. Visual analysis of API costs with detailed breakdowns.
Readme
SuiteScript Governance Checker - VS Code Extension
Right-click any SuiteScript file → 🔍 Check Governance Limit untuk melihat laporan konsumsi governance points secara visual.
⚙️ Persiapan Penting (MANDATORY)
Sebelum ekstensi VS Code dapat berfungsi melakukan analisis, Anda HARUS menginstal plugin linter engine (yang sudah tersedia secara publik di npm) pada project NetSuite Anda:
1. Instalasi Plugin via NPM
Buka terminal di folder project NetSuite Anda (tempat di mana file eslint.config.mjs atau package.json Anda berada) dan jalankan:
npm install eslint-plugin-suitescript-governance --save-dev2. Buat Konfigurasi ESLint
Di root folder project NetSuite (tempat folder FileCabinet), buat file eslint.config.mjs:
import suiteScriptGovernance from "eslint-plugin-suitescript-governance";
export default [
{
files: ["**/*.js"],
plugins: { "suitescript-governance": suiteScriptGovernance },
rules: {
"suitescript-governance/no-api-call-in-loop": "warn",
"suitescript-governance/governance-limit-check": "warn",
"suitescript-governance/require-script-type": "warn",
"suitescript-governance/recommend-remaining-usage": "warn",
},
},
];❓ Mengapa Menu Tidak Muncul? (Troubleshooting)
Jika Anda sudah menginstal VSIX tapi menu "Check Governance Limit" tidak muncul:
- Pastikan File adalah
.js: Menu hanya muncul pada file dengan ekstensi.jsyang dideteksi oleh VS Code sebagai bahasaJavaScript. - Cek Status Bar: Di pojok kanan bawah, seharusnya muncul tulisan
🛡️ Governance. Jika tidak ada, berarti extension belum aktif. - Restart VS Code: Setelah instal VSIX, terkadang VS Code perlu di-restart (
Ctrl+Shift+P>Developer: Reload Window). - Output Channel: Jika Anda klik menu tapi tidak terjadi apa-apa, buka panel Output di bawah, lalu pilih SuiteScript Governance dari dropdown di pojok kanan panel tersebut untuk melihat pesan error.
- Path Error: Pastikan Anda menjalankan VS Code di folder yang benar (root project). Linter ini mencari file
eslint.config.mjsdi folder tempat Anda membuka editor.
✨ Fitur Utama
Ekstensi ini dirancang khusus untuk mempermudah developer NetSuite dalam memantau dan menjaga batas penggunaan API (Governance Points).
1. 🔍 One-Click Governance Check
Melalui Context Menu (Klik Kanan) baik di area Editor maupun di Explorer (daftar file), Anda bisa langsung memicu analisis governance pada file SuiteScript 2.x tanpa menuliskan perintah manual di terminal. Anda juga bisa menggunakan Keyboard Shortcut Ctrl+Shift+G untuk proses yang lebih cepat.
2. 📊 Visual Dashboard via Output Channel Hasil analisis dari ESLint parser tidak ditampilkan mentah, melainkan divisualisasikan dengan elegan pada panel Output VS Code. Ini mencakup:
- Progress Bar Konsumsi: Menampilkan persentase penggunaan poin terhadap total limit script (misalnya 1000 points untuk User Event).
- Cost Breakdown: Rincian detail API NetSuite apa saja yang dipanggil beserta total beban governance yang digunakan.
- High-Cost Operations: Penanda bahaya (high-cost) pada API berat seperti
N/render.xmlToPdfatau manipulasi query rumit.
3. 🛡️ Status Bar Indicator
Setiap kali Anda membuka file yang berpotensi menjadi SuiteScript (file dengan ekstensi .js), indikator khusus bertuliskan 🛡️ Governance akan otomatis muncul di panel Status Bar (pojok kanan bawah), memudahkan satu kali klik untuk menjalankan pengecekan.
4. ⚠️ Smart Danger & Loop Detection
Mendeteksi penggunaan API NetSuite secara tidak optimal, seperti memanggil record.load() atau record.submitFields() di dalam sebuah loop (for, while, .each()). Ekstensi ini akan memberikan notifikasi peringatan VS Code (Pop-up Warning) jika hal ini terdeteksi.
5. 🤖 Auto-check on Save (Opsional)
Anda dapat mengaktifkan konfigurasi suiteGovernance.autoCheckOnSave via VS Code Settings. Saat aktif, ekstensi akan melakukan validasi limit konsumsi governance secara otomatis di background setiap kali Anda menekan Ctrl+S (Save) pada file .js.
6. 📋 Missing Annotations Detection
Secara otomatis akan mengingatkan jika file skrip Anda lupa mendefinisikan JSDoc tag yang esensial di NetSuite, terutama jenis skrip (@NScriptType) agar linter dapat mengenali base governance limit-nya dengan tepat.
7. 💡 Actionable Recommendations
Linter ini didesain tidak sekadar mendeteksi error, tapi mengedukasi best practice. Ia bisa mendeteksi blok iterasi besar dan langsung menyarankan untuk menambahkan mekanisme "Yield" atau menggunakan runtime.getCurrentScript().getRemainingUsage() guna menghindari error "Script Execution Usage Limit Exceeded".
📦 Instalasi
Metode 1: Install dari VSIX (Recommended)
# Build VSIX package
npx @vscode/vsce package
# Install ke VS Code
code --install-extension vscode-suitescript-governance-1.0.0.vsixMetode 2: Development Mode
- Buka folder ini di VS Code
- Tekan
F5untuk launch Extension Development Host - Buka project SuiteScript di window baru
⚙️ Prasyarat
Project target harus memiliki:
- ESLint terinstall:
npm install --save-dev eslint - Plugin governance:
npm install --save-dev eslint-plugin-suitescript-governance - File
eslint.config.mjsdi root project:
import suiteScriptGovernance from "eslint-plugin-suitescript-governance";
export default [
{
files: ["**/*.js"],
plugins: { "suitescript-governance": suiteScriptGovernance },
rules: {
"suitescript-governance/no-api-call-in-loop": "warn",
"suitescript-governance/governance-limit-check": "warn",
"suitescript-governance/require-script-type": "warn",
"suitescript-governance/recommend-remaining-usage": "warn",
},
},
];📊 Contoh Output
══════════════════════════════════════════════════════════════════════
🛡️ SUITESCRIPT GOVERNANCE REPORT
📄 File: balance_sheet_fdd_sl.js
🕐 Time: 15:30:45
══════════════════════════════════════════════════════════════════════
📊 GOVERNANCE SUMMARY
──────────────────────────────────────────────────────────────────────
Points Used : 85 / 1000 (8.5%)
🟢 [████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░]
Breakdown:
• N/record.load (20 pts)
• N/search.each (10 pts)
• N/render.xmlToPdf (45 pts)
• N/record.save (10 pts)
🔥 High-Cost Operations:
⚡ N/render.xmlToPdf (45 pts)
──────────────────────────────────────────────────────────────────────
💡 RECOMMENDATIONS
──────────────────────────────────────────────────────────────────────
💡 SUGGESTION: Loop contains 'N/record.load' (10 pts/iteration).
Add runtime.getCurrentScript().getRemainingUsage() check.
══════════════════════════════════════════════════════════════════════⌨️ Keyboard Shortcuts
| Shortcut | Action |
| -------------- | -------------------------------------- |
| Ctrl+Shift+G | Check Governance Limit pada file aktif |
⚙️ Settings
| Setting | Type | Default | Description |
| --------------------------------- | ------- | ------- | ------------------------------------------------------------ |
| suiteGovernance.pluginPath | string | "" | Path absolute ke plugin (kosongkan = pakai workspace config) |
| suiteGovernance.autoCheckOnSave | boolean | false | Auto-check saat save file .js |
🌍 Dukungan IDE Lain (Selain VS Code)
Meskipun ekstensi One-Click Report ini dibuat khusus untuk VS Code, core engine-nya (linter) 100% independen dan tersedia di publik (NPM).
Karena dibangun di atas ekosistem ESLint, Anda bisa menggunakannya di IDE / Editor mana pun yang mendukung ESLint, seperti:
- WebStorm / IntelliJ IDEA: Secata otomatis akan mendeteksi
eslint.config.mjsdan menampilkan error/warning governance limit berbentuk garis bawah (squiggly lines). - Cursor IDE / Windsurf: Sama-sama berbasis VS Code, semuanya berfungsi persis seperti VS Code.
- Sublime Text, Neovim, Emacs: Bisa digunakan selama Anda memiliki LSP ESLint plugin yang diaktifkan.
Cara menggunakannya di IDE lain:
Cukup jalankan npm install eslint-plugin-suitescript-governance --save-dev di proyek Anda, buat file konfigurasi eslint.config.mjs, lalu aktifkan ESLint pada IDE favorit Anda. Error governance (loop API detection, missing requirements) akan tersorot secara real-time di kode Anda!
