ⓒ 2022 atama plus Inc. Pythonの著名なLinter • flake8 ◦ F811: redefinition of unused name from line N • 同名の再定義 • black ◦ Strings: Black prefers double quotes (" and """) over single quotes (' and '’’). • ⽂字列リテラルのスタイル 10 1. Linterの基本
ⓒ 2022 atama plus Inc. 別名が付けられたprint関数の利⽤を検知できるのか? 42 4. ルール作りの実践テクニック - 名前解決 print2にprint関数を代⼊ print関数は直接呼び出されない 関数名がprint2に変わっている Callノードの関数名を⾒るだけでは不⼗分
ⓒ 2022 atama plus Inc. スタックを利⽤したスコープの管理 51 4. ルール作りの実践テクニック - スコープの管理 Node1 If Node2 Node3 Node4 If If スタック ① スコープの開始時 ② スコープの終了時 ① スタックにPush ② スタックからPop
ⓒ 2022 atama plus Inc. スタックのトップが 直属のスコープ スタックの状態とスコープ 52 4. ルール作りの実践テクニック - スコープの管理 If スタック スタック If スタック If スコープを作るノード⾃体をスタックに保持すると、スコープの属性を参照したい時に便利 スタックのサイズは ネストの数 ノードが存在する ifブロックのスコープ内 スタックが空 ifブロックのスコープ外 ノードが複数存在する ネストしたifブロックの中
ⓒ 2022 atama plus Inc. テクニックは他にもいろいろ 54 4. ルール作りの実践テクニック • Pylint本体で提供されているルールのコードを読んでみよう ◦ https://github.com/PyCQA/pylint/tree/main/pylint/checkers ◦ 同じようなルールは参考にできる