Connect with us

Entwicklung & Code

KI beschleunigt Code, verzögert aber Tests


Generative KI hat die Produktivität beim Programmieren deutlich erhöht. Eine Studie von GitHub Research zeigt, dass Entwickler Programmieraufgaben in kontrollierten Experimenten mit KI-Assistenz rund 55 Prozent schneller erledigen als ohne Unterstützung. Doch der Geschwindigkeitsgewinn beim Schreiben von Code mittels KI-Systemen bedeutet nicht automatisch, dass Softwareprojekte insgesamt schneller vorankommen. Eine Untersuchung des Forschungsinstituts METR (Model Evaluation and Threat Research) zeigt, dass erfahrene Entwickler bei Arbeiten in vertrauten Code-Umgebungen mit KI-Werkzeugen im Schnitt 19 Prozent länger benötigen – vor allem wegen zusätzlicher Prüf- und Korrekturschritte. Ein Grund: Sie müssen sich bei Fehlern erst in den von der KI erzeugten Code einarbeiten.

Weiterlesen nach der Anzeige

Da Testen, Debugging und Verifikation schon in der herkömmlichen Softwareentwicklung rund die Hälfte des Zeitaufwands ausmachen, schlagen Verzögerungen bei diesen Arbeiten besonders stark auf die Projektlaufzeit durch. Mit KI-Werkzeugen beim Programmieren verschiebt sich der Engpass: Das Erzeugen von Code wird einfacher und schneller – der Nachweis, dass er korrekt funktioniert und freigegeben werden kann, bleibt aufwendig. Das wiegt umso schwerer, weil die Kosten für Fehler mit jeder späteren Projektphase steigen. Eine vielzitierte Analyse des IBM Systems Sciences Institute beziffert den Unterschied: Während der Implementierung ist die Behebung eines Fehlers sechsmal teurer als in der Designphase. Beim Testen steigt der Faktor auf 15, in der Produktion auf bis zu 100. Gerade in komplexen Unternehmenssystemen wird das zum Problem. Moderne Anwendungen bestehen aus vielen Services, Programmierschnittstellen (APIs) und Datenquellen. Eine Änderung an einer Stelle kann unerwartete Nebenwirkungen an vielen anderen auslösen. Je schneller KI-Werkzeuge neuen Code produzieren, desto häufiger entstehen solche Wechselwirkungen – und damit zusätzliche Fehlerquellen.

Um diesen Engpass abzumildern, kommen zunehmend KI-Systeme auf den Markt, die neue oder geänderte Programme schneller testen sollen. Das führt jedoch zu einem grundlegenden Wandel in der Testmethodik. Klassisches Softwaretesten folgt einem deterministischen Modell: gleicher Input, gleiches Programm, identischer Output. Genau darauf beruhen Testläufe, bei denen Funktionen mit definierten Parametern aufgerufen werden und exakt die erwarteten Ergebnisse liefern müssen. Doch bei KI-Systemen gilt dieses Prinzip nur noch eingeschränkt. Große Sprachmodelle und andere generative Verfahren arbeiten auf Basis statistischer Wahrscheinlichkeiten und liefern Ergebnisse innerhalb einer Bandbreite möglicher Antworten. Die Qualität eines Systems lässt sich deshalb nicht mehr allein mit Ja-Nein-Tests überprüfen. Entscheidend ist, ob sich das Verhalten innerhalb akzeptabler Grenzen bewegt. Damit verschiebt sich auch der Fokus der Qualitätssicherung (QA). Statt vollständiger Testabdeckung rückt ein risikobasierter Ansatz in den Vordergrund: Kritische Funktionen und Schnittstellen prüfen Teams intensiver, weniger relevante Teile mit geringerer Tiefe. Ziel ist nicht mathematische Vollständigkeit, sondern eine belastbare Einschätzung des Restrisikos.

