Automatizace Procesu Vývoje Na Platformě Xamarin

Total Page:16

File Type:pdf, Size:1020Kb

Automatizace Procesu Vývoje Na Platformě Xamarin Masarykova univerzita Fakulta informatiky Automatizace procesu vývoje na platformě Xamarin Diplomová práce Bc. Tomáš Šmíd Brno, jaro 2019 Prohlášení Prohlašuji, že tato práce je mým původním autorským dílem, které jsem vypracoval samostatně. Všechny zdroje, prameny a literaturu, které jsem při vypracování používal nebo z nich čerpal, v práci řádně cituji s uvedením úplného odkazu na příslušný zdroj. Bc. Tomáš Šmíd Vedoucí práce: doc. Ing. RNDr. Barbora Bühnová, Ph.D. i Poděkování Rád bych poděkoval doc. Ing. RNDr. Barboře Bühnové, Ph.D. za velmi vstřícné a odborné vedení a za poskytnutí velmi cenných rad a připomínek především při psaní textové části práce. Rád bych také poděkoval Ing. Martinu Vídeňskému co by odbornému konzultantovi za cenné rady a připomínky při realizaci praktické části. Nakonec bych rád poděkoval společnosti A-WebSys spol. s r.o. za velmi vstřícný a otevřený přístup při řešení jakéhokoliv problému spojeného s vy- pracováním této diplomové práce. ii Shrnutí Cílem této práce je automatizovat procesy mobilního vývoje na plat- formě Xamarin, a to zejména s důrazem na oblasti verzování, kontroly kvality a testování zdrojového kódu ve firmě A-WebSys spol. s r.o. V první části práce jsou představeny termíny spojeny s automatizací procesů a platformou Xamarin. Ve druhé části práce je popsána ana- lýza vývojových procesů a všech dalších oblastí potřebných k pocho- pení problematiky a následnému vytvoření návrhu řešení, které je také součástí této části. V závěrečné třetí části práce je představena implementace praktického řešení společně s vyhodnocením, do jaké míry se ho podařilo ve firmě integrovat a jaký je jeho přínos. iii Klíčová slova Xamarin, automatizace, CI, CD, DevOps, procesy, Git, GitLab, GitLab CI/CD, GitLab runner, yaml, mobilní vývoj iv Obsah 1 Úvod 1 2 Procesy a automatizace 3 2.1 DevOps ............................4 2.1.1 Průběžná integrace . .5 2.1.2 Průběžné doručení, průběžné nasazení . .5 3 Platforma Xamarin 7 3.1 Mvvm, MvvmCross .....................7 4 Analýza 9 4.1 Aktuálně nastavené procesy mobilního vývoje ve firmě ...9 4.1.1 Klíčové ukazatele výkonnosti procesů . 12 4.1.2 Vyhodnocení výkonnosti procesů . 13 4.2 Verzování kódu ........................ 14 4.2.1 Git vs. Subversion . 14 4.2.2 Strategie použití nástroje Git . 15 4.3 GitLab CI/CD ......................... 20 4.3.1 Základní komponenty . 21 4.3.2 Požadavky a omezení nástroje . 25 4.3.3 Požadavky a omezení na realizaci . 25 4.4 Kontrola kvality kódu ..................... 26 4.4.1 StyleCop Analyzers . 27 4.5 Sestavení a jednotkové testy .................. 28 4.6 Distribuce aplikace ...................... 29 4.6.1 Tvorba APK a IPA balíčků . 30 4.6.2 Distribuce k živým testerům . 31 4.6.3 Distribuce do produkčního prostředí . 33 4.7 Sběr dat od klientů ...................... 34 4.8 Návrh řešení .......................... 35 4.8.1 Distribuce aplikace . 38 5 Implementace 40 5.1 Nastavená pravidla pro kontrolu kvality kódu ........ 40 5.2 Skriptovací soubory ...................... 41 5.3 Nastavení GitLab CI/CD ................... 49 v 5.3.1 GitLab runner . 49 5.3.2 YAML soubor . 50 5.4 Překážky k vyřešení ...................... 57 5.4.1 Konfigurace nástroje GitLab runner . 57 5.4.2 Práce s NuGet balíčky . 58 6 Vyhodnocení 62 6.1 Dosažené výsledky ...................... 62 6.2 Srovnání s původním stavem ................. 64 7 Závěr 66 Bibliografie 67 A Přílohy 78 A.1 Verzování ........................... 78 A.2 Kontrola kvality kódu ..................... 79 A.3 Skriptovací soubory ...................... 87 A.3.1 Vstupní parametry . 87 A.3.2 Ukázky kódů . 90 A.4 Konfigurace .......................... 94 A.4.1 YAML soubor . 94 A.5 Řešení zásadních překážek .................. 97 A.5.1 Vzájemná kompatibilita .NET platforem . 97 A.5.2 Převedení formátu Packages.config na Package- Reference . 98 A.5.3 Přesun metadat do souboru .csproj . 100 A.5.4 Používání přípon u názvů NuGet balíčků . 101 A.5.5 Funkce IncludeReferencedProjects u programu dotnet . 102 A.5.6 Nastavení umístění NuGet balíčků . 104 vi 1 Úvod Přesně definované procesy jsou základem správně nastaveného vývo- jového prostředí. K dosažení větší efektivity tohoto prostředí se dnes v maximální možné míře využívá automatizace. Té lze dosáhnout vhodně zvolenými podpůrnými nástroji, které doplňují definované procesy. Nicméně, nasazení a použití těchto ná- strojů k provádění specifikovaných úkolů samo o sobě často nestačí k dosažení zlepšení procesů. Při zavádění automatizace je potřeba také změnit celkovou kulturu organizace. Proces je tvořen několika různými složkami, které se podílejí na dosažení požadovaného výstupu. Proto je potřeba zajistit, aby spo- lupráce mezi jednotlivými složkami byla co nejhladší (viz kapitola 2). A-WebSys spol. s r.o. [62] (dále jen A-WebSys) je společnost, která se ve své dlouholeté historii specializovala především na vývoj inter- netových aplikací v oblasti finančního sektoru. Za sebou má celou řadu úspěšných projektů, a tak se v roce 2017 rozhodla v této oblasti rozšířit svou působnost a zařadit do svého portfolia vývoj mobilních a desktopových aplikací. Pro multiplatformní vývoj musela firma A-WebSys zvolit mnoho nových technologii. Především však pro vývoj zvolila platformu Xama- rin (viz kapitola 3), která umožňuje kód psát v jednom jazyce, kterým je C#, a ten sdílet a použít pro více cílových platforem. A i když při vývoji internetových aplikací kód verzuje pomocí nástroje Subversion, zde se rozhodla přejít k systému Git (viz podsekce 4.2.1). Nakonec pro vývoj na platformě Xamarin vznikl zcela nový tým. Do začátku se firma rozhodla nastavit procesy vývoje především dle zkušeností a postupů používaných při vývoji webových aplikací, protože oblast mobilního vývoje pro ní byla zcela nová a neměla v ní žádné zkušenosti. Současně díky nově používaným technologiím a novým lidem tak zůstává prostor ke zlepšení těchto procesů. Cílem této diplomové práce je seznámit se s procesy vývoje pro mobilní platformy ve společnosti A-WebSys postavené na platformě Xamarin, a to zejména s důrazem na oblasti verzování, kontroly kvality a testování zdrojového kódu, a zjistit, v čem by bylo možné používané procesy zefektivnit. Pro tento účel je vyhrazena celá kapitola 4, která 1 1. Úvod čtenáře seznámí s aktuálně nastavenými procesy ve firmě a detailně rozebírá jednotlivé důležité části vývojových procesů ať už z pohledu postupů či z pohledu nástrojů, které se buď používají ve firmě, anebo bude nutné je použít za účelem jejich zefektivnění. Důraz je především kladen na použití nástrojů, které jsou volně dostupné. Dalším požadavkem na tuto práci je navrhnout možné řešení na základě informací získaných po seznámení se všemi důležitými body vývojových procesů ve firmě, které zajistí zefektivnění těchto procesů. Návrh řešení se nachází v sekci 4.8. Posledním z požadavků na tuto práci je navržené řešení realizovat, nasadit ve firmě a vyhodnotit, zda se pomocí implementovaného řešení podařilo procesy zlepšit. Popis reálného řešení včetně popisu klíčových překážek, které bylo nutné vyřešit při implementaci, se nachází v kapitole 5. V kapitole 6 je popsáno, do jaké míry se imple- mentované řešení podařilo ve firmě úspěšně nasadit. Popsán je zde také samotný přínos práce. 2 2 Procesy a automatizace Proces představuje základní kámen žívotního cyklu vývoje software. Definuje co, jak a kdy má být provedeno při vývoji. Staví nazku- šenostech a ověřených činnostech. Součástí procesu jsou role lidí, aktivity, techniky a nástroje, které jsou společně využity k dosažení požadovaných výstupů [51]. Typickými procesy při vývoji software jsou plánování, analýza po- žadavků, návrh, implementace, stabilizace a testování kódu, nasazení do produkčního prostředí a údržba. Jednotlivé pořadí, význam a další vlastnosti těchto procesů určuje konkrétní strategie či model životního cyklu vývoje projektu [52]. Procesy se mohou po nějakém čase stát nevhodnými. Důvodem mohou být například změny strategických cílů organizace či jejich výkonnostní aspekty, které mají finanční dopad. V takovém případě je potřeba procesy upravit a zefektivnit. Před tím, než je možné začít s jejich optimalizací, je potřeba se s nimi důkladně seznámit a popsat jejich současný stav. Na základě zjištěných údajů lze rozhodnout, co je potřeba v pro- cesech zlepšit a dojít k volbě vhodné techniky, která by měla pomoci procesy zefektivnit. Pokud je problém v lidské činnosti, pak je možným řešením napří- klad reorganizace zaměstnanců zapojených do daných procesů, anebo zpřesnění definic jednotlivých rolí. Jako slabý článek procesu se může projevit nepřesné či chybějící definice aktivit, které mají být prováděny. To může vést k zbyteč- nému množství rozhodování a nerovnoměrnému zatížení technických či lidských zdrojů. To vše může vést k snížení výkonnosti procesu a zpomalení celého vývoje. Řešením pro tento problém je zavedení automatizace procesu. Cílem automatizace procesů je urychlit a usnadnit práci rychlým a opakovatelným prováděním konkrétních úkolů a aktivit. Tím se také snižují náklady potřebné k vytvoření požadovaných výstupů a celkově snižuje chybovost. Aby bylo možné procesy efektivně automatizovat, je potřeba kromě vhodně zvolených nástrojů, které konkrétní úkoly budou provádět, zpřesnit jejich celkovou definici, tj. specifikovat jednotlivé role aod- 3 2. Procesy a automatizace povědnosti, aktivity a jejich vlastnosti a využití technik a nástrojů. Především však musí být přesně určeny výstupy těchto procesů. Konceptem, který napomáhá zefektivnění procesů v organizaci, a to včetně využití jejich automatizace, je DevOps
Recommended publications
  • Profile Stavros Mavrokefalidis
    Profile Stavros Mavrokefalidis Software Development and Consulting Microsoft .NET teamstep GmbH Frankenstraße 14, 46487 Wesel (DE) Tel.: +49 2859 9098809 Fax: +49 2859 901458 Mobile: +49 151 14934862 www.teamstep-gmbh.de [email protected] Date of Birth: 01/03/1971 Place of Birth: Thessaloniki / Greece Marital Status: Married, one son Languages: German & Greek (fluent), English (good) IT-Experience: 21 Years Rate: negotiable Focus • Software design and development with Microsoft Technologies • Visual Studio, Azure DevOps, TFS, Git, SQL-Server • Object-oriented analysis and design • N-Tier and Client/Server, Microservices • SCRUM and Waterfall based methodologies • Development of requirements, estimates, functional and technical specifications. Technological Environment • .NET, C# • ASP.NET / .Net Core, WPF, MVC, WebAPI, WCF, IIS • Entity Framework, ADO.NET, LINQ, XML, JSON • HTML5, JavaScript, CSS, Angular, TypeScript, jQuery, AngularJS • GUI technologies (ASP.NET, Angular, .Net Core, Windows Forms, WPF, Silverlight) • MS SQL Server • UML, OOA, OOD, Design Patterns, MVC, MVVM Certificates • MCPD Microsoft Certified Professional Developer - Web Development o Exam 70-513: Windows Communication Foundation Development with Microsoft .Net Framework 4 o Exam 70-516: Accessing Data with Microsoft .Net Framework 4 o Exam 70-515: Web Applications Development with Microsoft .NET Framework 4 o Exam 70-519: Designing and Developing Web Applications Using Microsoft .NET Framework 4 • Exam 70-480: Programming in HTML5 with JavaScript and CSS3 Project History Consumer industry Extension of the project management software INVEST 3 months Development and extension of an existing internal application for planning of project budgets and management investment. 01/07/2020 – 18/09/2020 • Partial UI modernization of the web frontend based on bootstrap 4 • Extension of project management with planning functionality.
    [Show full text]
  • Surviving C#-Codereviews
    Rainer Stropek | time cockpit Surviving C#-Codereviews Your Host Rainer Stropek Developer, Entrepreneur Azure MVP, MS Regional Director Trainer at IT-Visions Contact software architects gmbh [email protected] Twitter: @rstropek Agenda Es ist nicht unüblich, dass externe oder interne Kunden Experten beauftragen, die C#- Codebasis eines Projekts zu begutachten. Rainer Stropek, langjähriger MVP und MS Regional Director, macht solche Projekte regelmäßig. In dieser Session erklärt er, worauf er dabei Wert legt. • Welche Tools setzt er ein, um Verbesserungspotenziale zu suchen? • Wie findet er in großen Codebasen rasch die kritischen Bereiche? • Welche Best und Worst Practices kontrolliert er? • Wie würde er ein C#-Projekt aufsetzen, das jeden Codereview glänzend bestehen soll? Auf solche Fragen wird Rainer in der Session eingehen. Sie erhalten eine konkrete Checkliste von Punkten, die Sie bei Ihren Projekten beachten können, um die Qualität Ihres gelieferten C#- Codes noch weiter zu verbessern. Agenda Introduction Reviewing the process Why Code Review Projects? Automation My Rules for Review Projects Source code handling Reviewing the code State of the art? Development process Basics Team management Coding guidelines Code structure Summary Documentation Recommendations Testing Performance Security Why Code Review Projects? Why Code Review Projects? M&A Buy company or source of a product New management team Customer-vendor relationship Tip: Make code review criteria part of contract Large customers buys software strategic for their business Frequently: Large customer, small vendor Team wants/needs external advice Reviewer is a kind of external coach Accompanying Reviews Security review Legal reviews Who owns the source code? License terms of dependencies? Compliance to policies (internal/external) Standard certifications E.g.
    [Show full text]
  • Helix Toolkit Documentation Release 2015.1
    Helix Toolkit Documentation Release 2015.1 Helix Toolkit Contributors Oct 30, 2017 Contents 1 Content 3 1.1 Introduction...............................................3 1.2 WPF...................................................7 1.3 WPF + SharpDX.............................................8 1.4 Contribute................................................8 2 Indices and tables 15 i ii Helix Toolkit Documentation, Release 2015.1 Note: The documentation is under construction. Please contribute! Helix Toolkit is a 3D library for .NET Contents 1 Helix Toolkit Documentation, Release 2015.1 2 Contents CHAPTER 1 Content Introduction Introduction Helix Toolkit is an open source 3D library that is licensed under the MIT license. The MIT license is very permissive and permits use in proprietary software. The library is based on .NET and is currently focusing on the WPF platform. The goal has been to make it easy to work with 3D in WPF, and also provide features that are not included in the standard WPF 3D visual model. 3 Helix Toolkit Documentation, Release 2015.1 Background Helix Toolkit was started in 2009. Features Note: This section is under construction. Please contribute! Portable code • coming WPF • 3D viewport control that supports mouse and touch interaction • <todo> add more info 4 Chapter 1. Content Helix Toolkit Documentation, Release 2015.1 WPF+SharpDX • 3D viewport control that supports mouse and touch interaction • <todo> add more info License Helix Toolkit is licensed under the MIT license. This is the shortest and probably broadest
    [Show full text]
  • Professional Visual Studio® 2010
    PROFESSIONAL VISUAL STUDIO® 2010 INTRODUCTION . xxxix. CHAPTER 1 A Quick Tour . 3 CHAPTER 2 The Solution Explorer, Toolbox, and Properties . 15. CHAPTER 3 Options and Customizations . .33 CHAPTER 4 The Visual Studio Workspace . 53 CHAPTER 5 Find and Replace and Help . 73 CHAPTER 6 Solutions, Projects, and Items . 89. CHAPTER 7 IntelliSense and Bookmarks . 119 CHAPTER 8 Code Snippets and Refactoring . .137 CHAPTER 9 Server Explorer . 159 CHAPTER 10 Modeling with the Class Designer . 175 CHAPTER 11 Unit Testing . 19. 1 CHAPTER 12 Documentation with XML Comments . 219 CHAPTER 13 Code Consistency Tools . 24. 5 CHAPTER 14 Code Generation with T4 . 263 CHAPTER 15 Project and Item Templates . 291 CHAPTER 16 Language-Specific Features . 311 CHAPTER 17 Windows Forms Applications . 335 CHAPTER 18 Windows Presentation Foundation (WPF) . 351 CHAPTER 19 Office Business Applications . 37. 9 CHAPTER 20 ASP .NET Web Forms . 39. 9 CHAPTER 21 ASP .NET MVC . .437 CHAPTER 22 Silverlight . 47. 1 CHAPTER 23 Dynamic Data . 48. 5 CHAPTER 24 SharePoint . 513 CHAPTER 25 Windows Azure . 53. 3 CHAPTER 26 Visual Database Tools . 54. 9 CHAPTER 27 DataSets and DataBinding . 55. 9 CHAPTER 28 Language Integrated Queries (LINQ) . 58. 7 CHAPTER 29 The ADO .NET Entity Framework . 621 CHAPTER 30 Reporting . 64. 5 CHAPTER 31 Windows Communication Foundation (WCF) . 681 CHAPTER 32 Windows Workflow Foundation (WF) . 701 CHAPTER 33 Client Application Services . 725 CHAPTER 34 Synchronization Services . .745 CHAPTER 35 WCF RIA Services . 757 CHAPTER 36 Configuration Files . .773 CHAPTER 37 Connection Strings . 795 CHAPTER 38 Resource Files . .805 CHAPTER 39 Using the Debugging Windows . 82. 7 CHAPTER 40 Debugging with Breakpoints .
    [Show full text]
  • Chris Dahlberg
    CHRIS DAHLBERG Senior Software Developer www.cdahlberg.net SUMMARY I am a passionate software developer who takes pride in creating quality code. I have strong analytical and communication skills, am familiar with a broad range of technologies, and have a solid core skill set of C#, C++, C++/CLI, WCF, Web API, SQL Server, and Cosmos DB. I can work effectively on a team or independently with minimal supervision, can adapt quickly to change, and welcome challenging situations. SKILLS AND TECHNOLOGIES PROFESSIONAL EXPERIENCE HIGH PROFICIENCY @ CONTRAST SECURITY Writing code that is clean, SENIOR SOFTWARE ENGINEER JUL 2018 TO PRESENT maintainable, and performant Worked as a developer on the .NET Agent, which instrumented Analyzing and improving performance .NET-based web applications as they ran to identify security vulnerabilities and block attacks. Replacing legacy libraries and services with minimal disruption @ BISCUIT LABS Visual Studio 2019 and earlier SENIOR SOFTWARE ENGINEER JUL 2018 TO PRESENT .NET Framework/Core/Standard Worked as a backend developer on a new building sensing, control, C# / C++ / C++/CLI and micro-grid product using C#, Cosmos DB, SQL Server, Web SOA / WCF / Web API API, and Azure. Unit Testing / Moq / xUnit / MSTest @ ALLSCRIPTS Dependency Injection (Autofac / EXPERT SOFTWARE ENGINEER DEC 2015 TO JUL 2018 DryIoc / Unity / MEF) Worked as a developer on a new team creating web services for NuGet storing electronic health records. Services were hosted in Azure and Azure / Service Fabric / Cosmos DB created using C#, Web API, Unity, Service Fabric, Cosmos DB, and other technologies. SQL Server (T-SQL and SSIS) Roslyn Code Analysis Managed the building, versioning, and packaging of our internal NuGet server and libraries.
    [Show full text]
  • Procedurally Generated Landscape As a Visualization of C# Code
    Masaryk University Faculty of Informatics Procedurally Generated Landscape as a Visualization of C# Code Bachelor’s Thesis Adam Štěpánek Brno, Spring 2020 This is where a copy of the official signed thesis assignment and a copy ofthe Statement of an Author is located in the printed version of the document. Declaration Hereby I declare that this paper is my original authorial work, which I have worked out on my own. All sources, references, and literature used or excerpted during elaboration of this work are properly cited and listed in complete reference to the due source. Adam Štěpánek Advisor: Mgr. David Kuťák i Acknowledgements I thank my advisor, Mgr. David Kuťák, for patience and invaluable feedback. I also thank my colleagues at Riganti for their input and for letting me use their hardware to deploy Helveg. Last but not least, I thank my D&D group for their encouragement, and everyone who supported me, while working on this project, in any way. ii Abstract Software visualization helps programmers better understand code through visual means. This thesis presents a software visualization tool, named Helveg, that maps the structure of C# code, along with compiler diagnostics, onto a procedurally generated landscape. This is achieved in three stages (code analysis, landscape genera- tion, and rendering), which the thesis describes in detail. Presented are also case studies involving open-source codebases. Results of these case studies show that Helveg can be used to visualize the structure of a C# codebase in a visually appealing way. Also, analysis of these outputs helps to pinpoint the drawbacks of the current visualization thus providing ideas for future work.
    [Show full text]
  • BEP TI3806 Creating an Online Auctioning Clock
    BEP TI3806 Creating an online auctioning clock Authors W.J. Baartman C. Lemaire M.J. van Tartwijk P.W.P. van der Stel J.C. de Vries BEP TI3806 Creating an online auctioning clock To obtain the degree of Bachelor of Science at the Delft University of Technology, to be presented and defended publicly on Tuesday July 2, 2019 at 11:00 AM. Authors: W.J. Baartman C. Lemaire M.J. van Tartwijk P.W.P. van der Stel J.C. de Vries Project duration: April 23, 2019 – July 5, 2019 Guiding committee: Robin van den Broek Developer @ JEM­id, Client Jill van der Knaap Marketing/Communication @ JEM­id, Client Dr. Annibale Pannichella TU Delft, Coach Dr. Huijuan Wang Bachelor Project Coordinator Preface This report announces the end of studying at the Delft University of Technology for the Bachelor’s degree in Computer Science and Engineering. Although the end of this stage in growing up to be a computer scientist or engineer is near, most of us will continue our time at TU Delft with great pleasure during a follow­up master of Computer Science. In this report, we will discuss the product we created during the last ten weeks and we will touch upon the methods and knowledge we used to produce it. Before we lay out the technical details of our final product, we would like to thank those who made our path to it possible. First of all, we would like to thank JEM­id for their hospitality and enthusiasm. After arranging to do a project we like for them, JEM­id offered us a beautiful workplace in their office.
    [Show full text]
  • Improving Software Quality Attributes of Psusing Stylecop
    Global Journal of Computer Science and Technology Software & Data Engineering Volume 13 Issue 8 Version 1.0 Year 2013 Type: Double Blind Peer Reviewed International Research Journal Publisher: Global Journals Inc. (USA) Online ISSN: 0975-4172 & Print ISSN: 0975-4350 Improving Software Quality Attributes of PS using Stylecop By Rajesh Kulkarni, P. Padmanabham & M. S. Namose BSCOER Engineering College, India Abstract - Software product quality improvement is a desired attribute and a strenuous effort is required to achieve that. Static Code Analysis (SCA) is used to find coding bugs. Stylecop is an SCA tool from Microsoft. In this paper SCA and stylecop usages are discussed. Also a comparison of Software Testing, software Metrics & Source Code Analysis (SCA) is done. Product PS designed by author1 and author2 is introduced. PS application is analyzed using static SCA tool Stylecop. After analysis recommendations were applied to PS. The results showed improved software quality attributes. Keywords : SCA, PS, stylecop, software quality. GJCST-C Classification : K.6.4 Improving Software Quality Attributes of PS using Stylecop Strictly as per the compliance and regulations of: © 2013. Rajesh Kulkarni, P. Padmanabham & M. S. Namose. This is a research/review paper, distributed under the terms of the Creative Commons Attribution-Noncommercial 3.0 Unported License http://creativecommons.org/licenses/by-nc/3.0/), permitting all non-commercial use, distribution, and reproduction inany medium, provided the original work is properly cited. Improving Software Quality Attributes of PS using Stylecop Rajesh Kulkarni α, P. Padmanabham σ & M. S. Namose ρ Abstract - Software product quality improvement is a desired emphasizes the contrast to dynamic analysis, where the attribute and a strenuous effort is required to achieve that.
    [Show full text]
  • Enforcing Code 'Beauty' with Stylecop
    Enforcing Code 'Beauty' With StyleCop Guy Smith-Ferrier [email protected] Twitter: @GuySmithFerrier Blog: http://www.guysmithferrier.com Author of .NET Internationalization Visit http://www.dotneti18n.com to download the complete source code The .NET Developer Network http://www.dotnetdevnet.com Free user group for .NET developers, architects and IT Pros based in Bristol DDD South West 3 http://www.dddsouthwest.com Saturday 11th June 2011 Introduction To StyleCop Integration With Visual Studio Customizing StyleCop Project Settings Excluding Files From StyleCop Analysis 'Favourite' StyleCop Rules Creating Custom StyleCop Rules An open-source source code analyzer for C# StyleCop is to code what FxCop is to assemblies v4.2 released May 2008 v4.3 released August 2008 v4.3.3 released January 2010 v4.4 released July 2010 Includes 151 rules Integrates with Visual Studio 2010 and 2008 Download http://stylecop.codeplex.com/ Blog http://blogs.msdn.com/sourceanalysis When you install StyleCop you must include msbuild support in the initial setup:- To incorporate StyleCop into Visual Studio's build process edit the .csproj and add the following line:- <Import Project="$(ProgramFiles)\MSBuild\Microsoft \StyleCop \v4.4\Microsoft.StyleCop.targets" /> To treat StyleCop Warnings as errors add the following line to a PropertyGroup:- <StyleCopTreatErrorsAsWarnings>false</StyleCopTreatErrorsAsWarnings> To run StyleCop without building the project use the StyleCop task:- msbuild ConsoleApplication1.csproj /t:StyleCop StyleCopCmd is a command line interface for StyleCop Download StyleCopCmd and NAnt task from:- http://stylecopcmd.wiki.sourceforge.net/ StyleCopCmd has options to:- Analyze multiple solution files Analyze folders and sub-folders Output results as XML You can enable, disable and configure StyleCop project settings using the StyleCop Settings Editor:- The StyleCop Settings Editor has two settings to configure analysis of generated code:- Analyze Designer Files (i.e.
    [Show full text]
  • Sandcastle & Co Abstract (German) in Zeiten Von Erhöhtem Kostendruck Ist Wiederverwendung Ein Aktuelleres Thema Denn Je
    Rainer Stropek | software architects gmbh Im Sandkasten Professionelle Codedokumentation mit Sandcastle & Co Abstract (German) In Zeiten von erhöhtem Kostendruck ist Wiederverwendung ein aktuelleres Thema denn je. Egal, ob einmal entwickelte Komponenten intern wiederverwendet oder ob Bibliotheken verkauft werden sollen, Dokumentation ist wichtig. Während in früheren Zeiten Dokumentation getrennt vom Sourcecode gepflegt wurde, geht man heute dazu über, Code und Dokumentation miteinander zu verknüpfen und dadurch immer aktuell zu halten. Rund um Visual Studio gibt es mit Sandcastle eine Sammlung von Tools, die es ermöglicht, eine professionelle Dokumentation für Programmbibliotheken zu erstellen. Im Workshop gibt Rainer Stropek einen Überblick über die Werkzeuge und zeigt an einem praxisbezogenen Beispiel, wie sie eingesetzt werden. Er verwendet dabei ausschließlich kostenfreie Produkte rund um Sandcastle. Der Workshop ist ideal für Entwickler, die für die Erstellung wiederverwendbarer Bibliotheken verantwortlich sind. Introduction • software architects gmbh • Rainer Stropek • Developer, Speaker, Trainer • MVP for Windows Azure • [email protected] • @rstropek http://www.timecockpit.com http://www.software-architects.com The Windows Help System THE HISTORY Where everything started: QuickHelp End of 1980’s “Microsoft strongly recommends that software developers discontinue using the Windows Help application.” Source: MSDN Next Evolution: WinHelp Combines RTF + Images + VBA Macros No out-of-the-box support starting with Windows Vista HTML
    [Show full text]
  • BASTA 2013 C# Workshop
    BASTA Workshop Re-Imagine C# Inhalt Im Zentrum dieses erfolgreichen Klassikers unter den BASTA!-Workshops stehen diesmal die Themen Anwendungsmodularisierung und asynchrones Programmieren. Am Vormittag beschäftigen wir uns mit der Frage, wie man vom Monolithen zur modularen Anwendung kommt, die leichter zu warten, weiterzuentwickeln und zu verteilen ist. Rainer Stropek wird Ihnen MEF, System.AddIn und NuGet anhand durchgängiger Beispiele erklären. Sie lernen, wie die verschiedenen Modularisierungstechniken funktionieren und wie sie sich voneinander abgrenzen. Im Laufe des Nachmittags gehen wir auf die Neuerungen in C# 5 hinsichtlich asynchroner Programmierung ein. Rainer Stropek zeigt Ihnen, was wirklich hinter async/await steckt und wie Sie die Sprachneuerungen in der Praxis erfolgreich einsetzen. Modularisierung Warum? Design Tools Case Study Grundregeln für Was bei Framework NuGet MEF in Prism Anwendungs- Design zu beachten ist MEF modularisierung MAF Bildquelle: Bildquelle: Bildquelle: Bildquelle: http://www.flickr.com/photos/ http://www.flickr.com/photos/designand http://www.flickr.com/photos/46636235 http://www.flickr.com/photos/ zooboing/4580408068/ technologydepartment/3968172841/ @N04/7115529993/ waagsociety/9182955544/ Async Programming Grundlagen Server/Web Client Wie funktioniert Beispiel: Async Web Beispiel: Async im Full async/await? mit WebAPI Client UI Bildquelle: Bildquelle: Bildquelle: http://www.flickr.com/photos/jimmiehome http://www.flickr.com/photos/ http://www.flickr.com/photos/ schoolmom/3423923394/ mkhmarketing/8476983849/ oddsock/60344273/ Modularisierung Grundlagen Warum modulare Programmierung? The benefits expected of modular programming are: Managerial - development time should be shortened because separate groups would work on each module with little need for communication Product flexibility - it should be possible to make drastic changes to one module without a need to change others Comprehensibility - it should be possible to study the system one module at a time.
    [Show full text]
  • Intelligent Code Reviews Using Deep Learning
    Intelligent code reviews using deep learning Anshul Gupta Neel Sundaresan Microsoft Corp. Microsoft Corp. [email protected] [email protected] ABSTRACT Software and its Engineering → Software functional properties Peer code review is a best practice in Software Engineering where source code is reviewed manually by one or more KEYWORDS peers(reviewers) of the code author. It is widely acceptable Deep neural networks, automatic peer reviews, code analysis, both in industry and open-source software (OSS) systems as a natural language processing, data mining, recommendation process for early detection and reduction of software defects. A larger chunk of reviews given during peer reviews are related to common issues such as coding style, 1 INTRODUCTION documentations, and best practices. This makes the code review process less effective as reviewers focus less on finding Peer code review [1, 2] is a critical part of software important defects. Hence, there is a need to automatically find development lifecycle where source code is reviewed such common issues and help reviewers perform focused code manually by one or more peers of the code author. The source reviews. Some of this is solved by rule based systems called code is inspected to discover errors, to ensure that the source linters but they are rigid and needs a lot of manual effort to code complies with best practice standards, and to discover adapt them for a new issue. vulnerabilities such as race conditions, malware, memory In this work, we present an automatic, flexible, and leaks, buffer overflows, and format string exploits. Code adaptive code analysis system called DeepCodeReviewer review is used to find these problems which may have been (DCR).
    [Show full text]