Category: Code Query
Articles on the code querying process using NDepend, and a collection of reports when we use NDepend to query code bases.
.NET Core 3.0 New APIs
.NET Core 3.0 has just been released, see here the official announcement. In this post we’re going to explain how to list and explore the new APIs introduced since .NET...
SOLID Design: The Dependency Inversion Principle (DIP)
After having covered the Open-Close Principle (OCP), the Liskov Substitution Principle (LSP), the Single Responsibility Principle (SRP) and the Interface Segregation Principle (ISP) let’s talk about the Dependency Inversion Principle (DIP)...
SOLID Design: The Interface Segregation Principle (ISP)
After having covered The Open-Close Principle (OCP), The Liskov Substitution Principle (LSP) and the Single Responsibility Principle (SRP) let’s talk about the Interface Segregation Principle (ISP) which is the I...
Are SOLID principles Cargo Cult?
My last post about SOLID Design: The Single Responsibility Principle (SRP) generated some discussion on reddit. The discussion originated from a remark considering SOLID principles as a Cargo Cult. Taking...
Exploring .NET Core 3.0 new API
.NET Core 3.0 is representing a major step for the .NET community. It is interesting to analyze what’s new in the API directly from the compiled bits. In this post...
Advanced Code Search : A Case Study
This morning I stumbled on a complex test to write. The need was to create and show a custom Form (written with Windows Form) that relies on the System.ComponentModel.BackgroundWorker to do...
Quickly assess your .NET code compliance with .NET Standard
Yesterday evening I had an interesting discussion about the feasibility of migrating parts of the NDepend code to .NET Standard to ultimately run it on .NET Core. We’re not yet...
A problem with extension methods
We like extension methods. When named accordingly they can both make the caller code clearer, and isolate static methods from classes on which they operate. But when using extension methods,...
Static analysis of .NET Core 2.0 applications
NDepend v2017.3 has just been released with major improvements. One of the most requested features, now available, is the support for analyzing .NET Core 2.0 and .NET Standard 2.0 projects. .NET...
Our experience with using third-party libraries
NDepend is a tool that helps .NET developers write beautiful code. The project was started in April 2004. It is now used by more than 6 000 companies worldwide. In...
Exploring the Technical Debt In Your Codebase
Recently, I posted about how the new version of NDepend lets you compute tech debt. In that post, I learned that I had earned a “B” out of the box....
Managing Code Analysis Statistics with the NDepend API
If you’re familiar with NDepend, you’re probably familiar with the Visual Studio plugin, the out of the box metrics, the excellent visualization tools, and the iconic Zone of Uselessness/Zone of...
4 Ways Custom Code Metrics Improve A Development Team
One of the things that has surprised me over the years is how infrequently people take advantage of custom code metrics. I say this not from the perspective of a...
The Power of CQLinq for Developers
I can still remember my reaction to Linq when I was first exposed to it. And I mean my very first reaction. You’d think, as a connoisseur of the programming profession,...
The Better Code Book – Our MVPs of 2015
We firmly believe spaghetti belongs on the dinner table and not in code. Our mission when starting NDepend was to create a tool to make best coding practices easier to...
With Code Metrics, Trends are King
Here’s a scene that’s familiar to any software developer. You sit down to work with the source code of a new team or project for the first time, pull the...
The Most Important Code Metrics You’ve Never Heard Of
Oh, how I hope you don’t measure developer productivity by lines of code. As Bill Gates once ably put it, “measuring software productivity by lines of code is like measuring progress...
Let’s Build a Metric: Using CQLinq to Reason about Application State
I’ve been letting the experiments run for a bit before posting results so as to give all participants enough time to submit, if they so choose. So, I’ll refresh everyone’s...
Let’s Build a Metric: Incorporating Results and Exploring CQLinq
It turns out I was wrong in the last post, at least if the early returns from the second experiment are to be believed. Luckily, the scientific method allows for...
Toward Bug Free Software: Lines of Defense
Hurrah!! Last week we released NDepend v6 RTM. Once again we relied on a 2 months private beta-testing period and a one month Release Candidate period to do our best to release a polished...