Zu den Anbietern KI-gestützter Werkzeuge gehören Keysight Eggplant, SmartBear, OpenText und Tricentis. Letzterer hat kürzlich eine „Agentic Quality Engineering Platform“ vorgestellt – eine Plattform, auf der autonom agierende KI-Agenten Qualitätssicherungsaufgaben übernehmen. Sie unterstützt unter anderem die SAP-GUI und Web-Anwendungen. Hierzu nutzt die Plattform generative KI, um Testfälle zu erzeugen, bestehende Tests zu priorisieren und Ergebnisse großer Testläufe zusammenzufassen. Technisch geht es dabei weniger um „KI testet Software“ als um die Unterstützung typischer QA-Arbeitsschritte: Änderungen im Code analysieren, relevante Tests auswählen, Fehlermeldungen gruppieren oder umfangreiche Logdateien verdichten. Der Ansatz zielt auf einen der zeitaufwendigsten Schritte im Testprozess: die Auswertung großer Mengen von Testergebnissen. In Continuous-Integration-Umgebungen laufen oft mehrere tausend Tests pro Commit, deren Resultate Entwickler anschließend interpretieren müssen. KI-Werkzeuge können helfen, Muster schneller zu erkennen und Fehlerursachen besser einzugrenzen. Der Nutzen verschiebt sich damit vom Generieren einzelner Tests hin zur Organisation und Auswertung ganzer Testlandschaften.

Trotz dieser Entwicklungen bleibt der Einsatz KI-basierter Tests begrenzt. Viele Aspekte der Softwarequalität lassen sich nicht aus Testläufen ableiten. Dazu gehören Sicherheitsprobleme, strukturelle Code-Schwächen oder die Vermeidung technischer Schulden – also aufgeschobener Wartungs- und Modernisierungsarbeiten, die langfristig den Entwicklungsaufwand erhöhen. Solche Fragen betreffen die Architektur einer Anwendung und nicht nur ihr Laufzeitverhalten. Statische Codeanalyse (Static Analysis), die den Quellcode ohne Ausführung auf Fehler und Schwachstellen untersucht, Security Audits und klassische Code Reviews bleiben daher notwendig. Generative KI kann hier allenfalls Hinweise liefern, ersetzt aber keine systematische Analyse. Besonders bei sicherheitskritischen Anwendungen ist automatisches KI-Testing kein ausreichender Qualitätsnachweis.

Weiterlesen nach der Anzeige

Diese Grenzen führen zu einem Grundprinzip moderner Entwicklungsprozesse: Der Mensch bleibt Teil der Entscheidungskette. Automatisierte Tests können Hinweise liefern und große Datenmengen auswerten, doch die Freigabe eines Releases bleibt eine Risikoabwägung. In vielen Unternehmen entscheiden deshalb weiterhin Entwickler- oder QA-Teams darüber, ob eine neue Softwareversion in Produktion gehen darf. KI kann diesen Prozess beschleunigen, indem sie Informationen verdichtet und Routineaufgaben übernimmt. Die Verantwortung für die Freigabe bleibt jedoch beim Menschen. Wie riskant eine unzureichende Kontrolle ist, zeigten jüngst durch KI-Tools verursachte Ausfälle bei Amazon, nach denen der Konzern strengere Prüfmechanismen einführte.

Generative KI beschleunigt das Schreiben von Code erheblich, erhöht aber zugleich den Aufwand für dessen Verifikation. Mehr generierter Code bedeutet mehr Varianten, mehr Integrationspunkte und damit mehr potenzielle Fehlerrisiken. KI kann beim Erzeugen von Testfällen und bei der Analyse großer Testläufe helfen, löst aber nicht alle Qualitätsprobleme. Fragen der Sicherheit, Architektur und technischer Schulden bleiben Aufgaben von Entwicklern und Review-Prozessen. Entscheidend bleibt: Ob eine Softwareversion in Produktion gehen darf, ist eine menschliche Entscheidung.

Lesen Sie auch


(fo)



Source link

Entwicklung & Code

WTF: Microsoft erzwingt „Co-Authored-by Copilot“ in Commits


Ein Pull Request für VS Code sorgt auf Github derzeit für Unmut: Denn er macht Copilot standardmäßig zum Co-Autor in jeder Commit Message, sofern das KI-Tool bei den jeweiligen Änderungen an einem Projekt mithilfe der Programmiersoftware VS Code zum Einsatz kam. In der Developer-Community herrschte neben Verwirrung über das Thema auch einiger Frust über diesen Schritt. Wer sich die Commit Message nicht mit Copilot teilen will, kann diese Einstellung aber deaktivieren.

Weiterlesen nach der Anzeige

Laut der Übersicht zum Pull Request wird die Einstellung git.addAICoAuthor der Git-Erweiterung für VS Code standardmäßig auf all gesetzt. Die Auswirkung: Wenn bei einer Änderung am Code ein Copilot-Feature genutzt wird, etwa Inline-Vervollständigungen oder Agenteneinsatz, wird dieses bei der Veröffentlichung auf Git in der Commit Message kenntlich gemacht. Hier ist dann „Co-authored-by: Copilot copilot@github.com“ zu lesen.

