トップ «前の日記(2012-03-11) 最新 次の日記(2012-03-13)» 編集

ヨタの日々

2001|08|09|10|11|12|
2002|01|02|03|04|05|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|12|
2024|01|02|03|04|

2012-03-12 :-(

_ 午前

0520 起床

0830 出勤

0900 検討

_ 午後

1300 検討

_

1700 残業アワー

1945 退勤

2130 飯。鶏とタマネギの炒めもの

2200 ジャンプ読む

_ [python] ,

from M import * とか死滅すればいいのに

名前空間というものがあるのに接頭字を付けないといけないなんて

_ [Pylint][Python][lint]Pylint を入れてみた

pylint

Python 版 lint みたいなもの。コードを静的解析する。

環境

  • Microsoft Windows7 64bit
  • cygwin
  • python 2.6.7

pylint

各々ページ右側にある download からダウンロードして展開してインストール。または easy_install する。

% wget http://download.logilab.org/pub/astng/logilab-astng-0.23.1.tar.gz
% tar xzf logilab-astng-0.23.1.tar.gz
% cd logilab-astng-0.23.1
% python setup.py install
% wget http://download.logilab.org/pub/common/logilab-common-0.57.1.tar.gz
% tar xzf logilab-common-0.57.1.tar.gz
% cd logilab-common-0.57.1
% python setup.py install
% wget http://ftp.logilab.org/pub/pylint/pylint-0.25.1.tar.gz
% tar xzf pylint-0.25.1.tar.gz
% cd pylint-0.25.1
% python setup.py install

適当なプログラムに対して実行。

% pylint command.py
No config file found, using default configuration
************* Module command
C:  1: Missing docstring
W:  8:Command: Class has no __init__ method
C:  8:Command: Missing docstring
C:  9:Command.execute: Missing docstring
R:  9:Command.execute: Method could be a function
R:  8:Command: Too few public methods (1/2)
W: 12:Command1: Class has no __init__ method
C: 12:Command1: Missing docstring
R: 12:Command1: Too few public methods (1/2)
W: 16:Command2: Class has no __init__ method
C: 16:Command2: Missing docstring
R: 16:Command2: Too few public methods (1/2)
W: 20:Command3: Class has no __init__ method
C: 20:Command3: Missing docstring
R: 20:Command3: Too few public methods (1/2)
C: 25:Noel: Missing docstring
C: 29:Noel.add: Missing docstring
C: 32:Noel.run: Missing docstring
C: 33:Noel.run: Invalid name "c" (should match [a-z_][a-z0-9_]{2,30}$)
C: 37:main: Missing docstring


Report
======
28 statements analysed.

Statistics by type
------------------

+---------+-------+-----------+-----------+------------+---------+
|type     |number |old number |difference |%documented |%badname |
+=========+=======+===========+===========+============+=========+
|module   |1      |1          |=          |0.00        |0.00     |
+---------+-------+-----------+-----------+------------+---------+
|class    |5      |5          |=          |0.00        |0.00     |
+---------+-------+-----------+-----------+------------+---------+
|method   |7      |7          |=          |57.14       |0.00     |
+---------+-------+-----------+-----------+------------+---------+
|function |1      |1          |=          |0.00        |0.00     |
+---------+-------+-----------+-----------+------------+---------+



Messages by category
--------------------

+-----------+-------+---------+-----------+
|type       |number |previous |difference |
+===========+=======+=========+===========+
|convention |11     |11       |=          |
+-----------+-------+---------+-----------+
|refactor   |5      |5        |=          |
+-----------+-------+---------+-----------+
|warning    |4      |4        |=          |
+-----------+-------+---------+-----------+
|error      |0      |0        |=          |
+-----------+-------+---------+-----------+



Messages
--------

+-----------+------------+
|message id |occurrences |
+===========+============+
|C0111      |10          |
+-----------+------------+
|W0232      |4           |
+-----------+------------+
|R0903      |4           |
+-----------+------------+
|R0201      |1           |
+-----------+------------+
|C0103      |1           |
+-----------+------------+



Global evaluation
-----------------
Your code has been rated at 2.86/10 (previous run: 2.86/10)

Duplication
-----------

+-------------------------+------+---------+-----------+
|                         |now   |previous |difference |
+=========================+======+=========+===========+
|nb duplicated lines      |0     |0        |=          |
+-------------------------+------+---------+-----------+
|percent duplicated lines |0.000 |0.000    |=          |
+-------------------------+------+---------+-----------+



Raw metrics
-----------

+----------+-------+------+---------+-----------+
|type      |number |%     |previous |difference |
+==========+=======+======+=========+===========+
|code      |27     |72.97 |27       |=          |
+----------+-------+------+---------+-----------+
|docstring |0      |0.00  |0        |=          |
+----------+-------+------+---------+-----------+
|comment   |5      |13.51 |5        |=          |
+----------+-------+------+---------+-----------+
|empty     |5      |13.51 |5        |=          |
+----------+-------+------+---------+-----------+

checker

ルールを定義するものをチェッカーと呼ぶらしい。

% export PYTHONPATH=/home/public/python/pylint-0.25.1/examples
% pylint --load-plugins=custom command.py

カスタマイズ

--rcfile でいろいろ設定する。以下のように作成すると楽ちん。

% pylint --generate-rcfile > pylintrc

_ [pylint][jenkins]pylint のレポートを jenkins から眺める

jenkins ことはじめ[ 20120222#p04 ] ということで使ってみる。

環境

  • Microsoft Windows7 64bit
  • cygwin
  • python 2.6.7

参考

pylint

インストール済みとする。

rcfile をいじってカスタマイズする。

disable=E1101,C0111,C0322,C0324,C0111....

output-format=parseable

reports=yes

files-output=no

How to use Jenkins for python development によると output-format=parseable と reports=yes を指定するようなので書いておく。

files-output=yes にすると対象とする .py ごとにレポートされて鬱陶しいので no にしておく。全部 1 つのファイルへリダイレクトしてレポートさせるらしい。

disable は pylint features (Logilab.org) を見ながらテキトーに設定する。

jenkins の Violations プラグイン

jenkins はインストール済みとする。

Violations プラグインを使う Violations - Jenkins - Jenkins Wiki

jenkins - Jenkinsの管理 - プラグインの管理 - 利用可能 - Jenkins Violations plugin をインストール。

インストールするとプロジェクトの「ビルド後の処理」に「Report Violations」が現れるのでチェックする。

「pylint」の「XML filename pattern」に「pylint.log」等と入力しておく。XML と言っているけど XML じゃなくても良いらしい。

「Source encoding」を「UTF-8」にしとく。

プロジェクトの高度なオプション - カスタムワークスペースの使用 - ディレクトリを設定しておく。今回はリポジトリからチェックアウトなどはしない。カスタムワークスペースでいろいろ作業するのでカスタムワークスペースを設定しておく。カスタムワークスペースを設定しておくと Violations はソースファイルを表示するときにカスタムワークスペースの下にある .py を見に行くぽい。

試しに cygwin コンソールで以下のように実行する。

% pylint --rcfile=./pylintrc * >> pylint.log

jenkins プロジェクトを「実行」してみる。

「Violations」にアクセスするとレポートが見れる。