s-24

もうすっかり暑くなりましたが、1日中半袖でいることができない男、s-24です。(改名しました!)
ずっと見てきた海外ドラマ、CSI-NYがシーズン9で終了してしまい残念すぎます。
マイアミも終わってしまったので、とってもさみしいです。。
そのかわり、24が復活するらしいですが、今更ジャックについていけるか心配で寝れません!

さて、今回は PHPMD – PHP Mess Detector についてです。PHPMD は PHP のコードの中から、コードレベルでバグになりそうな箇所を検出してくれるツールです。早めにバグを発見するために導入してみました。

インストールは簡単です。CentOS であれば root 権限で以下を実行していけば OK!

# yum -y install php-pear
 
# pear channel-discover pear.pdepend.org
# pear install pdepend/PHP_Depend-beta
 
# pear channel-discover pear.phpmd.org
# pear install --alldeps phpmd/PHP_PMD-alpha

これでインストールできます。

実行コマンドはこのように。

# phpmd [ファイル名] [レポート形式] [ルール]

ファイル名は解析したいファイル名、レポートは出力したいファイル名で、text と xml で出力できるみたいです。ルールは5つあるようですが、今回は unusedcode をセットしてみました。これは使われていないコードを検出してくれます。クラス内で定義はされてるけど参照されてない変数、パラメータなどを抽出してくれます。typo とかこれで発見できるかなあと思って導入しています。ちなみにその他のルールはこんな感じです。

  • controversial: キャメルケースなどを検出する
  • codesize: コードサイズ関連部分を検出する
  • design: 設計の問題を検出する
  • naming: 名前が短い、長い箇所を検出する

実際に実行してみるとこんな感じになります。

$ phpmd hogehoge.php text unusedcode
 
hogehoge.php:1225 Avoid unused local variables such as '$session'.
hogehoge.php:1674 Avoid unused parameters such as '$html'.
                  :
                  : (こんな感じでずらずらと…)

うん。かなり出てきました!コードをじっくり確認しないと発見できないような部分も発見!

これを開発側に投げて、確認して修正して貰うようにしています。これでもう少し早くバグが見つかると思います!

初回は全部1つずつ確認しましたが、問題ない部分はルールのカスタマイズをしたりすれば検出されなくなるらしいです。自分はルールのカスタマイズをするのが面倒だったので、確認した次の日からは新規に検出された部分だけ確認するようにしています。また、このチェックは日次で自動化して実行しないと手間かかっちゃいますので、自分は Jenkins にプロジェクトを作成して実行させるようにしています。

この ①PHPMD の Jenkins へ導入、②新規に検出された部分だけ確認するような運用方法については次回の投稿で紹介します!

参考サイト: CentOS6.3で静的解析ツールPHPMDを動かしてみる(PHP用)

Tags: , ,

morikawa

Tricorn Labs では初投稿になります。インフラグループの Morikawa です。今回はインフラグループで最近進めています、Zabbix Sender を用いたバッチ処理結果の監視について紹介します。

Zabbix はサーバ、ネットワーク、アプリケーションを監視するための統合監視ソフトウェアであり、GNU General Public License (GPL) v2 で配布されていて無償で利用可能です。ざっくりと仕組みを説明しますと、各サーバ上で動作する Zabbix Agent がサーバの様々なステータスを取得し、Zabbix Server が各 Agent からの情報を取得してデータベースに蓄積した上で、予め障害として設定された条件にマッチするものが検知された場合に管理者に対して障害報告を行います。また Web UI も備えており、そちらから諸々の設定を行えるだけでなく、ダッシュボードで状況を一覧することも可能です。

さて、インフラグループではトライコーンが提供するサービスの異常もしくはサービスに影響を与えうるサーバ・ネットワーク障害を速やかに検知するための様々な対策をとっていますが、その一環として Zabbix による監視も行なっています。一般的な監視項目であるサーバのディスク使用率やプロセス稼働に加え、最近は日次のバッチ処理の成否についても Zabbix で監視を行い始めています。バッチ処理の成否の取得には Zabbix Sender を用いていますが、なぜ Zabbix Sender を用いているのか、また実際にどのように監視しているのかについてご紹介します。

続きを見る >>>

Tags: ,