NEWS
Erzeugung einer Übersicht genutzter States
-
Ich habe bei meinen Skripten die Übersicht verloren, wo ich welche States setze oder lese, oder wo ich sie abonniere.
Daher hab ich mir ein kleines Skript geschrieben, das die JavaScript/TypeScript Dateien analysiert und eine Liste der genutzten States erzeugt.
Das ganze ist mit einer Beschreibung hier zu finden: https://github.com/BenjaminHae/iobroker-semgrep-rulesDas Schöne ist, dass es nicht stupide nach
getState
/setState
/on
sucht, sondern wirklich semantisch geparst wird. D.h. wenn die ID in einer Variable gespeichert wird und diese Variable später insetState
genutzt wird, sollte das auch erkannt werden.
Es gibt ein paar Sonderfälle, bei denen es nicht gut klappt, z.B. bei Strings in Backticks z.B.ID=`id.foo.${id}`;
, oder Arrays.Das Skript erkennt zum Beispiele beim nachfolgenden Skript, dass die ID
id.foo.bar´ in
setState` genutzt wurde:const ID_OF_DEVICE ="id.foo.bar"; setState(ID_OF_DEVICE, true)
Ich freue mich über die Entdeckung weiterer Edge-Cases, oder neuer Ideen, was man noch identifizieren könnte.
(Wenn ich mal ganz viel Zeit habe, versuche ich einen Graphen zu erzeugen, welcher State bei welchen anderen States Änderungen auslösen, aber das ist etwas Arbeit)
-
interessantes project - blockly wird nicht berücksichtigt ?
und mein output file ist ziemlich leer, bis auf die namen der scripts
mach ich was falsch ?
auschnitt des files - nur alle namen - keine sonstigen einträge (bei 2922 zeilen im file)
... ## MYSTUFF/VIS/ALERT-WIDGET/AlarmHinzu1.js ## MYSTUFF/VIS/ALERT-WIDGET/PostItHinzu2.js ## MYSTUFF/VIS/ALERT-WIDGET/WidgerAlertTest1.js ## MYSTUFF/VIS/ALERT-WIDGET/xdeleteAlert1.js ## MYSTUFF/VIS/ALEXA15/RefreshMovementMotionShow15All.js ## MYSTUFF/Vorlagen-Verschiedene.js ## MYSTUFF/WAAGE/WaageAnsagen.js ## MYSTUFF/WINDOWS_NODE/new-windows-control.js ## MYSTUFF/WINDOWS_NODE/WindowsNodeWebserver.js ## MYSTUFF/XIAOMI/DASHBUTTONPlayboy2.js ## MYSTUFF/XIAOMI/XiaomiAlarmBatterie1.js ## MYSTUFF/XIAOMI/xiaomiAntennaSchalten.js ## MYSTUFF/XIAOMI/XiaomiSchalter1.js ....
-
@liv-in-sky zu Blockly kann ich nichts sagen, ich weiß leider nicht, wie das funktioniert.
Dass es ganz leer ist, wundert mich. Ist
semgrep
installiert? Sonst einmal mitpip install semgrep
installieren. (Die neueste Version von generateDoc prüft jetzt auch, ob semgrep installiert ist)Ansonsten könntest du mir bite ein Script zeigen, bei dem etwas herauskommen sollte?
-
@benjamin-häublein sagte in Erzeugung einer Übersicht genutzter States:
pip install semgrep
-
semgrep ist installiert und die neuste version deines scriptes
-
inhalt outputfile:
# Overview of objects used in /opt/iobroker/scripte-backup/common/ ## 00000000000000000000000000tesssst.js ## 00000000000000HeizungNedis.js ## 0000000000000array.js
das script dazu:
oder:
-
-
@liv-in-sky Bei mir kommt dabei folgendes Ergebnis raus:
## test1.js ### Set State - 0_userdata.0.CONTROL-OWN.AAATEST.TestLogic ### Get State - 0_userdata.0.CONTROL-OWN.AAATEST.TestLogic ## test2.js ### Get State - 0_userdata.0.CONTROL-OWN.MOTION.Standort ### Schedule - */30 * * * * *
Was ist denn die Ausgabe des Skripts auf der Konsole?
Und was ist die Ausgabe vonsemgrep --config=rules.yml /pfad/zu/einem/Skript
, wenn du das im Verzeichnis desgenerateDoc
Projekts ausführst?P.S:
SendTo
kommt auf meine Liste der Dinge die ich noch unterstützen will