Olle Kamellen. #Not Oder: Was ist eigentlich mit StyleCop für VB.NET?

Folgenden Eintrag habe ich in einem alten internen Blog wiederentdeckt. Den habe ich Ende Dezember 2008 geschrieben,... vor knapp 7 Jahren.

Im Mai 2008 veröffentlichte der MSFT-Angestellte Jason Allor StyleCop. Seit dem fragen sich viele, warum es nur C#, aber kein VB.NET unterstützt. Um der Frage nach etwaigen politischen Hintergründen vorzubeugen, hat Jason selbst das Wort an die Community gerichtet:

To understand why there is no version for VB, it's necessary to understand the history of the tool. StyleCop was written as a Microsoft internal tool, to be used by our own internal developers who are coding in C#. StyleCop is not owned by the C# team, but was developed independently. We released StyleCop externally to allow the community to get the same benefit from this tool that we were getting internally at Microsoft.

Since the release of StyleCop there have been some calls from the community to do a version for VB. Unfortuantely there is a technical limitation currently to this happening. StyleCop requires a managed language service to parse and process the code before it can be analyzed. For C#, a language service was written from scratch to support the tool. But one doesn't exist today for VB, and this is a very high bar to entry. However, work is underway at Microsoft to create new, reusable, hostable managed language services both for C# and for VB. This work is still in the early stages, but the plan is to dump the custom C# parser used in StyleCop in favor of the official managed C# language service when it becomes available. At that time, it will probably also become technically feasible to do a version of StyleCop for VB. At that time, there will need to be some evaluation of the demand for a VB version of StyleCop in the community, and it will likely be up to the VB team to determine whether they want to support this.

Ursprüngliche Quelle (die leider nicht mehr existiert): http://code.msdn.microsoft.com/sourceanalysis/Thread/View.aspx?ThreadId=383

Die beiden interessanten Passagen habe ich hervorgehoben. Ich nehme an, mit Roslyn wurde genau das erreicht, wovon Jason 2008 sprach. Nur... was ist seitdem aus StyleCop geworden? Vergessen? Weiß jemand mehr?

Multiplattform mal anders: Heute schon Bridge gespielt?

Wer meint, Software-Entwicklung ginge nur nativ, oder mittels Cross-Plattform Umgebungen wie z.B. Apache Cordava oder Xamarin, der kennt Microsofts Universal Windows Plattform noch nicht.

Ganz gleich, ob jemand nativ für Android oder iPhone/iPad entwickelt und dabei Java oder Objective-C nutzt (und das in seiner bevorzugten Entwicklungsumgebung): Das Ziel der Universal Bridges wird es sein - vereinfacht gesagt - im nächsten Schritt einen zusätzlichen Layer zu ergänzen und die jeweilige App dann ganz normal im Windows Store veröffentlichen zu können.

Hier einmal kurz der Überblick über die wichtigsten Projekte der Universal Windows Plattform dazu:

Bereits spannend für Android Entwickler ist dabei die Möglichkeit, ihre Apps direkt auf einem Windows Smartphone testen zu können. Hierzu kann das entsprechende .apk Paket ohne Umschweife auf dem Device installiert werden. Ermöglicht wird das durch ein in Windows 10 for Mobile integriertes Android Subsystem, das auf Virtualisierung basiert. Dieses Feature ist allerdings – genau wie Windows 10 for Mobile – noch nicht final und selbst in der aktuellen Insider Preview noch nicht offiziell verfügbar. Findige Entwickler haben dennoch entdeckt, wie sich die Funktion bereits jetzt ausprobieren lässt.

Oberflächlich betrachtet ergibt sich hieraus für Microsoft eine Win-Win Situation: Objective-C und Java App-Entwickler haben die Chance durch die Marktausdehnung ihren Umsatz zu erhöhen - und das nahezu ohne Aufwand, oder eine neue Sprache oder Entwicklungsumgebung erlernen zu müssen. Microsofts Windows Store wiederum erhält einen Boost an neuen Apps, die es zuvor nur auf anderen Systemen gab. Diese Strategie bietet Microsoft mittelfristig die Chance, mit dem eigenen Store gleichauf mit der Konkurrenz zu ziehen. Doch wie wirkt sich das auf die App-Entwickler aus? Verschieben sich dadurch die Märkte? Gewinnt vielleicht die Windows 10 for Mobile Plattform so an Attraktivität, dass langfristig Microsoft hier die erste Geige spielt?

