Tools for the programming mid-semester projects

Similar documents
EDA Spring, Project Guidelines

USER GUIDE. MADCAP FLARE 2017 r3. Source Control: Git

Tips on how to set up a GitHub account:

LPF Training Handbook!

USER GUIDE MADCAP LINGO Source Control: Git

Getting started with GitHub

KTH Royal Institute of Technology SEMINAR 2-29 March Simone Stefani -

Version Control. Second level Third level Fourth level Fifth level. - Software Development Project. January 17, 2018

Getting the files for the first time...2. Making Changes, Commiting them and Pull Requests:...5. Update your repository from the upstream master...

Lab 01 How to Survive & Introduction to Git. Web Programming DataLab, CS, NTHU

Software configuration management

Git and GitHub. Dan Wysocki. February 12, Dan Wysocki Git and GitHub February 12, / 48

Version Control. Second level Third level Fourth level Fifth level. - Software Development Project. January 11, 2017

Revision control. INF5750/ Lecture 2 (Part I)

Revision Control. An Introduction Using Git 1/15

Git better. Collaborative project management using Git and GitHub. Matteo Sostero March 13, Sant Anna School of Advanced Studies

Version Control. Version Control

Table of Contents. Concepts

Version Control. Version Control

Visualizing Git Workflows. A visual guide to 539 workflows

Revision Control and GIT

GIT TUTORIAL. Creative Software Architectures for Collaborative Projects CS 130 Donald J. Patterson

Version Control System GIT

History...: Displays a window of Gitk, a standard commit viewer for Git.

What is git? Distributed Version Control System (VCS); Created by Linus Torvalds, to help with Linux development;

Version Control with Git ME 461 Fall 2018


Tutorial 2 GitHub Tutorial

Version control system (VCS)

CSC 2700: Scientific Computing

Github/Git Primer. Tyler Hague

Review Version Control Concepts

The Old World. Have you ever had to collaborate on a project by

Apache Subversion Tutorial

Lab 08. Command Line and Git

API RI. Application Programming Interface Reference Implementation. Policies and Procedures Discussion

Distributed Version Control

Using GitHub and SourceTree to work with DITA TC repositories

Git tutorial. Katie Osterried C2SM. October 22, 2015

Beyond git add/commit/push

Object Oriented Programming. Week 1 Part 2 Git and egit

GETTING TO KNOW GIT: PART II JUSTIN ELLIOTT PENN STATE UNIVERSITY

Version Control Systems

Software Revision Control for MASS. Git Installation / Configuration / Use

Version control CSE 403

Git for Newbies. ComMouse Dongyue Studio

TUTORIALS. version

DOCUMENTUM D2. User Guide

Git: Distributed Version Control

JetBrains TeamCity Comparison

Source Control: Perforce

Version Control Systems (VCS)

CSCI 2132: Software Development. Norbert Zeh. Faculty of Computer Science Dalhousie University. Subversion (and Git) Winter 2019

Documentation External Synchronization FirstSpirit

Continuous integration & continuous delivery. COSC345 Software Engineering

Git for Version Control

Lab 1 1 Due Wed., 2 Sept. 2015

CSE 332: Data Structures and Parallelism Winter 2019 Setting Up Your CSE 332 Environment

Gitlab Setup/Usage by Yifeng Zhu modified by Vince Weaver 30 January 2019

Fig 1.0 Hepforge Account Registration. To login to your new account proceed to the following address:

Git Workflows. Sylvain Bouveret, Grégory Mounié, Matthieu Moy

Version Control System - Git. zswu

School of Computing Science Gitlab Platform - User Notes

Git. CSCI 5828: Foundations of Software Engineering Lecture 02a 08/27/2015

USING GIT FOR AUTOMATION AND COLLABORATION JUSTIN ELLIOTT - MATT HANSEN PENN STATE UNIVERSITY

Source Control Guide: Microsoft Team Foundation Server

