2012年1月2日月曜日
python:単純バグ発見ツール pychecker(2)
前回でpycheckerの準備ができたので使ってみます。
まず正常な状態のpythonソースをチェックしてみます。
引数の合計を計算するプログラム(keisan.py)です。
# -*- encoding=sjis -*-
import sys
def tasizan(L):
if not isinstance(L, list): return False
return sum(L)
def main():
m = sys.argv[1:]
print "tasizan : ", tasizan(m)
if __name__ == "__main__": main()
正常時のチェック結果
Processing module keisan (C:\Python26\user\keisan.py)...
Warnings...
None
上記を少し変えて警告(warning)が出るようにしてみます。
・2行目で使わないモジュールosをインポートした場合、
「使われていません」とチェックされます。
import sys,os
↓
[system path]\user\keisan.py:2: Imported module (os) not used
・8行目で値設定前のmを参照した場合、
「設定前に使われている変数」とチェックされます。
print m
↓
[system path]\user\keisan.py:8: Variable (m) used before being set
さらに文法ミスをしてみます。
・5行目の行頭でタブキーを余分に打って、インデントがずれている場合、
「予期しないインデント」とチェックされます。
Caught exception importing module keisan:
File "C:\Python26\Lib\site-packages\pychecker\pcmodules.py", line 540, in setupMainCode()
module = imp.load_module(self.moduleName, handle, filename, smt)
IndentationError: unexpected indent (keisan.py, line 5)
Warnings...
[system path]\user/keisan.py:1: NOT PROCESSED UNABLE TO IMPORT
・5行目で命令語を入力ミスした場合、「文法上無効」とチェックされます。
Processing module keisan (C:\Python26\user\keisan.py)...
SyntaxError: invalid syntax (C:\Python26\user\keisan.py, line 5)
rreturn sum(L)
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