[iPhone] Snow Leopard Benchmarking 결과 입니다. 성능이 크게 향상된 부분은 없죠. 하지만 links for 2009-09-03
Sep 04

Snow Leopard로 업그레이드하면 Xcode도 3.2로 된다.

Xcode 3.2의 주요 신규 기능 중의 하나가 “Build and Analyze” 메뉴를 통해서 코드의 정적 분석 (Static Analysis)를 할 수 있다.

기존 Xcode에서는 Instruments로 동적 분석 (Dynamic Analysis)를 할 수 있었다.

정적분석은 앱을 수행하지 앟은 상태에서 코드 분석을 통해서 문제점을 리포팅 해주기 때문에 많은 이점이 있다. 특히 어플리케이션의 모든 시나리오를 수행하는 것은 불가능에 가까운 일이기 때문에 오히려 동적 분석으로 잡지 못하는 문제점도 정적 분석을 통해서 찾아낼 수 있다.

아무튼, 몇 일전 정의의 소 님이 Snow Leopard로 업글하셔서 원격으로 붙어서 현재 진행 중인 코드에 대해서 정적 분석을 해보니 4군데에서 문제점이 발견되었고 다음과 같이 두 가지 type이 보고되었다.

1. iPhone SDK 3.0에서 deprecated 된 method 사용을 지적

아래와 같이 UITableViewCell의 initWithFrame:reuseIdentifier을 사용하고 있었는데 deprecated 된 것이라고 지적했다.

(-_-; 현재는, 사실 사용해도 3.0에서 죽거나 문제가 발생하진 않는다)

Initializing a UITableViewCell Object

2. 사용되지 않고 있는 변수 지적

아래와 같이 int k = 1;만 있는 경우 컴파일러가 워닝을 줬다. k=2;하고 더이상 k가 사용되지 않는 경우, 컴파일러는 이를 감지 하지 못하지만, 정적 분석 도구는 k=2;를 해도 k가 의미 있게 사용되지 않았다고 경고를 해준다.

int k = 1;    // <-- 이 코드만 있으면 compiler가 warning을 줌
k = 2; // <-- 이 코드만 있을 경우 정적 분석을 통해 k가 더이상 사용되지 않는다고 지적

여기에 오늘 보니 iPhone Developer:tips에서도 사용 후기를 써서 좀 더 포스팅해본다.

3. Uninitialized  변수의 사용에 대한 지적

아래와 같은 코드는 x가 0인 경우 uninitialized 된 x가 반환되는 문제를 가지고 있다.

- (BOOL)getSomeValue:(int)x {
  BOOL positiveFlag;

  if (x < 0) {        positiveFlag = NO;      } else if (x > 0)  {
    positiveFlag = YES;
  }  

  return positiveFlag;

}

이것을 정적분석 해보면 아래와 같이 멋지게 문제점을 지적해준다. 아름답다.

:) 빌드 시 항상 정적 분석을 수행하려면 아래와 같이 Project 설정의 Debug 설정에서 “Run Static Analyzer”를 체크하면 된다.

오늘 나도 눈범이를 결재할 것인데, SVN 관련 기능이 좀 제대로 업데이트 되었으면 하는데 모르겠다.

Ref 1: Static Analysis in Xcode

Ref 1: Static Code Analysis (Clang) and Xcode 3.2

Related posts:

  1. [iPhone] Snow Leopard의 Xcode 3.2에서 이전의 Monaco 폰트 사용하기 스노우 레오파드에 있는 Xcode 3.2를 설치하고 프로젝트를 열어 보면 무엇인가...
  2. [iPhone] Xcode 3.2 (Snow Leopard) 에서 SDK 3.0 이전 버전으로 셋팅하는 방법 Snow Leopard에서는 Xcode가 3.2이다.  문제는 업데이트 후 기존 프로젝트가 iPhone...
  3. [iPhone] 스노우 레오파드 !! Snow Leopard (Mac OS X 10.6) 간단 설치 후기 (Xcode, Spaces, Expose) 오늘 받은 Snow Leopard를 맥북에 설치했다 (정확히는 하면서 틈틈이 포스트를...
  4. [XCode] XCode Code Completion XCode의 code Completion은 아주 똑똑하다.근데 도대체 auto completion된 code의 placeholder...
  5. [iPhone] Tutorial – 하나의 Xcode Project로 여러 버전의 Product 만들기 – Tutorial – Same Xcode Project Create Multiple Products for iPhone 아래 두 Tutorial을 읽기 전까지는 Lite (Free) 버전과 Full (Paid)...

Related posts brought to you by Yet Another Related Posts Plugin.

  • 정리하려고 했더만.. 부지런히 정리했네... ^^;
  • ㅎㅎ 저도 오늘 눈범이 주문했어요. 어여 정적분석 기능 좀 쓰고 싶네요. 이 넘에 이미지만 대량으로 다루면 메모리 문제가 머리를 아프게 해서.. :) 아무튼 저도 담주부터는 ㄱ ㄱ 싱~
  • 눈범 구매 축하~ Xcode 3.2 무척 부럽슴 Xcode에서 화살표로 흐름을 그려주는것도 해주는거임? 우왕굳~
  • Igni님도 어여 ㄱ ㄱ ㅎㅎㅎ
  • cnook
    간단한 코드라 아름다워 보이는군요. 요즘은 심플이 대세군.
  • 복잡한 코드가 좀 더 아름다운 선을 만들어내지 않을까?
  • 그럼 여기다 복잡하고 큰 코드로 할까? ㅋㅋ
blog comments powered by Disqus
preload preload preload