Intelligent Code Reviews Using Deep Learning

Total Page:16

File Type:pdf, Size:1020Kb

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). DCR learns how to recommend code reviews related overlooked by a developer before the software is released. to common issues using historical peer reviews and deep Parts of this process are being automated by systems 1 learning. DCR uses deep learning to learn review relevance to called code linters/static analysis tools . Linters are made up a code snippet and recommend the right review from a of rules related to coding best practices. They get triggered repository of common reviews. DCR is trained on histroical whenever these best practices are violated, mostly during the peer reviews available from internal code repositories at build time in IDEs. The rules used by linters work well for only Microsoft. Experiments demonstrate strong performance of a few variations of a violation [3] and needs a lot of manual developed deep learning model in classifying relevant and customization to adapt them for specific projects, teams, or , non-relevant reviews w.r.t to a code snippet, and ranking industry. One needs to maintain right set of rules that suits reviews given a code snippet. We have also evaluated DCR one’s projects and add new analyse rules for modifications in recommentations using a user study and survey. The results best practices. This rigidness of static analysis tools makes of our user study show good acceptance rate and answers of them hard to use [4] and unscalable for large and diverse code our survey questions are strongly correlated with our repositories present in open source software (OSS), and system’s goal of making code reviews focused on finding industry. defects. Even in presence of these systems, peer or code reviews result in common issues related to documentation, style, and, CCS CONCEPTS structure. Mäntylä and Lassenius [5] showed that 75 % of code review comments are related to such common issues. • Machine learning → Supervised learning; Neural networks • Bacchelli and Bird [6] performed an empirical analysis to see the motivation behind the code review performed by Permission to make digital or hard copies of part or all of this work for personal or classroom use is granted without fee provided that copies are reviewers. They found that even with strong motivation to not made or distributed for profit or commercial advantage and that copies finding defect (bugs or functional issues in code), reviewers bear this notice and the full citation on the first page. Copyrights for third- party components of this work must be honored. For all other uses, contact tend to focus on reviews which are mostly related to obvious the owner/author(s). bugs, or best practices. This makes code reviews less effective KDD’18 Deep Learning Day, August 2018, London, UK © 2018 Copyright held by the owner/author(s). ACM ISBN 978-x-xxxx-xxxx-x/YY/MM. 1 https://en.wikipedia.org/wiki/Static_program_analysis https://doi.org/10.1145/nnnnnnn.nnnnnnn KDD’18 Deep Learning Day, August 2018, London, UK A. Gupta et al. because reviewers are distracted by common issues, and they evaluate overall performance of DCR. Finally, we will focus less on important aspects such as defects, architectural conclude with discussions and future direction for this work. issues, and testing for code. To address challenges mentioned above, we developed an adaptive, scalable, and easy to configure automatic code 2 BACKGROUND AND RELATED WORK analysis system called DeepCodeReviewer (DCR). The system can automatically review code for common issues so that a 2.1 Background on peer reviews developer can proactively correct the code, and reviewers can perform code reviews focused towards finding defects. DCR Peer or code review is considered a highly recommended makes use of deep neural networks to automatically learn practice in software engineering [8]. It is widely acceptable code analyses corresponding to the human reviews given to both in industry and open-source software (OSS) systems as a code snippets in historical peer reviews. It uses Long Short process for early detection and reduction of software defects. Term Memory (LSTM) networks [7] to understand source Fagan [9] formalized a highly structured process for code code snippets and reviews, and learns to apply relevant reviewing based on line-by-line group reviews, done in review to a code snippet. This makes our system: 1. Flexible, extended meetings for code inspection. This was effective but as its code analyses can generalize to new variations of an was time consuming and a heavyweight process. In recent issue; 2. Easy to configure, as it learns to prioritize its analyses years organizations and OSS use a lightweight code review from a project or organization’s historical code reviews; and 3. process with less formal requirements along with supporting Adaptive, as it just needs historical code reviews for a specific tools to perform code review. Some examples of tools used in coding language. industry are Google’s Mondrian [10], Facebook’s 3 Phabricator[11] and the open-source Gerrit initiative. Git (code,review) pairs Our code review system is based on Pull requests(PRs) and Repositories are very similar to Github’s PR review system4. A PR asks Crawl Historical Code and review Training data peer preprocessing generation collaborators5 of a project to review or vote code changes reviews associated with a bug fix or a new feature request in a Review clustering Relevant, software product. Collaborators then review the submitted Multi-Encoder deep Model Non- learning model Training relevant code change to make sure that it is free of defects. If they find Vectorized pairs (code,review) Training phase (code,review) pairs any, they leave a comment explaining the defect that they have Production phase found. The creator of the PR then adds follow-up code changes Repository of New common reviews pullrequest related to the review comment. Once all the collaborators and Review with Code Review candidate (code, candidate Multi-Encoder deep maximum the creator are happy with the changes, the PR is then merged selection review) pairs learning model model to the master code repository or mainline. To train DCR, we confidence used historical PRs from our internal code repository and Figure 1 Overall architecture of DeepCodeReviewer with management system. two main phases: training phase processes historical peer reviews and trains a deep learning code review model; production phase makes use of trained model to perform 2.2 Related work code analysis and apply relevant review. Most of the work related to automating the process of code review is centered around static analysis of code[12]. Static Figure 1 describes DCR in action. For a new code snippet, analysis tools (commonly called linters) aims to examine the DCR finds most relevant review/s from a repository of text of a program statically, without attempting to execute it. common reviews generated using historical peer reviews. For They commonly work on source code representations i.e. scalability, it first finds a set of candidate reviews from abstract syntax tree, or some form of object code. These repository and then it makes use of a Deep learning model to analyses are shown in IDEs and usually consist of suggestions find most relevant review/s for a code snippet. For this work, related to design, security, performance improvement, style, we trained DCR for peer reviews in C# language projects. We and code readability. They make use of rules and allow end collected historical data from internal corporate git user to add any specific rules related to his/her project or repositories. In the following section, we present related team guidelines. For C#, Microsoft .NET Framework has two work for automatic code reviews, and background of code static analysis tools: 1. FxCop6; 2. StyleCop7. reviews using Git PRs2. Then we will explain in detail all the components of DCR. We will then discuss the evaluation of our 3 Gerrit: http://en.wikipedia.org/wiki/Gerrit_(software) proposed deep learning model, and results from user study to 4 https://github.com 5 Collaborators are developers working on a project. One or more collaborators are usually added to a PR as reviewers.
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]
  • 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 .
    [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]