Linters 또는 Codemods와 같은 다른 도구가 제공하는 돌연변이의 파도를 적용합니다.
많은 라이터가 있으며 대부분은 --fix 고정 규칙 고장을 자동으로 포함하는 방법을 포함합니다. 이것은 훌륭하지만 몇 가지 이유로하기가 어렵습니다.
automutate Linters가 표준화 된 JSON 형식을 통해 규칙을 수정하는 방법 만 제안 할 것을 제안합니다.
돌연변이를 적용하기 위해 표준화 된 소스 공수 프로젝트가 있으면 몇 가지 이점이 있습니다.
automutate 사용하여 프로젝트간에 전환하는 램프 업 시간은 공통 코드로 줄어 듭니다.일반적으로 규칙 실패를 감지하는 것은 고정 과는 별개의 관심사입니다. Linters는 종종 구축 된 프로세스 중에 읽기 전용 파일 세트를 신속하게 실행해야하며, Fixer는 일반적으로 천천히 실행하고 사용자 요청시 파일을 수정해야합니다.
주요 automutate 알고리즘은 autoMutator.ts 에서 시작되며 대부분 mutationsApplier.ts 에 적용됩니다.
while mutationsWave = getMutationsWave ( ) :
for ( file , fileMutations ) of groupMutationsByFile ( mutationsWave ) :
for mutation of getNonOverlappingMutationsInReverse ( fileMutations ) :
applyMutation ( file , mutation )getMutationsWave 제안 된 돌연변이의 물결을 받기 위해 Linter와 같은 외부 도구를 호출합니다.groupMutationsByFile 제안 된 돌연변이를 파일별로 구성합니다.getNonOverlappingMutationsInReverse 서로 충돌하는 중첩 돌연변이를 제거하고 나머지 돌연변이가 이전 돌연변이의 특성 위치를 방해하지 않도록 나머지를 역순으로 분류합니다.applyMutation 나머지 돌연변이를 사용하여 디스크에서 파일을 수정합니다. 단일 돌연변이에는 고유 type 식별자, 적용 할 수있는 다양한 문자 위치 및 선택적으로 다른 논리가 포함됩니다.
다음과 같은 기본 텍스트 조작은 상자 밖으로 제공됩니다.
multiple - 다중 돌연변이 용 용기. 이는 이들이 한 번에 적용되거나 전혀 적용되지 않아야한다는 것을 automutate , 이는 내장 돌연변이 중첩 검출과 일관성을 보장합니다.text-delete 다양한 문자를 삭제합니다.text-insert 지점에 문자열을 삽입합니다.text-replace 범위 내에서 문자열 또는 정규 표현식과 일치하는 문자를 대체합니다.text-swap 새로운 문자열로 다양한 문자를 교환합니다.예를 들어:
{
"ugly-file.txt" : [
{
"range" : {
"begin" : 7 ,
"end" : 14
},
"type" : " text-delete "
},
{
"insertion" : " inconceivable! " ,
"range" : {
"begin" : 21
},
"type" : " text-insert "
}
]
} 라이터 별 유틸리티는 자신의 돌연변이를 정의 할 수 있습니다. 예를 들어, 언어의 린터는 text-swap 돌연변이를 포함하는 multiple 돌연변이를 사용하기보다는 node-rename 돌연변이를 정의 할 수 있습니다.
커스텀 뮤지터에 대한 자세한 내용은 Mutator를 참조하십시오.
온 보딩을 참조하십시오.
automutate nodejs> = 14가 필요합니다.