All Projects → hypertherm → DotNet.SystemCollections.Analyzers

hypertherm / DotNet.SystemCollections.Analyzers

Licence: MIT license
A set of code analyzers & code fix providers to help developers use the proper .NET Collection & API in their algorithms

Programming Languages

C#
18002 projects
powershell
5483 projects

Projects that are alternatives of or similar to DotNet.SystemCollections.Analyzers

Roslyn Security Guard
Roslyn analyzers that aim to help security audit on .NET applications.
Stars: ✭ 214 (+197.22%)
Mutual labels:  roslyn, code-analysis
Enhanced Syntax Highlighting
[Marketplace] Lightweight "editor classifier extension" for Visual Studio based on the async Roslyn APIs to enhanced highlighting custom tags in C# code.
Stars: ✭ 69 (-4.17%)
Mutual labels:  roslyn, code-analysis
geneal
A genetic algorithm implementation in python
Stars: ✭ 47 (-34.72%)
Mutual labels:  optimization
Joint-User-Association-and-In-band-Backhaul-Scheduling-and-in-5G-mmWave-Networks
Matlab Simulation for T. K. Vu, M. Bennis, S. Samarakoon, M. Debbah and M. Latva-aho, "Joint In-Band Backhauling and Interference Mitigation in 5G Heterogeneous Networks," European Wireless 2016; 22th European Wireless Conference, Oulu, Finland, 2016, pp. 1-6. URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7499273&isnumber=7499250
Stars: ✭ 36 (-50%)
Mutual labels:  optimization
gams.jl
A MathOptInterface Optimizer to solve JuMP models using GAMS
Stars: ✭ 27 (-62.5%)
Mutual labels:  optimization
LBFGS-Lite
LBFGS-Lite: A header-only L-BFGS unconstrained optimizer.
Stars: ✭ 98 (+36.11%)
Mutual labels:  optimization
optimization
Routing optimization module module for Itinero.
Stars: ✭ 47 (-34.72%)
Mutual labels:  optimization
ncc
Neural Code Comprehension: A Learnable Representation of Code Semantics
Stars: ✭ 162 (+125%)
Mutual labels:  code-analysis
RazorHtmlMinifier.Mvc5
↘️ Trivial compile-time Razor HTML Minifier for ASP.NET MVC 5.
Stars: ✭ 31 (-56.94%)
Mutual labels:  optimization
vrpy
A python framework for solving the VRP and its variants with column generation.
Stars: ✭ 94 (+30.56%)
Mutual labels:  optimization
osprey
🦅Hyperparameter optimization for machine learning pipelines 🦅
Stars: ✭ 71 (-1.39%)
Mutual labels:  optimization
cookiecutter-cpp-project
A cookiecutter for a C++ Project with lots of configuration options
Stars: ✭ 25 (-65.28%)
Mutual labels:  code-analysis
mysql tuning-cookbook
Chef cookbook to create MySQL configuraiton files better suited for your system.
Stars: ✭ 23 (-68.06%)
Mutual labels:  optimization
structural-imbalance
Demo for analyzing the structural imbalance on a signed social network.
Stars: ✭ 22 (-69.44%)
Mutual labels:  optimization
decrypticon
Java-layer Android Malware Simplifier
Stars: ✭ 17 (-76.39%)
Mutual labels:  optimization
spinw
SpinW Matlab library for spin wave calculation
Stars: ✭ 25 (-65.28%)
Mutual labels:  optimization
ProxSDP.jl
Semidefinite programming optimization solver
Stars: ✭ 69 (-4.17%)
Mutual labels:  optimization
optimum
🏎️ Accelerate training and inference of 🤗 Transformers with easy to use hardware optimization tools
Stars: ✭ 567 (+687.5%)
Mutual labels:  optimization
RcppNumerical
Rcpp Integration for Numerical Computing Libraries
Stars: ✭ 52 (-27.78%)
Mutual labels:  optimization
okama
Investment portfolio and stocks analyzing tools for Python with free historical data
Stars: ✭ 87 (+20.83%)
Mutual labels:  optimization