Einer Statistik vom Kantar Wordpanel nach besaß Microsoft mit der Windows Plattform im mobilen Sektor in Deutschland einen Marktanteil von etwa 8,5% Ende Mai 2015, während Apple mit dem iPhone mit 15,9% weit darüber lag und Google mit Android den Markt mit 74,7% weiterhin dominierte. Allerdings hat Android gegenüber dem ersten Quartal auch einiges an Marktanteil verloren (was hauptsächlich auf die Einführung vom iPhone 6 zurückzuführen ist).

Bezogen auf die fünf größten europäischen Märkte (Deutschland, Frankreich, Großbritannien, Italien und Spanien) hat Microsoft hier sogar fast die 10% Marke erreicht. In Deutschland allein sind es mit Stand Ende Juni 2015 sogar bereits 10,5%. Das Wachstum ist hier klar erkennbar.

Einen Überblick über die Daten gibt es hier.

Egal, welchen Weg die Entwickler also einschlagen: Native Entwicklung, Web-Entwicklung, Cross-Plattform Entwicklung, es ist bereits jetzt abzusehen, dass die Frage nach der App-Verfügbarkeit bald kein entscheidendes Kaufkriterium mehr sein und zunehmend wieder die Qualität der Geräte und die Usability im Vordergrund stehen wird.

Im Zeitalter von Cloud-Computing, BYOD und dem massenhaften Schwenk von Desktop PCs zu mobilen Tablets oder Smartphones ist das für Ihr Business in jedem Fall eine positive Nachricht. Und falls Sie einen Partner suchen, mit dem Sie Ihre zukünftige Business Strategie hinsichtlich der Wahl einer geeigneten Plattform diskutieren möchten, sprechen Sie uns gerne an!

Neues zu TouchDevelop (jetzt auch für Minecraft)

Über TouchDevelop haben wir nicht nur hier, sondern auch auf Entwicklerkonferenzen berichtet. Wir haben gezeigt, wie einfach es ist, damit Anwendungen und Spiele auf sämtlichen Devices für sämtliche Devices zu entwickeln und als besonderes Highlight eine eigene (in TouchDevelop entwickelte) Bibliothek vorgestellt, mit der sich sogar ein Lego MindStorms Roboter programmieren ließ.

Mittlerweile nimmt aber die Aussage “für sämtliche Devices” ganz neue Dimensionen an. Statt einfach nur noch als HTML5 Anwendung in allen Browsern zu funktionieren, oder als App exportiert in den Windows (Phone) Store exportiert zu werden, sind inzwischen folgende Möglichkeiten hinzugekommen:

  • Export to App Studio (Windows, Windows Phone)
  • Export to Cordova Apps (iOS, Windows, Android)
  • Export to Azure Web Apps (Node.JS)
  • Export to Raspberry PI (Node.JS)
  • Export to Web App or Office Mix

Es gab vor längerem bereits Tutorials, die gezeigt haben, wie sich für den Arduino programmieren lässt (inkl. Simulation auf dem Touchdisplay eines Smartphones). Ganz neu hinzugekommen ist die Unterstützung für das BBC Projekt micro:bit.

Nachdem zurzeit allerdings Minecraft in aller Munde ist (es scheint sich seit dabei zu einem Signature-Game für Microsoft zu entwickeln), ist folgendes besonders interessant: Mit MinecraftEDU und MinecraftPI werden Versionen angeboten, die es möglich machen, Scripte für Minecraft mittels TouchDevelop zu entwickeln.

Hier ein Beispiel für den Bau einer Pyramide:

PyramidCraft

 

Ich würde sagen: Das klingt doch mal nach einem spannenden Wochenend-Projekt, oder? Hier der Link zur Dokumentation.

Und nun viel Spaß!

KEIN Aprilscherz: Visual Studio 2015 Enterprise

