파이썬 파일에 있지만 결국 내 자신의 초점을 맞추고의이 솔루션을 및 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
는, 선도 번호없이 목록을 타고 오탐 (false positive)을 청소 :
같은 것을 생산
이제와 typo;correction
의 포맷을 얻기 위해 두 개의 파일을 붙여 넣기 paste -d";" typos.txt correct.txt > known_typos.csv
이제 우리는 반복적으로 우리의 코드베이스에서 그 교체하려면 :
,536을
#!/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