Contenu connexe
Similaire à Custom lintcheckをつくろう
Similaire à Custom lintcheckをつくろう (20)
Plus de Makoto Yamazaki (13)
Custom lintcheckをつくろう
- 12. 実装: Detectorクラス
package org.zakky.lint;
public class PrngFixDetector extends ResourceXmlDetector implements
Detector.ClassScanner {
...
public static final Issue ISSUE = Issue.create("PrngFix", //$NON-NLS-1$
"擬似乱数生成器の初期化バグへの対処を行っているかをチェックします",
"擬似乱数生成器の初期化バグへの対処を行っているかをチェックします",
"擬似乱数生成器の初期化バグへの対処を行っているかをチェックします",
Category.USABILITY, 4, Severity.WARNING,
new Implementation(PrngFixDetector.class,
EnumSet.<Scope> of(Scope.MANIFEST, Scope.CLASS_FILE)));
}
•
Detectorクラスの中で ISSUE定数を定義する
•
ISSUEでID、説明、チェック実装クラス、Scope等を定義する
•
Scopeに合わせて適切なScannerインタフェースを実装する
- 13. 実装: Scope
• MANIFEST
• JAVA_FILE
排他
JavaScanner
• ALL_JAVA_FILES
• RESOURCE_FILE
排他
• ALL_RESOURCE_FILE
• CLASS_FILE
排他
• ALL_CLASS_FILES
XmlScanner
ClassScanner
• PROGUARD_FILE
• OTHER
OtherFileScanner
- 18. 実装例
AOSPの既存のコードを見るのが一番
$ repo init -u https://android.googlesource.com/platform/manifest -g tools
$ repo sync
tools/base/lint/libs/lint-hecks に既存のDetectorがある
tools/base/lint/libs/lint-api の下にはAPIのソースがある
repo コマンドについては http://source.android.com/source/
downloading.html を見てね