PHPMD and PHPCS Integration

About

Dokumen ini bertujuan untuk memberikan informasi integrasi phpmd dan phpcs ke dalam sublime text 3. Sehingga kita tidak perlu bulak balik ke terminal untuk menjalankan phpcs / phpmd. Integrasi dilakukan dengan cara linting, sehingga kita bisa dengan mudah mengetahui jika terdeteksi pelanggaran standard coding.

Instalasi

  • Install package ‘phpcs’ melalui package control, jika package control belum terinstall, cek dokumen tentang sublime text 3 for PHP development.
    Screen Shot 2015-11-17 at 1.25.33 PM.png
  • Setelah phpcs terinstall, cari preferences > package settings > PHP Code sniffer > settings – user.
    Screen Shot 2015-11-17 at 1.25.56 PM.png
  • Didalam file config, anda perlu menuliskan executeable php, phpmd dan phpcs, berikut dengan rule yang ingin diterapkan. Contohnya sebagai berikut
{
    "phpcs_executable_path": "/Users/libreorca/.composer/vendor/bin/phpcs",
    "phpcs_show_quick_panel": false,
    "phpcs_php_path": "/usr/local/Cellar/php53/5.3.29_4/bin/php",
    "phpmd_run": true,
    "phpmd_executable_path": "/Users/libreorca/.composer/vendor/bin/phpmd",
    "phpmd_additional_args": {
        "codesize,design,unusedcode,naming": ""
    },
}
  • Pada contoh diatas, rule yang digunakan untuk PHPMD adalah codesize,design,unusedcode,naming, untuk PHPCS mengikuti default (PSR2).
  • Setelah menulis file setting, save kemudian restart sublime text.

Contoh

  • Misalkan kita memiliki file test.php
<?php

class Test
{
    public function test_a($a,$b)
    {
        $c = 3 + $a;

        if($c>15)
        {
            $c++;
        }

        $this::test_b();

        echo $c;
    }

    private static function test_b($flag = false)
    {
        if ($flag) {
            echo 'a';
        } else {
            echo 'b';
            exit();
        }

        return;
    }
}

$objA = new Test();
$objA->test_a(1,5);
  • Sublime akan secara automatis melakukan pengecekan setiap kali kita me-save file yang di edit.
  • Jika integrasi phpmd dan phpcs sudah terinstall dengan benar, sublime akan melakukan linting pada baris baris kode yang melanggar aturan / standard kode yang ditentukan. Cek status bar untuk mengetahui pelanggaran apa yang ada di baris kode tersebut.
    Screen-Shot-2015-11-17-at-1.35.02-PM.jpg
  • Hasil perbaikan test.php
<?php
namespace Sublime\test;

class Test
{
    public function testA($varA)
    {
        $varC = 3 + $varA;

        if ($varC>15) {
            $varC++;
        }

        $this::testB();

        echo $varC;
    }

    private static function testB($flag = false)
    {
        if ($flag) {
            echo 'a';
        } else {
            echo 'b';
        }

        return;
    }
}

$objA = new Test();
$objA->testA(1, 5);

Screen Shot 2015-11-17 at 1.39.57 PM.png

Conclusion

Dengan integrasi ini kita dengan mudah bisa mendeteksi jika ada yang tidak sesuai dengan standard code. Tidak hanya membuat coding kita lebih mudah dibaca, tapi kita juga belajar untuk membuat code yang lebih terstruktur. Better programmer = better & cleaner code.

Credit to: Yusuf Irwandi

Leave a Reply

Your email address will not be published. Required fields are marked *