In der Community sorgte das zunächst für einige Verwirrung, mancher Nutzer versuchte verzweifelt, die Copilot-Erwähnung händisch wieder aus der Commit Message zu löschen – nur um diese dann nach Veröffentlichung darin wiederzufinden, wie jemand in diesem Git-Thread berichtet. Unter dem Pull Request selbst häufen sich derweil Beschwerden aus der Nutzerschaft. Viele ärgern sich über mangelndne Kommunikation der Änderung und berichten ebenfalls vom zunächst unerklärlichen Verhalten der Commit Messages. Aber es gibt offenbar auch größere Probleme: Mehrere Nutzer beklagen, dass Copilot auch dann erwähnt wird, wenn das Tool überhaupt nicht zum Einsatz kam.

Über die Einstellungen von VS Code lässt sich das neue Verhalten deaktivieren. Über das Zahnrad unten links gelangt man ins entsprechende Menü. Hier muss unter Settings>Extensions>Git unter „Add AI Co Author“ die Option „off“ gesetzt werden. Alternativ kann auch "git.addAICoAuthor": "off" in der settings.json eingetragen werden.

Bei einem kurzen Test in unserer Redaktion mit VS Code v1.118 unter macOS war in den VS-Code-Einstellungen standardmäßig „chatAndAgent“ gesetzt. Laut Microsoft soll sich die automatische Copilot-Erwähnung damit auf Fälle beschränken, in denen Hilfestellungen des Chatbots oder des KI-Agenten genutzt wurden. Wer sichergehen will, sollte aber auf jeden Fall die Einstellung „off“ wählen.

Weiterlesen nach der Anzeige

Lesen Sie auch


(nen)



Source link

Weiterlesen

Entwicklung & Code

Assertion Libraries für Java: AssertJ versus Google Truth


close notice

This article is also available in
English.

It was translated with technical assistance and editorially reviewed before publication.

Unit Tests sind ein fundamentales Element im Software Engineering. Sie garantieren die funktionale Korrektheit der Software und helfen dabei, potenzielle Fehler frühzeitig zu identifizieren. Assertions (Behauptungen) spielen dabei eine zentrale Rolle, indem sie sicherstellen, dass die erwarteten Bedingungen während der Testausführung erfüllt sind.

Weiterlesen nach der Anzeige


Marco Dahms

Marco Dahms

Marco Dahms ist seit 18 Jahren als Softwarearchitekt tätig. Seine Tätigkeitsschwerpunkte liegen in den Bereichen Clean Code, Continuous Integration, Cloud Computing, verteilte Architekturen und Kubernetes.

Unit Tests enthalten Assertions, die das verwendete Testframework zum Testzeitpunkt auf Einhaltung prüft. Ein einfaches Beispiel ist die Prüfung, ob der Rückgabewert einer bestimmten Methode true lautet. Falls eine Assertion nicht zutrifft, bricht der Test die Ausführung ab und gilt als fehlgeschlagen. Wenn alle Assertions eingehalten werden, führt das Testframework den Test bis zum Ende aus und dieser gilt als erfolgreich.

Ein Unit Test kann mehrere Assertions enthalten, wobei sie sich typischerweise am Ende der Testmethode befinden. In seltenen Fällen ist es möglich, dass Assertions in der Mitte des Testfalls geprüft werden, um die Einhaltung von Zwischenbedingungen für den Test sicherzustellen.

Für die Formulierung von Assertions in der jeweiligen Programmiersprache kommt in der Regel die API des Testframeworks zum Einsatz. So bietet etwa JUnit für Java einfache APIs an, um Assertions auszudrücken.

Sie reichen in der Regel für einfache Tests mit wenigen Assertions aus und haben den Vorteil, dass sie direkt im Testframework verfügbar sind. Daher muss man keine zusätzlichen Dependencies in das Softwareprojekt einbinden.


Aufmacher bcc Testing

Aufmacher bcc Testing

(Bild: laolina / 123rf.com)

Die betterCode() Testing 2026 zeigt am 8. Juni 2026, wie das Zusammenspiel von Mensch, Tools und Prozessen den Erfolg moderner Software sichert. Im Fokus stehen Testing mit und von KI, Testautomatisierung und Praxisberichte, die zeigen, was wirklich getestet werden sollte.

