Upgrade to Pro — share decks privately, control downloads, hide ads and more …

静的解析ではじめる負債コード解消

daiki1020
December 14, 2020

 静的解析ではじめる負債コード解消

daiki1020

December 14, 2020
Tweet

Other Decks in Programming

Transcript

  1. 静的解析からはじめる
    負債コード解消
    株式会社ラクス
    藤岡大樹

    View full-size slide

  2. 自己紹介
    株式会社ラクス
    開発本部 楽楽販売・労務開発課
    藤岡大樹
    入社3年目
    業務内容:機能開発
    サポート
    上流設計 など

    View full-size slide


  3. クラウド型販売管理システム

    導入社数1,000社超
     10年以上続くサービス
     Webデータベース

    ブラウザを使ってCRUDができる

    販売管理業務など用途に特化したDBを作れる

    構成
     PHP + PostgreSQL

    View full-size slide

  4. 課題
    長年続くサービスになると…
    未使用の関数が放置
     コメントと処理が違う
     そもそもコメントがない
    1つの関数の役割が多い
     …
    可読性の低下
    開発効率が下がる

    View full-size slide

  5. デグレコワイ
    呼び出し元を辿っていくと
    「これ使ってないやん」
    関係ないと思ってたのに
    共通ロジックなってるやん。。。
    今の開発規約と合ってなくて
    読みにくい

    View full-size slide

  6. デグレコワイ
    呼び出し元を辿っていくと
    「これ使ってないやん」
    関係ないと思ってたのに
    共通ロジックなってるやん。。。
    今の開発規約と合ってなくて
    読みにくい
    見送ろっか…

    View full-size slide

  7. 静的解析ではじめる負債コード解消
    inspection
    機能開発で触ったファイル内の検知箇所を併せて修正する

    View full-size slide

  8. Inspectionってなに?
    多くのテンプレートが用意されていてエラーレベルを選ぶだけ
    テンプレートを元に自分用にカスタマイズも可能!

    View full-size slide

  9. Inspection活用事例①
    未使用の変数や関数を検知
    Settings > inspections
    ◦ PHP
    ◦ Unused
    ◦ Unused local variable
    ◦ Unused private method

    View full-size slide

  10. Inspection活用事例②
    コメントがない関数を検知
    Settings > inspections
    ◦ PHP
    ◦ PHPDocs
    ◦ Missing PHPDoc comment

    View full-size slide

  11. Inspection活用事例③
    引数の数が一致していない
    関数呼び出しを検知
    Settings > inspections
    ◦ PHP
    ◦ Type compatibility
    ◦ Parameter type

    View full-size slide

  12. Inspection活用事例④
    自分でカスタマイズして検知
    例)条件式の曖昧な比較(==)を検知したい!
    Settings > inspections
    ◦ General
    ◦ Structual Search Inspection
    デモ

    View full-size slide

  13. Inspection活用事例④
    自分でカスタマイズして検知(デモ内容)
    例)条件式の曖昧な比較(==)を検知したい!
    1. Optionsに追加する

    View full-size slide

  14. Inspection活用事例④
    自分でカスタマイズして検知(デモ内容)
    例)条件式の曖昧な比較(==)を検知したい!
    2. 検知したい内容を入力する
    ◦ テンプレートをもとにカスタマイズもできる

    View full-size slide

  15. Inspection活用事例④
    自分でカスタマイズして検知(デモ内容)
    例)条件式の曖昧な比較(==)を検知したい!
    3. テンプレート名を決める
    4. 完了

    View full-size slide

  16. 結果
    検知箇所を一気に修正するのではなく、触ったファイルと一緒に
    修正することで効率を向上できた
    余計なファイルを改めで査読する必要もなく、そこまで開発作業の影響に
    ならない
    少しずつ着実に負債コードを減らせている
    すべてが解消するには時間がかかるが、デグレを起こさないよう慎重に

    View full-size slide

  17. まとめ
    自分たちで強いルールを作ることで負債コードが放置されるのを
    防ぐよう工夫した
    PhpStormだけでも多様な静的解析ができる
    カスタマイズが可能なのでチーム特有のチェックができる
    みなさんも自分たちのルールを
    もう一度見直してみてはいかかでしょうか?

    View full-size slide

  18. ご清聴
    ありがとうございました

    View full-size slide