3 poin oleh GN⁺ 2024-03-22 | 1 komentar | Bagikan ke WhatsApp

Alat perbedaan struktural Difftastic

  • Difftastic adalah alat perbedaan CLI yang memahami sintaks, membandingkan file berdasarkan sintaks alih-alih per baris.
  • Menyediakan perbedaan yang akurat dan mudah dibaca manusia.

Memahami perubahan yang benar-benar terjadi

  • Difftastic menggunakan tree-sitter untuk mem-parsing kode.
  • Berbeda dari perbedaan teks berbasis baris, alat ini memahami bahwa representasi internal tidak berubah.

Mengabaikan perubahan format

  • Saat formatter kode memutuskan untuk membaginya ke beberapa baris, alat ini hanya menampilkan bagian yang benar-benar berubah.

Memvisualisasikan perubahan pembungkus

  • Jika pembungkus ditambahkan, Difftastic mencocokkan delimiter secara akurat.
  • Bahkan jika isi di dalamnya diubah, alat ini tetap dapat menampilkan pembungkus yang ditambahkan.

Nomor baris sebenarnya

  • Menampilkan nomor baris sebenarnya dari file, baik sebelum maupun sesudah perubahan.

Demo 60 detik

Dukungan bahasa pemrograman

  • Mendukung berbagai bahasa seperti C++, C#, Clojure, Dart, dan Erlang.
  • Daftar lengkap bahasa yang didukung dapat dilihat di manual.

Dukungan format file

  • Mendukung berbagai format file seperti HCL, HTML, JSON, dan YAML.
  • Daftar lengkap format file yang didukung dapat dilihat di manual.

Kompatibel dengan Git

  • Petunjuk konfigurasi Git dapat dilihat di manual.

Sepenuhnya open source

  • Difftastic menggunakan lisensi MIT.
  • Dapat diunduh, dimodifikasi, dan dibagikan dengan teman-teman.

Pembuat

  • Dibuat oleh Wilfred Hughes ditemani Emacs dan secangkir kopi.

Opini GN⁺

  • Difftastic membantu developer memahami perubahan dengan lebih jelas dengan mengenali perbedaan struktural pada kode.
  • Dibandingkan alat diff berbasis baris tradisional, Difftastic memungkinkan perbandingan yang lebih canggih melalui pemahaman sintaks kode dan kemampuan mengabaikan perubahan format.
  • Sebagai alat open source, ada potensi untuk terus ditingkatkan melalui kontribusi komunitas, dengan kelebihan bahwa pengguna bebas memodifikasi dan memperluasnya sesuai kebutuhan.
  • Alat lain dengan fungsi serupa termasuk alat bawaan Git yaitu git diff atau alat perbandingan bawaan IDE seperti JetBrains IntelliJ IDEA, tetapi Difftastic menawarkan pendekatan unik berupa perbandingan berbasis sintaks.
  • Saat mengadopsi Difftastic, perlu memeriksa bahasa pemrograman dan format file yang didukung, serta mungkin diperlukan kesepakatan dalam tim terkait penggunaan alat ini. Dengan menggunakan alat ini, efisiensi code review dapat meningkat dan kesalahpahaman dalam kolaborasi dapat dikurangi.

1 komentar

 
GN⁺ 2024-03-22
Komentar Hacker News
  • Pengenalan teknologi berbasis Tree-sitter

    • Tree-sitter menyediakan antarmuka standar yang mengubah kode menjadi AST (Abstract Syntax Tree, pohon sintaks abstrak) dan menyediakannya ke klien seperti editor atau alat diff.
    • Dengan demikian, alat tidak perlu mendukung puluhan bahasa secara langsung; cukup mendukung Tree-sitter agar otomatis bisa menangani semua bahasa yang didukung Tree-sitter.
    • Saat mengembangkan bahasa baru, jika dibuat parser Tree-sitter, maka semua alat yang mendukung Tree-sitter akan ikut mendukung bahasa tersebut.
    • Inovasi ini mengurangi pekerjaan berulang dalam pengembangan alat yang mendukung beragam bahasa dan sedang membentuk ekosistem alat yang lebih baik.
  • Proyek Rust dan cara memperbarui alat

    • Dijelaskan cara memasang dan memperbarui proyek berbasis Rust melalui cargo.
    • mise-en-place adalah pengganti asdf yang cepat dan fleksibel.
    • zoxide adalah pengganti perintah cd; alat ini mengingat direktori yang pernah dikunjungi pengguna dan memungkinkan perpindahan cepat melalui pencarian kecocokan parsial.
    • dust adalah alat pelengkap untuk du yang menampilkan direktori yang paling banyak menggunakan ruang disk.
  • Pengalaman dan pendapat tentang penggunaan Difftastic

    • Pengalaman menggunakan Difftastic dibagikan, dan disebutkan bahwa memakai alat diff lain terasa kurang nyaman.
    • Kemungkinan alat diff 'semantic' yang dapat membandingkan kasus ketika sintaks berubah tetapi maknanya tetap sama juga dieksplorasi.
  • Kemudahan Difftastic

    • Disorot bahwa Difftastic menampilkan nomor baris file yang sebenarnya, dan hal ini disebut sangat berguna saat dipakai bersama git diff.
  • Alat terkait: diff2html

    • diff2html adalah alat yang menampilkan diff dalam format HTML di tab browser melalui CLI (Command Line Interface).
  • Pengalaman menggunakan pustaka Augeas

    • Dibagikan pengalaman menggunakan pustaka Augeas untuk mendeteksi perbedaan pada file konfigurasi dan memungkinkan pengguna menulis allowlist terperinci yang tidak sensitif terhadap sintaks.
  • Perbandingan dengan Semantic Merge

    • Semantic Merge bukan open source, tetapi Difftastic adalah open source dan memberikan diff yang lebih baik.
    • Diungkapkan rasa penasaran apakah ada rencana untuk memperluas Difftastic dengan fitur merge.
  • Kembali ke icdiff

    • Ada pendapat yang mengatakan sempat mencoba Difftastic, tetapi kembali ke icdiff karena masalah seperti penerapan pemformatan aneh pada bagian yang tidak berubah.
  • Masalah visual pada Difftastic

    • Ditunjukkan bahwa saat memeriksa file XML besar, sulit membedakan secara visual antara baris dan atribut yang dimodifikasi, serta disebutkan perlunya dokumentasi tentang cara mengubah gaya.
  • Ukuran instalasi Difftastic

    • Disebutkan bahwa ukuran paket Arch Linux adalah 7MB, tetapi setelah dipasang membengkak menjadi 80MB, dan biner difft sendiri berukuran 78MB.
    • Pada dataset ZFS yang menggunakan kompresi LZ4, ukurannya terlihat 17MB, sehingga muncul pertanyaan mengapa konten yang bisa dikompresi tidak dikeluarkan dari biner.