[Flutter] 정적 분석 파일 간 종속성 Analyzer Plugin 소개
원하는 Fluter/Dart의 정적 해석 플러그인을 만들었으니 소개해 드리겠습니다.
전하고 싶은 거.
AnalyzerPlugin
나는 코딩 규약은 팀에서 규칙을 제정하여 누가 봐도 이해할 수 있는 코드를 쓰는 것을 목적으로 도입한 것이라고 생각한다.
다른 한편, 코드 규약의 준수를 확보하기 위해 코드 심사의 비용이 증가할 것이다.
비용이 늘어나 코딩 규약을 지키지 않으면 목적을 달성할 수 없고 코드 심사만 고통스러워지는 것은 슬픈 일이다.
이러한 상황을 개선하기 위해 이번에는 import을 제한하는 최소한의 정적 분석을 했다.
구체적인 설치는 우리의 창고에 매우 참고 가치가 있습니다!
생성된 라인 정보
import의 정적 분석을 했습니다.
import_lint(pub.dev) 공개.
할 수 있는 일
analyzer:
plugins:
- import_lint
import_lint:
rules:
use_case_rule:
target_file_path: "/**/use_case/*_use_case.dart"
not_allow_imports: ["/**/use_case/*_use_case.dart"]
exclude_imports: ["/**/use_case/base_use_case.dart"]
analysis_options.yaml
에서 상술한 기술을 통해 UseCase가 UseCase를 참고하는 것을 방지하고 UseCase 상속원의 기본 UseseCase를 배제할 수 있다.예를 들어 이런 파일이 존재하는 경우
- lib/use_case/one_use_case.dart
import 'base_use_case.dart'
class OneUseCase extends BaseUseCase{}
- lib/use_case/two_use_case.dart
import 'base_use_case.dart'
import 'one_use_case.dart'
class OneUseCase extends BaseUseCase{}
- lib/use_case/base_use_case.dart
abstract class BaseUseCase {}
IDE 경고 및 CLI 실행 시 문제점을 해결할 수 있습니다.Analyzing...
warning • lib/use_case/two_use_case.dart:1:8 • import 'one_use_case.dart'; • use_case_rule
1 issues found.
사용법
flutter pub add --dev import_lint
analyzer:
plugins:
- import_lint
import_lint:
rules:
use_case_rule:
target_file_path: "/**/use_case/*_use_case.dart"
not_allow_imports: ["/**/use_case/*_use_case.dart"]
exclude_imports: ["/**/use_case/base_use_case.dart"]
AnalyzerPlugin 기능을 통해 IDE에 경고가 표시됩니다.flutter pub run import_lint
GiithubAction에서 실행 및 의견 게시
이런 yml,analyze,importlint, format을 실행하고 문제가 있으면 PR에 메시지를 남길 수 있습니다.
.github/workflows/analyze.yml
on: [pull_request]
name: Analyze
jobs:
build:
name: Analyze
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- uses: at-wat/setup-gh-pr-comment@v0
- uses: subosito/flutter-action@v1
with:
channel: "stable"
- name: Install dependencies
run: flutter pub get
- name: analyze and format
run: |
is_error=false
set +e
analyze=$(flutter analyze)
set -e
if [ ! "`echo $analyze | grep 'No issues found'`" ]; then
gh-pr-comment "analyze" "${analyze}"
is_error=true
fi
import_lint=$(flutter pub run import_lint)
if [ ! "`echo $import_lint | grep 'No issues found'`" ]; then
gh-pr-comment "analyze import lint" "${import_lint}"
is_error=true
fi
format=$(flutter format lib)
if [ ! "`echo $format | grep '0 changed'`" ]; then
gh-pr-comment "format" "${format}"
is_error=true
fi
if "${is_error}"; then
exit 1
fi
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
최후
시간이 길어졌지만 읽어주셔서 감사합니다!
Issue, PR, 기분 스타(⭐)대단히 기쁘다😻
Analyzer Plugin이 원하는 Line 직접 만들기
Reference
이 문제에 관하여([Flutter] 정적 분석 파일 간 종속성 Analyzer Plugin 소개), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/kawa1214/articles/5bde335b766852텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)