Source Control: Subversion

EUSurvey Installation Guide

Windows. Everywhere else

git and the virtue of version control ECE /2/2015

Introduction. Martin Ledvinka. Winter Term 2018

How To Use Git. Advanced: Tags & Branches. Mary Kate Trost July 8, 2011

Welcome! Virtual tutorial starts at 15:00 GMT. Please leave feedback afterwards at:

A short tutorial on Git. Servesh Muralidharan 4 March 2014

Revision Control. How can 4. Slides #4 CMPT 276 Dr. B. Fraser. Local Topology Simplified. Git Basics. Revision Control:

Branching and Merging

Continuous Integration with Selenium and Jenkins

Version control with Git.

:59:32 PM PST

A Brief Introduction to Git. Sylverie Herbert (based on slides by Hautahi Kingi)

CVS. Computer Science and Engineering College of Engineering The Ohio State University. Lecture 21

Git version control with Eclipse (EGit) Tutorial

CSE 391 Lecture 9. Version control with Git

Git AN INTRODUCTION. Introduction to Git as a version control system: concepts, main features and practical aspects.

Human-Computer Interaction Design

Source Control: Perforce

Versioning with git. Moritz August Git/Bash/Python-Course for MPE. Moritz August Versioning with Git

Lab Objective. Lab Assignment. Downloads and Installation

Red Hat JBoss Developer Studio 10.3 Getting Started with JBoss Developer Studio Tools

Improving Your Life With Git

MOOSE-Based Application Development on GitLab

Using GitHub to Share with SparkFun a

Git Tutorial. André Sailer. ILD Technical Meeting April 24, 2017 CERN-EP-LCD. ILD Technical Meeting, Apr 24, 2017 A. Sailer: Git Tutorial 1/36

Tizen/Artik IoT Practice Part 4 Open Source Development

GIT FOR SYSTEM ADMINS JUSTIN ELLIOTT PENN STATE UNIVERSITY

Git: Distributed Version Control

CSE 331 Software Design & Implementation

Topics covered. Introduction to Git Git workflows Git key concepts Hands on session Branching models. Git 2

A BASIC UNDERSTANDING OF VERSION CONTROL

FEEG Applied Programming 3 - Version Control and Git II

Transcription:

Contents GIT Quickstart 2 Teamwork 14 StyleCop Quickstart 14 Usage in VS2015 15 Usage in older VS versions 15 DoxyGen Quickstart 17 XML documentations 18 Doxygen 18 Please keep in mind that the remaining parts of this documentation are just for help to fulfill the requirements stated above, and they may not contain all the necessary information. You can find further info on the internet (git/stylecop/doxygen official help pages, google). Some links can be found in the various parts of this documentation. 2017-02-16 page 1

GIT QUICKSTART Git is a distributed version control/source control system that allows us to centrally manage our source code and the changes to this source code (record everything: which file was modified when and how and by whom). This is achieved by not storing every state (every version) of every file, but instead only the difference/increment between file revisions. The distributed nature of Git is shown if we compare it with other traditional source control systems (SVN, CVS): in Git, the changes of the source code are not only stored in a central storage, but also in a local storage as well. According to this, in Git, we have to differentiate between the local repository and the remote repository. The third storage is the local current state of the development files, this is the working copy. The basic Git operations are listed in this table: ADD COMMIT PUSH FETCH MERGE Add files from the woking copy to the source control / add modified files into the list of files affected by the next commit Store the modifications (content changes, ADD, file deletion) of the working copy into the local repository Upload the commits of the local repository into the remote repository Download the commits of the remote repository into the local repository, without changing the working copy Merging branches (e.g. after a FETCH, there are two branches in the local repository: our own development branch and the branch downloaded from the remote repository). If there is contradiction (CONFLICT) between the branches (different modifications to the same file), then we have to fix these conflicts manually. In addition to this, the BRANCH / CHECKOUT commands can be used to create new branches, every branch is a separated version of the code, and also very often every new feature is implemented in its own branch (see "A successful git branching model", nvie.com; THIS IS NOT REQUIRED FOR US) PULL FETCH + MERGE A typical development cycle looks like the following: 1. At the start of the day, the developer downloads the earlier modifications of the remote repository using a PULL command; into the local repository 2. The occasional conflicts have to be solved manually 2017-02-16 page 2

