Static analysis is a way to analyze and assess your code base without the overhead of executing it and inspecting the results. NDepend is the most comprehensive tool for analyzing .NET code bases. This course introduces you to static analysis and then describes how to use NDepend to perform it, to understand your code in great detail and how to improve your code, your build, and your team.
Erik is a software architect, team leader and technologist that enjoys working with a wide variety of programming languages, frameworks and tools. An active blogger with extensive experience teaching and demonstrating software development techniques, he is always up for any conversation about technology.
Introduction To Static Analysis Hi, this is Erik Dietrich presenting on behalf of Pluralsight. Welcome to this course entitled Practical NDepend. This first module provides background on the concept of Static Code Analysis that is vital to understanding what NDepend does. The focus of this course is on doing Static Analysis with NDepend, but before we get to the specific tooling it's important to understand what Static Analysis is, in general. I will cover that in this module by going over the following topics. First, I'll talk about Static Analysis in broad terms, for definition purposes. Next, I'll talk about the idea of upfront Static Analysis vs. after the fact Inspection of results. I will also talk about the difference between Static and Dynamic Analysis of code bases. After that, I'll talk about the concept of Simple Code Source Parsing vs. Compile-Time Code Analysis. With the background in place, I will discuss the different types of Static Analysis that are performed and then, I'll give some examples of Static Analysis Metrics. Finally, I'll wrap up with a justification of why one should bother with Static Code Analysis at all. This course assumes that you are an intermediate level programmer or above and also that you are comfortable with the. NET Framework and. NET Programming. If you are a beginner, I would suggest looking through the Pluralsight Library for introductory programming courses, as well as the design patterns and solid principles libraries. All coding in this course will be done in C#, but NDepend is capable of working with any. NET language, so if you program in VB in Manage C++, you can still get plenty out of this course.
A Gentle Introduction To NDepend Hi, this is Erik Dietrich presenting on behalf of Pluralsight. Welcome to this course entitled Practical NDepend. The second module is an Introduction to the Basics of NDepend. This second module, builds on the introduction to static analysis by introducing NDepend itself. First, I'll do what you might expect with any introduction and provide some background and an overview of NDepend. Next, I'll talk about the specifics of the version that I'm using for the purpose of this course. With the backstory told, I'll show you how to install NDepend and then I'll talk about the different operational modes of the tool. Next up, I'll cover the NDepend start page and the dashboard for operating, and then I'll walk you through your first NDepend project. In order to have a code analysis project, you need to choose what you're going to be analyzing and then I'll take you through performing the actually analysis. Once analysis is complete, I'll go through some highlights of what it produces and finally, I'll provide some links to some NDepend documentation and tutorials.
Querying Your Code Base Hi, this is Erik Dietrich presenting on behalf of Pluralsight. Welcome to this course entitled Practical NDepend. This third module is all about the concept of Querying Your Code Base, using NDepend. This third module is all about using NDepend to query your code base. First I'll describe what I mean philosophically, by querying a code base. Then I'll talk about how yes, you can actually do that with NDepend. I'll then introduce the NDepend CQLinq construct by showing you how to write SQL style queries. And of course, where's there's SQL-style LINQ, there's Fluent interface LINQ, so I'll show you how to use that as well. Up next, is a demo where I'll show you actual examples of interacting with the code base using CQLinq. With an understanding of CQLinq in place, I'll show you some actual NDepend code rules that come out of the box and then I'll actually show you how you would go about creating your own code rules. Finally, I'll pull back a bit and discuss the importance and ramifications of querying your code.
Metrics in Depth Hi, this is Erick Dietrich presenting on behalf of Pluralsight. Welcome to this course entitled Practical NDepend. This fourth module is a deep dive into the concept code metrics. In this module, I'm going to go into a great deal of detail about the concept of code metrics and how they naturally arise from the concept of querying and the idea of rules that I discussed in the previous module. I'll start out talking about NDepend's Implementation of Code Metrics in general and then I'll talk about the significance of even Symbol Metrics. I will then discuss Stylistic metrics and the importance of consistency for reading code. Next up, I'll start up on more architectural metrics talking first about Inheritance Depth and then Cyclomatic Complexity. I'll talk about Coupling and Cohesion and then I'll cover Method and Type Rank. From there, I'll move onto Nesting Depth and Abstractedness and I'll round out the detailed coverage of metrics talking about Test Coverage. Then I'll switch gears a bit and do a demo of Defining My Own Hypothetical Code Metric. Finally, I'll talk philosophically about the importance this information.
Managing Dependencies Visually Hi, this is Erick Dietrich presenting on behalf of Pluralsight. Welcome to this course entitled Practical NDepend. This fifth module is dedicated to reviewing the visual aspects of code analysis, with NDepend. In this module, focusing on the visual features of NDepend, I will start by talking about the value of visualizing architecture. Then I'll demonstrate the graphs that NDepend provides. Next up, is the iconic NDepend Zone of Uselessness, Zone of Pain graphic for your project, followed by a demonstration of dependency and type matrices. After that, I'll briefly review the metric views Tree Map structure, that we saw in the last module and then I'll talk about searching your code with NDepend. Then I'll dive into CQLinq for Exploring dependencies. Finally, I'll briefly show you how to tweak some of the options for NDepend's visual displays and then I'll round out with help and further reading.
Additional NDepend Features Beyond The IDE Hi, this is Erick Dietrich presenting on behalf of Pluralsight. Welcome to this course entitled Practical NDepend. This sixth module addresses the components of NDepend that extend beyond the Visual Studio IDE. In this module, I will show you features beyond just using NDepend with in Visual Studio. First up, we'll take a look at Visual NDepend. Next, I'll show you the NDepend Console. After that, you'll get to see the NDepend Power Tools and then the NDepend API, including a demonstration of a sample usage of it.
High Quality Projects: The Full Value of NDepend Hi, this is Erick Dietrich presenting on behalf of Pluralsight. Welcome to this course entitled Practical NDepend. This seventh module talks about incorporating NDepend into the life cycle of your application. In this final module, I'll talk about how you can use NDepend to add value to and improve the quality of your projects, by going beyond just asking questions about your code. First, I'll talk about the idea of defining rules and quality "From Now" Next, I'll go over the idea of Code Diff and Code Base Snapshots. From there, I'll generalize to looking at Trends in Your code, over the course of time. I'll talk about how you can know immediately when you might be introducing Breaking Changes to your code and then I'll cover Advanced Analysis of Code Differences. From there I'll move on to talk about Generating NDepend Reports and then I'll talk about some Practical ways to Improve Your Build process. I'll then discuss philosophically how NDepend can Improve your Code and even your team and then I'll provide some Additional Resources and wrap up with a Summary.