Gestern hat Microsoft bekannt gegeben, dass mit der neuen Version 2015 geplant sei, die SKUs Premium und Ultimate zusammenzufassen. Die neue Edition wird Enterprise heißen. Obwohl sie damit faktisch alle Ultimate Features enthält (wie z.B. Intellitrace), bedeutet das nicht, dass alle Premium Abonnenten tiefer in die Tasche greifen müssen.

Im Gegenteil: Der Neuerwerb einer Enterprise Lizenz wird sogar günstiger sein, als zuvor Visual Studio Premium 2013. Die jährlichen Kosten für die Erneuerung sind identisch.

Visual Studio 2013 (New / Renewal in USD)

Visual Studio 2015 (New / Renewal in USD)
Ultimate mit MSDN 13.299,00 / 4.249,00 1)
Premium mit MSDN 6.119,00 / 2.569,00 2)
Professional mit MSDN 1.199,00 / 799,00 3)
Enterprise mit MSDN 5.999,00 / 2.569,00
Professional mit MSDN 1.199,00 / 799,00

 

 

Auch Mitglieder des Microsoft Partner Networks profitieren von dieser Änderung. Im Oktober diesen Jahres wird sie automatisch im MPN Partner Licensing ausgerollt!

In den Schulen unterrichten sie Latein. Warum kein VBA?

Zugegeben, die Überschrift wirkt auf den ersten Blick provokant. Handelt es sich bei Latein doch um eine Sprache, die als Basis aller romanischen Sprachen mindestens die Einstiegshürde zum Erlernen dieser deutlich erleichtert. Heutige Redewendungen und auch viele Wortbedeutungen lassen sich aus der Kenntnis der Sprache Cäsars genauso ableiten, wie die Tatsache, dass die Rolle des “Kaisers” eben auf den Namen desselben Herrschers zurückzuführen ist. Achja… und für das Jura-Studium sowie das Studium der Medizin benötigt man es auch.

Und VBA? Eine tote Sprache? Genau wie Latein?

Mag sein. Nichts desto trotz haben nicht einmal Office Apps, Visual Studio Tools for Office oder selbst OLE Automation dazu geführt, dass VBA vollends in Vergessenheit geraten ist. Warum auch? Leichtgewichtiger geht es kaum: Der Visual Basic Editor (VBE) ist in die Office Produkte integriert, der Zugang ist extrem leicht, es werden keine zusätzlichen Lizenzen benötigt und sämtliche Belange von Word, Excel und Access lassen sich damit programmieren. Zudem benötigt es keine komplexen Installationssysteme und technisch gesehen auch keine Rollout-Gremien, um zeitnah Problemlösungen innerhalb einer Fachabteilung an den Start zu bekommen (was die IT Abteilung davon hält sei einmal dahingestellt).

Trotzdem. Ein ungutes Gefühl bleibt.

  • Es gibt keine integrierte Quellcodeverwaltung.
  • Unter modernen Gesichtspunkten sind viele Verhaltensweisen zunächst nicht nachvollziehbar.
  • Es gibt zwar Klassen und Interfaces (tatsächlich!), aber keine echte Polymorphie oder Funktionsüberladung.
  • Die Arbeit mehrerer Entwickler an einem Projekt gestaltet sich als sehr aufwändig.
  • Aufgrund der nur eingeschränkten Verwaltungsmöglichkeiten sind komplexe Projekte langfristig nur schlecht wartbar.
  • Die Fehlerbehandlung ist auf den ersten Blick wenig intuitiv.
  • etc.

Stellen wir uns aber der harten Realität: In großen sowie kleinen Unternehmen wird VBA innerhalb von speziell Excel und Access noch immer flächendeckend von den Fachabteilungen eingesetzt. Das Phänomen lässt sich nicht einmal auf bestimmte Branchen einschränken. Und so schnell wird sich das auch nicht ändern.

Daher liegt es in unserer Verantwortung, dafür zu sorgen, dass die Entwicklung (und damit auch unsere Dienstleistung) auch in diesem Kontext einem hohen Anspruch an Qualität gerecht wird. Quellcodeverwaltung, Nachvollziehbarkeit, Testing, Requirements-Engineering & Co sind dabei nur einige Stichworte. Und der Einsatz von VBA ist kein Grund, die modernen Prozesse zur Softwareentwicklung links liegen zu lassen.