Ist das Projekt jedoch umfangreicher und sind die Tests aufwendiger, stoßen diese APIs an ihre Grenzen. Zunächst sind sie nicht auf Lesbarkeit und Verständlichkeit optimiert. Für kompliziertere Assertions müssen Entwicklerinnen und Entwickler viel Boilerplate-Code schreiben. Darüber hinaus sind die Fehlermeldungen bei nicht eingehaltenen Assertions eher kurz und abstrakt und lassen relevante Details zur Fehlersuche vermissen, beispielsweise über fehlende Elemente in einer Collection. Weiterhin ist die Assertion API von JUnit nicht erweiterbar, lässt sich also nicht um Assertions für die eigene Domänenlogik ergänzen.

Weiterlesen nach der Anzeige

Das folgende Listing zeigt ein Beispiel, das die Einschränkungen der JUnit Assertion API demonstriert.


  @Test
  public void testListComparison() {
    List expectedList = Arrays.asList("Apple", "Banana", "Cherry");
    List actualList = Arrays.asList("Apple", "Grape", "Cherry");

    assertEquals(expectedList, actualList, "Die Listen sollten gleich sein");
  }


Zunächst werden zwei Listen, die Strings enthalten, erzeugt. Der Aufruf der Methode assertEquals verlangt, dass die beiden Listen gleich sein sollen. Da die Listen unterschiedliche Elemente enthalten, schlägt der Test mit folgender Meldung fehl:

Die Listen sollten gleich sein ==> expected: <[Apple, Banana, Cherry]> but was: <[Apple, Grape, Cherry]>

Die Meldung verdeutlicht nicht, welche Elemente in den Listen unterschiedlich sind. In diesem stark vereinfachten Beispiel mag das für Developer leicht erkennbar sein, in der Praxis ergeben sich hingegen oft komplexere Fälle. Es wäre hilfreich, wenn die Meldung die konkrete Information enthält, welche Elemente unterschiedlich sind. In diesem Fall: die Strings Banana und Grape.

Eine weitere Assertion könnte darin bestehen, dass ein konkretes Element exakt einmal in einer Liste vorkommt. Mit der API von JUnit lässt sich diese Anforderung nicht unmittelbar umsetzen. Entwickler müssen den dafür notwendigen Code selbst schreiben. Assertion Libraries wie AssertJ oder Google Truth besitzen solche Einschränkungen nicht. Die APIs der beiden Libraries sind auf Lesbarkeit und Verständlichkeit optimiert. Ihre Assertions lesen sich in der Regel wie natürliche Sprache. Insbesondere lassen sich mehrere Assertions in einem Ausdruck verketten, was Boilerplate-Code verringert.

Fehlermeldungen bei verletzten Assertions sind bedeutend detaillierter, und erleichtern die Fehlersuche. Daneben gibt es umfangreiche spezialisierte APIs für die Standardtypen in Java, etwa Strings, Listen oder Exceptions.

AssertJ ist eine quelloffene Java-Bibliothek mit einer umfangreichen Menge an Assertions und hilfreichen Fehlermeldungen. Sie hat vor allem das Ziel, die Lesbarkeit von Testcode zu verbessern. AssertJ Core ist der Kern von AssertJ, daneben gibt es weitere AssertJ-Module für Bibliotheken wie Guava.

Die Library lässt sich als org.assertj:assertj-core über Maven und Gradle in ein Java-Projekt einbinden. Ein Projekt mit Spring Boot verwaltet die AssertJ-Version automatisch. Falls es notwendig ist, lässt sich die AssertJ-Version mit der Property assertj.version überschreiben.

AssertJ bietet eine große Auswahl an verschiedenen Assertion APIs für eine Vielzahl an Java-Standardtypen, darunter gängige Typen wie String, List oder Predicate und primitive Typen wie int oder char. Diese APIs sind auf den jeweiligen Typen spezialisiert und bieten Methoden an, die dabei helfen, das Schreiben von Boilerplate-Code zu vermeiden. Es folgt eine Übersicht:

String-APIs:

  • isNotBlank: String ist kein Leerstring
  • contains: String enthält einen Substring
  • hasSize: String hat eine bestimmte Länge
  • isUpperCase: String umfasst nur Großbuchstaben

Listen-/Iterable-APIs:

  • contains: Liste enthält Elemente in beliebiger Reihenfolge
  • containsOnly: Liste enthält nur bestimmte Elemente in beliebiger Reihenfolge
  • containsExactly: Liste enthält nur bestimmte Elemente in gegebener Reihenfolge

