パルカワ2

最近はFlutterをやっています

DartLintで独自のRuleを作って使いたい

Dartでlintといえば dartanalyzer だけど、custom lint rule に対応していない。 (dartanalyzerは中でdart-lang/linterを利用している) github.com

なので、独自のlint ruleを動かす君を作る。 独自のコマンドゆえにIDE上のDart AnalyticsではLintエラーが表示されないので注意が必要。ただCIで動いてれば漏れてても気付けるのでそれでいいなって思う。

import 'package:linter/src/analyzer.dart';
import 'package:linter/src/cli.dart' as cli;

import 'rule/avoid_utc_datetime.dart';

Future main(List<String> args) async {
  Analyzer.facade.register(AvoidUtcDateTime());
  await cli.run(args);
}

以下のように動かす。今回はDateTime.utc()とかを使っているとエラーが起きるようなRuleを書いた。

pub run tool/linter/main.dart . --rules=avoid_utc_datetime --packages=.packages

Rule自体は、ここにあるRuleを見ながら書くとよい。

linter/lib/src/rules at master · dart-lang/linter · GitHub