Im Gegenteil.

Als Einstieg für die Interessierten hier ein paar Querverweise, die zeigen, dass da auch mehr geht:

In Projekten, in denen auch bei uns dann und wann mal VBA genutzt wird, verwenden wir übrigens selbstverständlich den Team Foundation Server für die Requirements, das Work Item Tracking und auch die Quellcodeverwaltung.

Neugierig? Sprechen Sie uns an!

Für 2015 schon Zertifizierungen geplant?

Training and Certification Guide screen shot 0Wer sich wie wir u.a. im Fahrwasser von Microsoft bewegt, kennt natürlich die Zertifizierungen, die sich hier erwerben lassen. Besonders spannend sind dabei für uns die Titel, die mittels unterschiedlicher Zertifizierungen zu erreichen sind. Beispielsweise der MCSD Application LifeCycle Management, bestehend aus Prüfungen zu Themen wie der Konfiguration und Administration des Team Foundation Servers, Testing und der Optimierung einer Wertschöpfungskette im Bereich der Softwareentwicklung.

Für einen Überblick über sämtliche Pfade, Möglichkeiten und auch zur Planung gibt es historisch bedingt die verschiedensten Möglichkeiten. Da Poster aber ziemlich 2010 sind, hat Microsoft mittlerweile eine eigene Windows Store App nachgelegt. Obwohl simpel gestaltet, ist sie immerhin interaktiv und ermöglicht definitiv einen hervorragenden Überblick.

Die App bekommt hier hier.

Viel Spaß dabei und viel Erfolg in 2015!

P.S.: Du bist bereits MCSD: ALM und hast Spaß dabei, Kunden auf dem Weg zu stabilen Geschäftsanwendungen zu unterstützen? Bewirb Dich jetzt!

Stabile Developer Workstation mit Server-Ambitionen

Kennt ihr das noch aus Zeiten von Windows 2000: Bei Microsoft gab es noch die Unterscheidung zwischen einem Client- und einem Server-Kernel. Bekannterweise war der Windows 2000 Server Kernel stabiler als der von Windows 2000 Workstation. Der Grund war u.a. der, dass es im Workstation Produkt diverse Shims gab, die u.a. für Kompatibilität auch zu älteren Produktversionen verantwortlich waren. Auf einem Server kommt es in erster Instanz aber auf Stabilität und Geschwindigkeit an. Entsprechend gab es seit jeher unterschiedliche Kernel, die Microsoft später aber doch zusammengefasst hat. Für die Client-Benutzer ein Segen, denn auch sie kamen nun in den Genuss so richtig stabiler Betriebssysteme.

Für die Server-Benutzer sollte das aber nicht dazu führen, dass sie statt einer aufgeräumten, performanten Serverumgebung sich nun auf einmal auch in einer "Klicki-Bunti" Welt zurecht finden sollten. Daher werden seitdem verschiedene Features der Client-Versionen in den entsprechenden Serverprodukten abgeschaltet, bzw. gar nicht erst installiert.

Für uns Entwickler wiederum aber interessant sind Serversysteme dennoch. Denn sie gelten weiterhin als stabile Systeme, die darüber hinaus natürlich auch über Rollen verfügen, die dann und wann für uns in der Entwicklung gerade von Business Applikationen wichtig sein können. Was läge also näher, als sich ein System zurechtzukonfigurieren, das auf einem Windows Server Produkt basiert, sich aber "anfühlt" wie ein Client-System?

Windows Server 2012 Workstation

Den Gedanken hatten auch andere und so gibt es seit Windows 2000 Anleitungen, wie man ein Server-OS derart konfiguriert, dass es das vom Client her bekannte Look&Feel besitzt. Inklusive Klicki-Bunti. :)

Während uns Windows 2000 eher nicht mehr interessiert, findet sich entsprechend auch für Windows Server 2012 eine entsprechende Anleitung, die ihr hier findet: http://www.win2012workstation.com/.