Die Vielfalt an Assertions deckt somit viele Anwendungsfälle ab.

Entwicklerinnen und Entwickler können Assertions mit zusätzlicher Semantik versehen, indem sie eine textuelle Beschreibung beim Aufruf mitgeben. Diese ist wiederum Teil der Fehlermeldung, sofern die Assertions nicht eingehalten werden. Über eine Konfiguration lässt sich steuern, ob diese Beschreibungen direkt auf der Standardkonsole ausgegeben oder durch eine eigene Logik in einem sogenannten Description Consumer konsumiert werden sollen, um sie beispielsweise in einer Datei zu speichern.

Der Einstiegspunkt für Developer sind die Assertions-Klasse und die darin enthaltenen Methoden assertThat(…). Die Namensgebung assertThat(…) zeigt, dass Wert auf die Intuitivität und Lesbarkeit der Assertions gelegt wird. Die Assertions lesen sich dadurch wie natürliche Sprache. Zunächst wird assertThat als statischer Import deklariert:

import static org.assertj.core.api.Assertions.assertThat;

Als Nächstes kann man in einer Testmethode assertThat(foo). schreiben, wobei foo sich auf den Wert oder das Objekt bezieht, auf dem die Assertion beruht. Je nachdem, was foo für einen Typ hat, bieten IDEs bei richtig konfigurierter Codevervollständigung die passenden Assertion-APIs an. Übergibt man beispielsweise ein Objekt vom Typ LocalDate als Argument, erhält man Empfehlungen wie hasMonth oder isAfter. Daraus ergibt sich etwa folgende Zusammenstellung der Assertion:

assertThat(date).isNotNull().hasMonth(Month.of(1)).isAfter(beginDate);

Die Assertion lässt sich nun in natürlicher Sprache so lesen: „Stelle sicher, dass date nicht null ist, den Monat 1 (Januar) hat und nach einem anderen Datum beginDate fällt“. Die Verkettung der Methodenaufrufe vermeidet Boilerplate-Code und erhöht die Lesbarkeit. Sobald eine der Assertions fehlschlägt, werden die nachfolgenden nicht mehr überprüft.

Wenn Entwickler alle Assertions prüfen lassen möchten, bevor ein Test abbricht, verwenden sie SoftAssertions. Dafür erzeugen sie ein Objekt vom Typ SoftAssertions, rufen darauf die gewünschten Assertion-Methoden auf und lösen am Ende mit assertAll die finale Überprüfung aus. AssertJ stellt anschließend eine Übersicht aller fehlgeschlagenen Assertions zusammen. Dieser Ansatz eignet sich besonders für komplexe Testfälle, da er einen direkten Überblick über alle Fehler liefert und verhindert, dass der Test nach jeder Fehlerbehebung erneut gestartet werden muss.

Darüber hinaus lässt sich AssertJ um Assertions für die eigene Anwendungsdomäne erweitern. Das Schreiben von Custom Assertions erlaubt das Entwickeln von Assertion-Methoden, die auf das eigene Datenmodell zugeschnitten sind. Im Falle einer Terminverwaltungssoftware könnte man sich etwa folgende Assertions überlegen:

  • assertThat(appointment).isDue()
  • assertThat(appointment).isCancelled()

Appointment wäre eine Klasse aus dem eigenen Domänenmodell und isDue sowie isCancelled wären selbst entwickelte Assertion-Methoden. Dieses Vorgehen erhöht die Lesbarkeit sowie die Verständlichkeit von Unit Tests, indem sich die eigene Anwendungsdomäne aus dem Produktivcode auch in den Tests widerspiegelt. Um eine Custom Assertion umzusetzen, müssen Entwicklerinnen und Entwickler eine neue Klasse von der abstrakten Klasse AbstractAssert ableiten, einen Konstruktor und eine statische assertThat-Methode und weiterhin alle erforderlichen Assertion-Methoden (wie isDue, isCancelled usw.) implementieren.

Eine weitere Assertion Library für Java ist Google Truth, entwickelt und gewartet von Googles Guava-Team. Sie kommt in der Mehrheit aller Tests in der Google-Codebasis zum Einsatz. Der inhaltliche Fokus liegt auf lesbaren Assertions und Fehlermeldungen. Truth unterstützt viele Java-Standardtypen und Typen aus der Guava-Library. Die Einbindung von Truth in Maven- oder Gradle-Projekte erfolgt über das Artefakt com.google.truth:truth.