3. Work starts on a new feature / bugfix (the new feature usually goes with the creation of a new branch) 4. At the end of a single work-process the modifications are stored with a COMMIT command (this can even be one commit per file, but it can be 10 files, depending on the definition of one work-item. Basically the principle is to work with multiple small commits, and descriptive commit messages. The basic rule is that one commit fixes only one thing / adds only one feature to the code: If you have to put the word "and" or "also" in your summary, you need to split it up, this is the golden rule). 5. At the end of the day / at the end of the feature or bugfix, once again PULL, and the conflicts have to be solved manually 6. PUSH, and we can move on to the next ticket/work-item/bugfix/feature Using git with Visual Studio 1. The suggested Git serverside system, that we will use in this semester: bitbucket.org. For us, the website at github.com would be good too, but there every project must be public, only paid projects can be private. In addition to this, any private Gitlab installation could be used the same way, but for the university projects, we have to use bitbucket. 2. Bitbucket registration, activation, login, then we can create our repository: https://bitbucket.org/repo/create. Issue tracking is advised, but not required. 2017-02-16 page 3

3. After creating the project, we get to the Repository setup page, where we have to click on the I m starting from scratch link, where we can see the Git address of the repository: https://anoftc@bitbucket.org/anoftc/nik_test.git 4. In Visual Studio: Tools/Options/Source control/plug-in selection: Git should be selected. With VS 2013+ this is installed by default, with VS2012: https://visualstudiogallery.msdn.microsoft.com/abafc7d6-dcaa-40f4-8a5e-d6724b db980c 5. When saving the solution (or even when creating it) we have to tick the Add to source control checkbox. In this document, we will always work inside this WPF application. 2017-02-16 page 4

6. In View/Team Explorer, choose the Settings menuitem: 7. After this, Git settings. Here we will specify the data stored in the Git commits. It is suggested (but not required) to use the same email address as in our Bitbucket registration. 8. After this, <Update> button, then Changes menuitem: Here we can store the changes in the repository. 2017-02-16 page 5

9. After specifying the (obligatory) commit message, we can click on the <Commit> button, this stores (COMMITs) the modifications in the local repository: 10. Near <Commit>, we can execute two other actions: Commit = Store in local repository Commit and Push = After commit, store in the remote repository (PUSH) Commit and Sync = After commit, download and merge the remote repository (PULL), and then PUSH If we only press the <Commit> button, then the VS will warn us that it only changed the local repository (in VS2015 this first commit step might not be required, if the VS already stored the first commit automatically): 2017-02-16 page 6

11. When pressing Sync, the following window appears where we have to specify the Bitbucket repository address: 12. After <Publish>, we are asked to enter our Bitbucket user name and password. After this, we can see the successful PUSH, and we can see the repository page updated at bitbucket.org: 2017-02-16 page 7

13. Changes can come from two locations: from our own VS version or from external sources (other developers or even from the bitbucket.org web interface). After an external modification, our local repository has to be updated (PULL) before uploading our modifications (PUSH); if the local modification and the external modification affects the same file (there is a CONFLICT) then we have to resolve it manually, with great care. 14. Now we simulate an external modification: modify our repository using the Bitbucket webpage! Let s add a README file ( Create a README ), as it is suggested by the webpage, such a file is advised to be present in the repository. The commit message comes automatically: 2017-02-16 page 8

