mvvmlint
mvvmlint : l'état passe par le view-model
go-widgets/mvvmlint ne se déclenche que dans
les paquets qui importent la boîte à outils.
- Un champ d’état d’un widget affecté à la main.
entry.Text = "x", où le type statique deentryest un widget de la boîte à outils etTextun champ d’état, est signalé.&entry.Text— ce que prennent les binders — n’est pas une affectation et n’est jamais signalé ; pas plus qu’un littéral composite (toolkit.Entry{Text: "x"}), ni la composition d’un callback tel queOnChange. - Des widgets et pas de view-model. Un paquet qui importe la boîte à outils mais pas
go-widgets/mvvmreçoit un diagnostic.-requirevm=falsedésactive ce contrôle pour une bibliothèque de widgets qui, légitimement, n’a pas de view-model.
Les champs d’état sont ceux des widgets de la boîte à outils (Text, Items, Rows,
Root, Selected, Value, Checked, …) ; -statefields= remplace la liste.
Un fichier nommé *_binding.go, ou contenant //mvvmlint:allow, est exempté de
la première règle.
go install github.com/go-widgets/mvvmlint/cmd/mvvmlint@latest
go vet -vettool="$(go env GOPATH)/bin/mvvmlint" ./...# .github/workflows/mvvm.yml
name: mvvm
on:
pull_request:
push:
branches: [main]
jobs:
mvvm:
uses: go-widgets/mvvmlint/.github/workflows/mvvmlint.yml@mainapp-template est livré avec cette tâche.
Créée le par tannevaled
Modifiée le par tannevaled