Um Truth in einem Test einzusetzen, braucht es zunächst die Methode assertThat, bereitgestellt über einen statischen Import:

import static com.google.common.truth.Truth.assertThat;

Ähnlich wie bei AssertJ lässt sich ein Objekt als Argument an assertThat übergeben, woraufhin sich des Typen des Arguments entsprechende Assertion-APIs ergeben. Ein einfaches Beispiel aus der Truth-Dokumentation ist der Check, ob ein String mit einem bestimmten Teilstring beginnt:


String string = "awesome";
assertThat(string).startsWith("awe");


Um den Fehlermeldungen bei verletzten Assertions mehr Semantik zu verleihen, können Entwicklerinnen und Entwickler eine passende Beschreibung mitgeben. Dazu importieren sie die Methode assertWithMessage und rufen sie auf:


import static com.google.common.truth.Truth.assertWithMessage;

assertWithMessage("Without me, it's just aweso")
    .that(string)
    .contains("me");


Auch Truth erlaubt das Erweitern um eigene Custom Assertions. Im Truth-Datenmodell schreibt man dafür ein eigenes Custom Subject. Die eigene Subject-Klasse muss von der Klasse Subject abgeleitet sein. Zusätzlich braucht es eine statische Hilfsmethode und einen Konstruktor. Außerdem mussen spezifische Assertion-Methoden ergänzt werden. Die Truth-Dokumentation verweist auf das Referenzbeispiel des EmployeeSubject.

Bei umfangreichen Tests mit vielen Assertions, bei denen eine vollständige Überprüfung aller Assertions hilfreich ist, kommt in Truth die Klasse Expect zum Einsatz, initialisiert über eine JUnit-Rule-Annotation:

@Rule public final Expect expect = Expect.create();

Auf dem Objekt Expect kann man dann ähnlich wie bei assertThat ein Argument übergeben und passende Assertions formulieren. Leider zeigt sich, dass dieser Ansatz nur bis JUnit 4 unterstützt wird. Ab JUnit 5 ist die Rule-Annotation nicht mehr möglich und Truth bietet bisher (Stand April 2026) keine alternative Implementierung dafür an. Da im September 2025 JUnit 6 erschienen ist, ist die Verwendung von JUnit 4 nicht zu empfehlen. Folglich lässt sich Expect nicht mehr sinnvoll einsetzen.



Source link

Weiterlesen

Entwicklung & Code

Neu in .NET 10.0 [21]: Ausgabe der Befehle und Parameter in JSON bei SDK-Tools


close notice

This article is also available in
English.

It was translated with technical assistance and editorially reviewed before publication.

Mit dem neuen Parameter --cli-schema erhalten Entwicklerinnen und Entwickler seit .NET 10.0 bei den .NET-SDK-Kommandozeilenbefehlen eine Ausgabe der Befehlsoptionen und Parameter in JavaScriot Object Notation (JSON).

Weiterlesen nach der Anzeige


Der Dotnet-Doktor – Holger Schwichtenberg

Der Dotnet-Doktor – Holger Schwichtenberg

Dr. Holger Schwichtenberg ist technischer Leiter des Expertennetzwerks www.IT-Visions.de, das mit 53 renommierten Experten zahlreiche mittlere und große Unternehmen durch Beratungen und Schulungen sowie bei der Softwareentwicklung unterstützt. Durch seine Auftritte auf zahlreichen nationalen und internationalen Fachkonferenzen sowie mehr als 90 Fachbücher und mehr als 1500 Fachartikel gehört Holger Schwichtenberg zu den bekanntesten Experten für .NET und Webtechniken in Deutschland.

Zuvor waren diese Informationen bereits in reiner Textform über die Hilfefunktion abrufbar, allerdings durch mehrere Einzelbefehle, wie beispielsweise

dotnet package -h
dotnet package add -h
dotnet package list -h


Screenshot

Screenshot

Der Screenshot zeigt einen Ausschnitt aus der Ausgabe des JSON-Schemas eines .NET-SDK-CLI-Befehls (Abb. 1).


Screenshot

Screenshot

Der Screenshot zeigt einen Ausschnitt der Hilfeinformationen eines .NET-SDK-CLI-Befehls (Abb. 2).


(rme)



Source link

Weiterlesen

Beliebt