15. After this, in Visual Studio we have the possibility to use SYNC or PULL lehetőségek or FETCH: the operation FETCH will not change the local working copy, only the state of the remote repository will be downloaded. We will not really use this option, in most of the cases, we will use SYNC (of course, if there is a CONFLICT, we are better off with FETCH after it we can examine the cause of the error and after fixing manually, we can to the SYNC). 16. Now we will simulate a modification from Visual Studio. We add a button and a Click event handler. In the Solution Explorer, small icons signal the status of the files (https://msdn.microsoft.com/en-us/library/ms181372%28v=vs.90%29.aspx) 2017-02-16 page 9

17. After this, using the Team Explorer window and the Changes menuitem, we can COMMIT 18. Another modification (this time, only in the event handler), another COMMIT: 2017-02-16 page 10

19. After this, we can now SYNC, and we can see the COMMIT history on the web: 2017-02-16 page 11

2017-02-16 page 12

20. In the left-hand side menu, by clicking on the Settings menuitem, and then on the Access Management sub-menuitem, we can grant permissions to other users. Students are expected to give ADMIN permission to the practice teacher. This document only shows the basic Git operations. The strength of the truly good version control systems (GIT, TFS) is that they are capable of handling multiple code sections (BRANCHes) and also they are capable of effectively handling the separation and the unification (FORK, MERGE) of these branches. From the students, the handling of branches is not expected, but in a typical company environment, only the experienced senior programmers have MERGE permission to the main (master) branch, every other developer works on his/her own developer branch. 2017-02-16 page 13

Other resources: https://en.wikipedia.org/wiki/version_control https://en.wikipedia.org/wiki/git http://blog.osteele.com/posts/2008/05/my-git-workflow/ http://nvie.com/posts/a-successful-git-branching-model/ https://tanarurkerem.hu/git-suli/ SourceTree (GIT GUI) Tortoise GIT (GIT GUI) https://confluence.atlassian.com/bitbucketserver/basic-git-commands-776 639767.html (basic GIT commands: Team Explorer / Changes / Actions / Open Command Prompt) TEAMWORK The creation of the project is now divided into two parts: 1. One team member creates the common GIT repository with the common VS solution with one project, basically following the description above. Also, you can follow this video (focus on the part before 2:34): https://docs.microsoft.com/en-us/vsts/git/tutorial/creatingrepo?tabs=visual-studio 2. The other team members should clone the repository. They should follow this tutorial, or the video from 2:34: https://docs.microsoft.com/en-us/vsts/git/tutorial/clone?tabs=visual-studio The following activities will be used by all team members: https://docs.microsoft.com/en-us/vsts/git/tutorial/commits?tabs=visual-studio https://docs.microsoft.com/en-us/vsts/git/tutorial/branches?tabs=visual-studio https://docs.microsoft.com/en-us/vsts/git/tutorial/pushing?tabs=visual-studio https://docs.microsoft.com/en-us/vsts/git/tutorial/pulling?tabs=visual-studio https://docs.microsoft.com/en-us/vsts/git/tutorial/merging?tabs=visual-studio https://docs.microsoft.com/en-us/vsts/git/tutorial/undo?tabs=visual-studio This example shows a good branch structure (this can be simplified in our case, the usage of the dev+master branches are obligatory, the usage of feature branches are recommended): http://nvie.com/posts/a-successful-git-branching-model/ 2017-02-16 page 14

STYLECOP QUICKSTART StyleCop is a VS plug-in that can help us in finding the styling / documentation errors in our source code. USAGE IN VS2015 As a part of VS2015 the.net Compiler Platform, or on its better known codename, Roslyn became available to the public. This is a toolset that contains opensource C# and VB compilers and code analysis APIs. With the appearance of Roslyn, all the previously used code analysis tools (among them VS builtin FXCop and StyleCop) needed to be migrated to this new system. The best StyleCop version that already uses the new system is StyleCop.Analyzers which can be found on NUGet (installation: Tools / NUGet Package Manager / Manage NUGet Packages for Solution. Search for StyleCop.Analyers on Browse tab, select it, and then in the newly appearing window on the right select your project, and then press install.) After installation set up the ruleset to use: 1: Add oenik.ruleset to the project: Right click on project > Add existing item > All files (*.*) > browse for oenik.ruleset 2: Activate the ruleset: right click on oenik.ruleset, and Set As Active Ruleset. StyleCop (and Studio-builtin FXCop) errors appear as standard warnings in the project after running the code analysis (project right click > Analyze > Run Code Analysis on Solution). After fixing some issues, the analysis can be re-run again like this. In every code analysis tool errors can be suppressed in case we do not want to fix them. Suppression of errors is not allowed in the project, except only one file: the auto-generated AssemblyInfo.cs (prepend the following line at the start of the file): // <auto-generated/> Take special care not to use Analyze > Run Code Analysis and Suppress Active Issues! USAGE IN OLDER VS VERSIONS (The aim is to use the same code-style and rules as with the oenik.ruleset in the newer Visual Studio versions) Installation: through the VS Gallery (Tools / Extensions and Updates) or rather via the official page: https://stylecop.codeplex.com/ (the VS gallery package is handled by someone else, and it is always a few versions behind the official). The installer is easily executed using the next-next-next method. 2017-02-16 page 15

After restarting VS and opening the C# project, by right clicking on the project, we must see menuitems Run StyleCop and Run StyleCop (Rescan All), these execute the StyleCop analysis on the project. Let s click on Run Stylecop (Rescan All) then on StyleCop settings t then simply click on <OK> to save the settings file. As a result, files StyleCop.Cache and Settings.StyleCop should appear in the project directory. StyleCop errors are shown as compile warnings in VS; when following the steps, execute Run StyleCop (Rescan All) after every step, we will see the number of warnings clearly decreasing. 2017-02-16 page 16

2017-02-16 page 17

DOXYGEN QUICKSTART In addition to the manually written documentation and diagrams, an important part of the developer documentation is the automatically generated documents (using the source code). One of the tools for this task is the DoxyGen: http://www.stack.nl/~dimitri/doxygen/download.html XML DOCUMENTATIONS All the public parts of the source code (including classes, methods, variables, properties, events and everything else) must be documented with XML documentation. Also all documentation must be added that is requested by the StyleCop ruleset. For the texts, English language must be used, however we will not accept automatically generated english-like texts created by Resharper and other similar programs projects that are handed in containing documentation like that will count as non-documented (e.g. not handed in). The format of XML documentation is as follows: /// <summary> /// Moves the current shape, if possible. /// </summary> /// <param name=" x "> x component of movement vector </param> /// <param name=" y "> y component of movement vector </param> public void Move( int x, int y) { // } If /// is typed over a finished method or class, Visual Studio will add the necessary template for this, which then just needs to be filled in. The completed XML documentation will appear in Intellisense which could help while writing code. DOXYGEN Download the windows installer and do a full install. After, start the component called Doxywizard that helps with the necessary settings. Working directory: leave this line empty. Project name: any name for the project. Source code directory: the directory that contains the.sln file for the project. Scan recursively: yes Destination directory: create a new directory called Doxygen in the directory that contains the.sln file. <Next> Include cross-referenced source code: yes 2017-02-16 page 18

Optimize for Java or C# output <Next> LaTex: no (html tickbox stays ticked). After some additional Next s press Run doxygen. Check if the documentation has been generated correctly starting at index.html: the documentation should contain the XML documentation for the public classes and methods. 2017-02-16 page 19

The main advantages of the DoxyGen are that it is open source, and it supports nearly all programming languages. It is much more customizable, however, the zillion of configuration parameters are hard to follow, and it is hard to wire all components together. In addition to this, it cannot be integrated into the VS. A good alternative might be SandCastle, but in a real development project the software used for generating documentation is very likely already given. 2017-02-16 page 20