infer 가져오기 안드로이드 항목에 대한 코드 분석

3072 단어 Androidinfer
페이스북은 정적 코드 분석 도구infer를 공개했다.
참조공식 페이지로 안드로이드 항목을 분석해 보았습니다.

가져오기


github의 릴리즈 페이지에서 사용하는 OS에 따라 파일을 다운로드합니다.
Mac OS X용infer-osx-v0.1.0.tar.xz을 사용합니다.이 글이 공개되었을 때의 최신 판본은version 0.1.0이다.

다운로드한 infer-osx-v0.1.0.tar.xz를 확장합니다.
펼치면 infer-osx-v0.1.0/ 목록이 나온다.
$ ~ ls
$ ~ infer-osx-v0.1.0.tar.xz
$ ~
$ ~ tar xf infer-osx-v0.1.0.tar.xz
$ ~
$ ~ ls
$ ~ infer-osx-v0.1.0.tar.xz        infer-osx-v0.1.0
infer-osx-v0.1.0/infer/infer/bin 경로를 통과합니다.각자의 환경에 맞추세요.
export INFER=~/infer-osx-v0.1.0/infer/infer/bin
export PATH=$INFER:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools:$PATH
이렇게 가져오면 완성됩니다.

코드 분석


참조Hello world Android, 새로 제작된 안드로이드 프로젝트에 대한 코드 해석.
$ ~ cd SampleInfer/
$ SampleInfer
$ SampleInfer infer -- ./gradlew clean build
Starting analysis (Infer version v0.1.0)
Analysis done

5 files analyzed


No issues found
$ SampleInfer
코드 해석에 성공하여 문제가 없음을 확인하였습니다.

문제점


현재 Butterknife 등 모조 생성 클래스를 추가한 프로그램 라이브러리를 사용하는 프로젝트에 대해 코드 분석을 하면 욕을 먹는다.
새로 제작된 안드로이드 프로젝트에서 버터크니프를 사용해 오징어 같은 코드를 만들어 보자.
MainActivity.java
package com.sample.infer.sampleinfer;

import butterknife.InjectView;

public class MainActivity extends AppCompatActivity {

    @InjectView(R.id.textview)
    protected TextView textView;
이 상태에서 코드 해석을 하면
$ ~ cd SampleInfer/
$ SampleInfer infer -- ./gradlew clean build
Fatal error: exception Invalid_argument("Error : com.sample.infer.sampleinfer.MainActivity$$ViewInjector is not a valid name for a class")
$ SampleInfer
생성된 MainActivity$$ViewInjector류의 명칭과 관련이 있다.
github에 issue가 있으니 대응을 기다리세요.
Support java classnames with $$ #3
그게 다야.

좋은 웹페이지 즐겨찾기