GExperts의 새 버전에서 grep 유틸리티는 더 많은 '전문가'표현을 지원합니다.GExperts grep을 사용하여 블록을 제외한 모든 비어있는 try ...를 어떻게 찾을 수 있습니까?
델파이 소스에서 정규식을 사용하여 블록을 제외하고 빈 try를 찾는 방법을 아직 찾지 못했지만 GExperts grep 도구로 어떻게 할 수 있습니까?
GExperts의 새 버전에서 grep 유틸리티는 더 많은 '전문가'표현을 지원합니다.GExperts grep을 사용하여 블록을 제외한 모든 비어있는 try ...를 어떻게 찾을 수 있습니까?
델파이 소스에서 정규식을 사용하여 블록을 제외하고 빈 try를 찾는 방법을 아직 찾지 못했지만 GExperts grep 도구로 어떻게 할 수 있습니까?
GExperts Regex 기능을 사용하면 줄 바꿈 문자를 넘어 검색 할 수 있습니다.
TPerlRegEx과 같은 구성 요소를 사용하는 데 신경 쓰지 않는다면 다음 코드를 통해 자신의 검색을 시작해야합니다.
var
emptyExceptBlock: TPerlRegEx;
Results: TStringList;
emptyExceptBlock := TPerlRegEx.Create(nil);
emptyExceptBlock.RegEx := except\s+((//.*|/\*.*\*/|\(\*.*\*\))\s+)*end;
emptyExceptBlock.Options := [preExtended];
emptyExceptBlock.Subject := LoadFromFile('YourFile.pas');
Results := TStringList.Create;
if emptyExceptBlock.Match then begin
repeat
Results.Add(emptyExceptBlock.MatchedExpression);
until not emptyExceptBlock.MatchAgain;
end;
가 자동으로 빈 시작/종료 블록으로 일하러 삽입 삽입 자동 도도 (GExperts의 일부가되는, 내가 CodeCentral에서 그것을 가지고 생각)라는 도구가있다. 아마 그게 네가 원하는거야?
분석 도구는 소스를 수정해서는 안되며 '위반 사항'만보고하고 선택적으로 패널티를 제안해야합니다. – mjn
정규식은 "// 모든 예외 무시"와 같은 삽입 주석을 허용하도록 변경되어야합니다 - 기술적으로 이것은 여전히 빈 예외 처리자입니다. – mghie
@mghie : 정규식을 //,/* * 및 (* *)와 일치하도록 조정했습니다. 나는 멀리가는 사람들을위한 운동장으로 중첩 된 의견을 남겼습니다. –
좋은 해결책! 그렇습니다. 마지막 GExpert 출시에는 여전히 제한이 있습니다. GExpert가 TPerlRegEx를 사용하여 간단한 정적 코드 분석 작업을 수행 할 수 있다면 매우 흥미로운 기능입니다. (일부 위양성이 있더라도) – mjn