2012-05-08 2 views
1

Eclipse (특히 Eclipse CDT)에서 변수의 이름 지정 규칙을 변경하는 방법이 있습니까? 예를 들어 need_foo와 같은 이름으로 변수를 검색하고 바꾸고 NeedFoo로 바꿀 수 있습니까?Eclipse에서 이름 지정 체계 변경하기

밑줄을 쉽게 추가하고 제거하는 것은 쉽지만 분명히 대소 문자를 변경하는 방법은 없습니다. Perl의 정규 표현식은 \u\l 대문자와 소문자의 수식어가 있지만 Eclipse는 분명히 그렇지 않습니다.

답변

1

CDT에서 여러 개의 부적합한 함수 이름을 자동으로 이름 바꾸기하는 자동화 된 방법이 없습니다. 그러나 이러한 종류의 것들을 지적하도록 설계된 코드 분석 규칙이 있습니다. Eclipse Regex described in their online help을 사용합니다. 이것들은 Problems View에 "Information"레벨 마커를줍니다.

그들이 작동하는 방식은 각 함수 이름에 대해 정규식을 일치시키는 것이며 일치하는 항목을 반환하지 않으면 오류/경고/정보를 발생시키는 것입니다. "Window-> Preferences-> C/C++ -> Code Analysis"를 통해 액세스 할 수 있습니다. 스크롤 목록 (Eclipse Indigo에서)의 절반 정도입니다.

직접 두 번째 단락에 대답하기 위해, 이클립스는 가지고있는 가장 가까운이며, 펄의 \u\l의 해당이없는 (? ismd-ismd)을, 당신이 은 경우에 따라 일치를 켤 수있다.

불과 몇 함수 정의가

당신은 표준 리팩토링 이름 변경 도구를 사용할 수 있습니다 이름을 : 코드 분석 도구는 5 50000 오류를 반환하는 경우에 따라

. 함수 이름을 마우스 오른쪽 버튼으로 클릭하면 "Refactor-> Rename"이 해당 함수에 대한 모든 참조를 새 함수 이름 (다른 범위를 존중 함)으로 바꿉니다.

많은 많은 오류

이 같은 좋은하지 ...입니다. 메서드가 내장되어 있지 않으므로 외부에서 수행해야합니다. 내가 취할 수있는 첫 번째 방법은 거기에 기존 플러그인이 있는지 확인하는 것입니다.

코드 분석 도구를 사용하여 부적합한 함수 이름을 식별 한 다음 해당 출력을 사용자 지정 Perl 스크립트의 입력으로 사용하면됩니다. 당신은 몇 단계에 그것을 할 수 :

void FooBar(void) {} 
int main(int argc, char *argv[]) 
{ 
    FooBar(); 
    return 0; 
} 

1)은 코드 분석을 실행하고 복사하여 텍스트 파일에 경고를 붙여 넣습니다

Bad function name "FooBar" (pattern /^(?-i:([a-z]+_[A-Z])|[a-z])(?i:[a-z]*)\z/) main.c /TestMultiThread line 47 Code Analysis Problem 

2) 함수의 정의, fooBar() 변경 - ->FooBar(), 위의 오류를 perl 스크립트의 입력으로 사용합니다 (잘못된 함수 이름, 파일 이름 및 행 번호가 있음을 유의하십시오).

3) 컴파일러 undefined reference to fooBar() 모든 참조 이름을 컴파일하고 출력을 사용

undefined reference to `FooBar' main.c /TestMultiThread line 50 C/C++ Problem 

이 방법은 인해 정의 참조의 일부 목록을 제공 컴파일러 일부 짧은 오심을했을 컴파일은 'early'로 끝나며,이 경우에는 여러 번 실행해야합니다.

Refactor Scripts (Refactor -> Apply Script)에서보아야 할 또 하나의 것은 내가 본 것에서부터 당신이 원하는대로 할 것이라고 생각하지 않습니다.

전체적으로 Eclipse CDT의 리팩토링 도구가 Java에 대한 것만 큼 강력하지 않은 것으로 나타났습니다. 그래도 메모장에있는 것보다 훨씬 낫습니다. (CDT를 강타하지 않고 멋진 개발 환경입니다.)

+0

아, 당신은 함수가 아니라 변수입니다. 내 잘못이야. 더 자세히 읽어야합니다. 코드 분석 기능을 간략하게 살펴보면 변수에는 해당하지 않습니다. 그래서, 나는 외부의 해결책을 들여다 보았다. 린트를위한 몇 가지 플러그인이 있습니다. 린트를 들여다 보았습니까? – chrisb

+0

나는 아직 린트를 보지 못했지만 이것은 시작하기에 좋은 곳입니다. 감사. –