360 likes | 458 Views
Rules to Healthier Code. Presented by Adam Cogan ( Chief Architect for www.ssw.com.au ). About. Chief Architect for www.ssw.com.au doing: internal corporate development and generic off-the-shelf databases Clients: Royal & Sun Alliance, Westbus, Microsoft…
E N D
Rules to Healthier Code Presented by Adam Cogan (Chief Architect for www.ssw.com.au)
About • Chief Architect for www.ssw.com.au doing: • internal corporate development and • generic off-the-shelf databases • Clients: Royal & Sun Alliance, Westbus, Microsoft… • President .NET User Group, Sydney • Speaker for Microsoft TechEd and Roadshows, Dev Conn, VSLive…. • Microsoft Regional Director, Australia… • AdamCogan@ssw.com.au
Agenda • Unit Testing • NUnit • Test Driven • Other Unit Tests • Code Analysis • Microsoft FxCop • SSW Code Auditor • Code Profiling • JetBrains dotTrace Profiler • Build Server • Cruise Control • The Future • Other Tools • Visual Studio Team System
What is Healthy code? What is Healthy Code anyway? Why is it Important? What about Documentation? Is your spec in bite-sized pieces? Does your spec have the 3 important things?
NUnit How many unit tests do you write…? www.nunit.org
When do you write Unit Tests? 100% unit tests is 100% impractical Unit tests should be written for: • Dependencies – e.g. DLLs Run time errors (JIT) • Dependencies – e.g. Database Schema, Datasets, Web Services • Fragile Code – e.g. Regular Expressions • When errors can be difficult to spot – e.g. Rounding, arithmetic, calculations • Performance – e.g. Slow forms • Don’t: • When the unit tests are bigger than the original (Insert) • Generated Code like Insert, Update, Delete Rules to Better Unit Testing http://www.ssw.com.au/ssw/standards/Rules/RulesToBetterUnitTests.aspx
Do you have ‘Run Unit Tests’ on your Help Menu? • http://www.ssw.com.au/ssw/Rules/RulesToBetterUnitTests.aspx#MenuUnitTests • A user should be able to run unit tests through an application. • This aids the developers quickly identify any problems with the application by running the unit tests.
Test Driven .NET • Do you run Unit Tests with the right click of your mouse? • Run unit tests from your right click menu http://www.testdriven.net/
What about other things? • Access Unit Tests • SSW Performance PRO (www.ssw.com.au/ssw/PerformancePRO) • FMS Total Access Analyzer (http://www.fmsinc.com/Products/analyzer/) • SQL Reporting Services Unit Tests • SSW Report Validator • Performance Unit Tests • MBUnit (http://mbunit.tigris.org) • Javascript Unit Tests • JsUnit (http://www.edwardh.com/jsunit/) • www.edwardh.com/jsunit/runner/tests/jsUnitTestFailures.html • And The Backend?
FxCop What is FxCop? Code analysis tool • for .NET managed code assemblies Checks: • Library design • Naming conventions • Performance • Security Don’t: • Globalization http://www.gotdotnet.com/team/fxcop/
SSW Code Auditor What is Code Auditor? • Maintains coding standards • Checks C# and VB.NET code • Prevents bad coding practices • Integration into Visual Studio www.ssw.com.au/ssw/CodeAuditor
SSW Code Auditor • Extensive rule set that is customizable • http://www.ssw.com.au/ssw/CodeAuditor/default.aspx#Rules
SSW Code Auditor • Produces an XML Report
JetBrains dotTrace Profiler • Measures the performance of ASP.NET or Windows Form Application • Quickly identify bottle necks through Hot Spots http://www.jetbrains.com/profiler/
Test Driven Process Q: What is VSS? A: It is not a file share • Check Out • Compile • Run Unit Tests • If it is OK then Start • Develop… Develop… Develop… • Run Unit Tests • If OK Check In • Get Latest • Run Unit Tests Again to confirm • http://www.ssw.com.au/SSW/Standards/Rules/RulesToBetterUnitTests.aspx#TestDrivenProcess • Want to poison the system – I smell a rat
Cruise Control What is Cruise Control? • Automated Continuous Integration server • Integration with a variety of Source Control systems • Integration with other external tools, such as NAnt and Visual Studio • Can build multiple projects on one server • Remote management and reporting • There is always one http://confluence.public.thoughtworks.org/display/CCNET/Welcome+to+CruiseControl.NET
Cruise Control Features: • Web Portal for build info • Tray icon notification
Visual Studio Team System Key Features: • Integration of: • Unit Testing • Code Coverage • Source Control • Code Analysis (FxCop) • Code Profiling http://lab.msdn.microsoft.com/teamsystem/
TeamCommunication QualityEarly & Often Design forOperations Platform For Innovation Developer Tester SolutionArchitect ProjectManager InfrastructureArchitect Overview
Visual Studio Team System • Integrated Unit Testing • Code coverage • See what code has been executed • Static code analysis • FxCop in the task list • Code profiling • Based on two internal profilers: • Sampling (Light weight) • Instrumented (Heavy duty) • Sequence view examines running threads • Caller-callee, callstack, and function views (there today) • Why was it built? To avoid the cat problem
Integrated Unit Testing Integrated Unit Testing
Load Testing Perf Counter integrationand monitoring
Conclusion • To achieve healthy code: • Unit Testing - NUnit • Code Analysis – FxCop and SSW Code Auditor • Build Server – Cruise Control .NET • Visual Studio Team System (everything is integrated) • The resources don’t hurt either! • http://www.ssw.com.au/ssw/Standards/DeveloperGeneral/netTools.aspx
Resources • SSW .NET Toolkit http://www.ssw.com.au/ssw/NetToolkit/ • SSW Code Auditor http://www.ssw.com.au/ssw/CodeAuditor/ • SSW Performance PRO http://www.ssw.com.au/ssw/PerformancePro/ • FMS Total Access Analyzer http://www.fmsinc.com/products/analyzer/ • NUnit http://www.nunit.org • MBUnit http://mbunit.tigris.org • Test Driven http://www.testdriven.net/
Resources • JetBrains dotTrace Profiler http://www.jetbrains.com/profiler/ • JsUnit http://www.edwardh.com/jsunit/ • FxCop http://www.gotdotnet.com/team/fxcop/ • Cruise Control .NEThttp://confluence.public.thoughtworks.org/display/CCNET/Welcome+to+CruiseControl.NET • Visual Studio Team System http://lab.msdn.microsoft.com/teamsystem/default.aspx
2 things AdamCogan@ssw.com.au