のpythonファイルになく、最終的には私自身の焦点のこのソリューションをとjs。偽陽性から手作業でソートする必要がありましたが、それはわずかな時間しかかかりませんでしたが、約150のタイプミスがありました。
保存し、このように、実行可能ファイルなどextractcomments
:それは再帰的に一つ以上のaspell
の辞書を使用してコードベースにして、それをすべてを収集
for f in **/*.py ; do ~/extractcomments $f >> ~/comments.txt ; done
ラン:
#!/usr/bin/env python3
import argparse
import io
import tokenize
if __name__ == "__main__":
parser = argparse.ArgumentParser(add_help=False)
parser.add_argument('filename')
args = parser.parse_args()
with io.open(args.filename, "r", encoding="utf-8") as sourcefile:
for t in tokenize.generate_tokens(sourcefile.readline):
if t.type == tokenize.COMMENT:
print(t.string.lstrip("#").strip())
は、さらなる処理のためのすべてのコメントを収集タイプミスと判断され、その出現回数がカウントされます。
cat ~/comments.txt | aspell --lang=en list|aspell --lang=de list | sort | uniq -c | sort -n > ~/typos.txt
:各タイプミスのために所望の置換を取得するために、その上に第二のファイル
correct.txt
と実行のaspellにコピーし、
10 availabe
8 assignement
7 hardwird
は、大手番号なしリストを取る偽陽性を一掃:
のようなものを作成します
:
は今paste -d";" typos.txt correct.txt > known_typos.csv
でtypo;correction
のフォーマットを取得するには2つのファイルを貼り付ける今、私たちは、再帰的に私たちのコードベースのものを交換したいです
#!/bin/bash
root_dir=$(git rev-parse --show-toplevel)
while IFS=";" read -r typo fix ; do
git grep -l -z -w "${typo}" -- "*.py" "*.html" | xargs -r --null sed -i "s/\b${typo}\b/${fix}/g"
done < $root_dir/known_typos.csv
私のbashスキルが悪いので、改善の余地があります。
アップデート:私はこれを実行して、メソッド名でより多くのタイプミスを見つけることができる:
grep -r def --include \*.py . | cut -d ":" -f 2- |tr "_" " " | aspell --lang=en list | sort -u
アップデート2:例えばあるタイプミスを修正するために管理例えば、単語の境界を持たないアンダースコアの名前や文字列の中にi_am_a_typpo3
:
#!/bin/bash
root_dir=$(git rev-parse --show-toplevel)
while IFS=";" read -r typo fix ; do
echo ${typo}
find $root_dir \(-name '*.py' -or -name '*.html' \) -print0 | xargs -0 perl -pi -e "s/(?<![a-zA-Z])${typo}(?![a-zA-Z])/${fix}/g"
done < $root_dir/known_typos.csv