Darin wird Schritt für Schritt erklärt, wie sich folgende Features nachinstallieren, bzw. konfigurieren lassen:

  • Treiber, Sprache, Computername und Informationen zu dem Besitzer des Systems
  • WLAN Konfiguration und Sound
  • Deaktivieren von STRG-ALT-ENTF beim Login, der Passwort Restriktionen und des eher lästigen Shutdown-Event-Trackers
  • Deaktivieren der IE Enhanced Security (ESC)
  • Konfiguration des Systems für performante Apps (standardmäßig liegt der Fokus im Server OS eher bei performanten Systemdiensten)
  • Themes, Aero Cursors (Endlich! Klicki Bunti!)
  • Windows 8 Modern UI Apps, die Default Apps und der Windows 8 IE
  • Ausschalten der Data Execution Prevention (DEP) und Structured Exception Handling Overwrite Protection (SEHOP)
  • u.v.m

Converter

Falls der Aufwand für den einen oder anderen zu hoch ist, gibt es gute Neuigkeiten: Ein Team von Enthusiasten hat einen Converter entwickelt, mit dem sich die Schritte automatisieren lassen. Somit ist ein Windows Server 2012 nach der Initialinstallation (die ja selbst nur noch ein Klacks ist) im Nu in ein Workstation-artiges System verwandelt: http://www.win2012workstation.com/converter/.   

Frustfreie Web.config auch im Team

Eine sehr nützliche Funktion im Visual Studio und MSBuild ist die Möglichkeit, bei der Veröffentlichung von Webseiten die Web.config entsprechend der gewählten Zielkonfiguration automatisch anpassen zu lassen. Der Vorgang nennt sich Transformation und beschreibt im Prinzip nichts weiter als anhand von Transform-Dateien die Web.config zu verändern. Das Prinzip ist identisch mit der bekannten Xml Transformation mittels XSLT (in Visual Studio heißt nur alles wieder mal anders).

Während das Konzept beim Web-Publishing bereits sinnvoll ist (um z.B. für Debug, Release, Stage, etc. unterschiedliche Konfigurationen parat zu haben), wäre der Einsatz während der Entwicklung selbst allerdings genauso praktisch. Beispielsweise könnten einzelne Teammitglieder unterschiedliche lokale Entwickler-Datenbankinstanzen haben, die sich auf die ConnectionStrings in der Web.config auswirken. Das Problem, das daraus i.d.R. entsteht, ist, dass jeder Entwickler die Web.config bei sich lokal anpasst und dadurch auscheckt. Sollte sie dann “aus Versehen” mal mit eingecheckt werden, klappt bei anderen Entwicklern im Zweifelsfall die Datenbankverbindung nicht mehr, sobald sie ihren Workspace aktualisieren. Im schlimmsten Fall werden dadurch Basisänderungen an der Web.config überschrieben wenn man nicht aufpasst.

Die Lösung für dieses Problem wäre, jedem Entwickler eine eigene Transform-Datei bereitzustellen und dafür zu sorgen, dass personenabhängige Einstellungen ausschließlich darin stattfinden. Dazu muss die Web.config allerdings zur Compilezeit generiert werden und darf zudem nicht mehr Teil der Quellcodeverwaltung sein.

Wie das im Einzelnen funktioniert zeigt folgende Schritt für Schritt Anleitung:

Das Publishing Target und die Config Transformation lokal konfiguriert

Kostenlose Aufzeichnungen der #msts14 - Jetzt weiterbilden!

Nur kurze Zeit nach der Microsoft Technical Summit 2014 wurden auf Channel 9 wie versprochen die Aufzeichnungen zu den Sessions veröffentlicht. Sowohl die Videos als auch die Präsentationen sind übersichtlich in der Agenda zu der Veranstaltung verlinkt.

Unseren Beitrag zum Microsoft Fakes Isolation Framework gibt es dort ebenfalls zu sehen. Viel Spaß beim Anschauen (wir hatten auf jeden Fall Spaß beim Halten der Session)! 

Microsoft Technical Summit 2014 - Pre-Review und ein Announcement!