About the project

License: MIT Contributions welcome PRs Welcome

Code validation for

Basic Overview

This repository is dedicated to common performance and code quality analyzers to follow the best practices surrounding the use of data structures and their APIs located under System.Collections & System.Linq.

Disclaimer

This project was developed as an internal hackathon project as a proof of concept and depicts the idea. It’s still a prototype and using it could give you false positives. Moreover, the ruleset in the library hasn't been finalized and is subject to change. We're still working on these ideas to make sure they are accurate and reflect the best development practices in .NET. We welcome and encourage contributions on those ideas. For those interested in helping us that way, please read the contribution guidelines for the project.

Nonetheless, it could provide useful insights to the developers. You can either consult the project’s roadmap or subscribe to the project’s notifications to know when the project will move outside of its prototype phase.

Table of Content

DotNet.SystemCollections.Analyzers

What is Roslyn

From Microsoft Docs

The core mission of the .NET Compiler Platform ("Roslyn") is opening up the C# and Visual Basic compilers and allowing tools and developers to share in the rich information compilers have about programs. Code analysis tools improve code quality, and code generators aid in application construction. As tools get smarter, they need access to more and more of the deep code knowledge that only compilers possess.

Library Introduction

An analyzer library for C# and VB.NET empowered by Roslyn to help .NET developers to harness the full capabilities and performance of the CLR. The set of analyzers will analyze your code for quality, performance and maintainability.

Why should you use it in your .NET projects

There are many code analysis libraries for .NET, but they do not focus on how we should use data structures such as an List<T>. Using a framework like .NET makes it easier for software developers to create an impact on their business and solve problems for their customers. The problem is that even though you can use a list everywhere just because you're used to its APIs doesn't mean you should. Each data structure is built to serve a different purpose and knowing when to use each one within an algorithm could make a considerable difference in performance in the hot paths.

Goals

The purpose of this library is to empower the software developers using .NET and enable them to leverage the best practices which sometimes could make a difference from quality or performance point of view. The goal is to pinpoint the issues concerning the usage of types found in System.Collections such as IEnumerable<T> or extension methods found in System.Linq. This tool is here to help developers make better performance decisions through a set of micro-optimizations.

Ruleset

Code Analysis Examples

  • Suggesting, for instance, using an HashSet<T> whenever a developer is doing a heavy Contains check on their List<T>.

  • Suggesting using a for-loop when iterating on a collection that allows random access such as IList<T>.

  • Suggesting using a separate method to yield values lazily instead of taking the time to create a temporary list.

More details

See the ruleset file for details.

Installation

Usage

Requirements to use:

  • Recommended version of Visual Studio: Visual Studio 2015
  • Minimal NET Framework supported: 4.6+
  • Minimal .NET Core : 1.0

You can download the NuGet Package from here

Development

Requirements to build the solution:

  • Recommended version of Visual Studio: Visual Studio 2017 version 15.3
  • Minimal NET Framework supported: 4.6+
  • Minimal .NET Core : 1.0

Installing the package from the Package Manager: Install-Package DotNet.SystemCollections.Analyzers

Treating warnings as compiling errors

Each project in Visual Studio has a "treat warnings as errors" option. If you wish to treat the warnings given by the analyzers as errors:

  1. Right-click on your project, select "Properties".

  2. Click "Build".

  3. Update your warning settings in Visual Studio by either

    1. Switching "Treat warnings as errors" from "Specific warnings" or "None" to "All"

    2. Add specific warnings from the library as errors.

Contributing

Please note that we have a code of conduct. Please follow it in all your interactions with this project.

See the contributing file for more details.

Release Notes

See the release-notes file for details.

Roadmap

See the road map file for details.

License

This project is licensed under the MIT License - see the license file for details

About Robotmaster

Hypertherm's Robotic Software team develops Robotmaster, the world’s leading CAD/CAM robot programming software, used by some of the largest multinationals such as Boeing and Mercedes and the smallest industrial manufacturing shops performing short customized runs. To know more about Robotmaster, please visit our website.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].