Diese Woche findet vom 11.11.2014 bis zum 13.11.2014 in Berlin die Technical Summit 2014 statt. Microsoft hat bekannter Weise die Visual Studio Evolution mit der TechNet Conference zusammengelegt und lädt diese Woche für drei Tage Softwareentwickler und IT Infrastrukturspezialisten gemeinsam ein, von Experten aufregende und z.T. neue Technologien vorgestellt zu bekommen. Die Agenda zeigt dabei nicht nur einen Querschnitt durch alle relevanten Technologien, sondern auch das Who is Who der Speaker-Szene.

Die angebotenen Sessions bewegten sich inhaltlich von Einstiegs-Themen bis hin zu Deep Dives und auch zukunftsorientierten Bereichen wie IoT (Internet of Things) und Application Insights (im Zusammenhang mit Predictive Analytics und den entsprechenden Angeboten via Microsoft Azure).

Uns hat die Konferenz sehr gefallen und wenn wir auch nicht die ganze Zeit da waren, konnten wir den Dienstag immerhin nutzen, um ebenfalls als Speaker dem interessierten Publikum erneut das Microsoft Mocking Framework Fakes näherzubringen. Nachdem wir einige technische Hürden genommen haben (merke: Immer einen Displayport-Adapter dabei haben), konnten wir neben einer kleinen Historie einen umfangreichen Einstieg in Microsoft Fakes liefern inkl. spannender Informationen über Microsoft Pex. Pex hat im Zusammenspiel mit dem Fakes-Vorläufer Moles das Leben eines Softwareentwicklers beim Schreiben von Unit Tests enorm erleichtert. Die Pex Engine ermöglichte es, Codepfade automatisch analysieren zu lassen, um auf der Basis sogar Grundgerüste für sinnvolle Unit-Tests zu generieren. Microsoft sprach bei Pex (Program Exploration) von einem Whitebox Testing Tool. 

Announcement

Durch die Produktifizierung von Moles ist Pex lange Zeit auf der Strecke geblieben. Bis vor kurzem gab es lediglich ein kostenlos erhältliches Addin über die Visual Studio Gallery, das auf die Pex Engine aufsetzt und mit Visual Studio 2013 kompatibel ist. Code Digger - so der Name - stellte einen eingeschränkten Funktionsumfang von Pex zur Verfügung.

Zusammen mit der heutigen Ankündigung von Visual Studio 2015 und der neuen Community Edition (die die Express SKU ersetzt) wurde angekündigt, dass Pex nachzieht! Microsoft spricht an dieser Stelle von Smart Unit Tests und dieses Feature ist großartig!

With Visual Studio 2015 preview, we have introduced Smart Unit Tests. Explore your .NET code to generate test data and a suite of unit tests. For every statement in the code, a test input is generated that will execute that statement. A case analysis is performed for every conditional branch in the code. For example, if statements, assertions, and all operations that can throw exceptions are analyzed. This analysis is used to generate test data for a parameterized unit test for each of your methods, creating unit tests with maximum code coverage. Then you bring your domain knowledge to improve these unit tests.

Details dazu wie das funktioniert, finden sich hier und in den kommenden Tagen auch auf diesem Blog.

Wir gehen jetzt erst einmal feiern!

Update

Vielen Dank an Tao Xie, dem dritten im Bunde hinter Microsoft Pex & Fakes neben Nikolai Tillmann und Jonathan "Peli" de Halleaux, für die Veröffentlichung eines spannenden Dokuments mit Informationen zum Migrationspfad von Pex zu Fakes und Code Digger (Jetzt: Smart Unit Tests). Das kostenlose Dokument gibt es hier zum Download.

Über die Autoren

Christian Jacob ist Leiter des Geschäftsbereiches Softwarearchitektur und -entwicklung und zieht als Trainer im Kontext der .NET Entwicklung sowie ALM-Themen Projekte auf links.

Marcus Jacob fokussiert sich auf die Entwicklung von Office-Addins sowie Windows Phone Apps und gilt bei uns als der Bezwinger von Windows Installer Xml.

Martin Kratsch engagiert sich für das Thema Projektmanagement mit dem Team Foundation Server und bringt mit seinen Java- und iOS-Kenntnissen Farbe in unser ansonsten von .NET geprägtes Team.

Aktuelle Kommentare

Comment RSS