Devops for Growth
107.5K views | +8 today
Follow
Devops for Growth
For Product Owners/Product Managers and Scrum Teams: Growth Hacking, Devops, Agile, Lean for IT, Lean Startup, customer centric, software quality...
Curated by Mickael Ruau
Your new post is loading...
Your new post is loading...

Popular Tags

Current selected tag: 'analyse de code'. Clear
Scooped by Mickael Ruau
Scoop.it!

Protect Your Code From Bugs - DZone Java

Protect Your Code From Bugs - DZone Java | Devops for Growth | Scoop.it
Developers often need various "assistants" — these include static code analyzers which can find and fix flawed code at the early stages of development.
Mickael Ruau's insight:

Summing Up the Results 

Of course, there are other analyzers, apart from the reviewed ones. There are both paid (Coverity, Klockwork, JArchitect, etc.) and free (Error Prone, Infer, Checkstyle, and so on). All of them are focused on one thing: to prevent flawed or potentially erroneous code from getting into production. I have no right to judge which of the analyzers is better for this task. But the analyzers developing data flow analysis and symbolic execution are more likely to find a real code bug.  

If you're choosing a static analyzer, pay attention to: 

  • an integration in various IDEs; 
  • an integration in build systems; 
  • the convenience of running the analyzer on a server; 
  • the ability to detect errors in code editing mode; 
  • the ability to conveniently work with warnings; 
  • orientation on SAST; 
  • the percentage of false positives; 
  • the configuration complexity.  

The combination of all pros and cons will lead you to the number of static analyzers that you will consider the best.  

No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Dockerizing Jenkins 2, Part 1: Declarative Build Pipeline With SonarQube Analysis - DZone DevOps

Dockerizing Jenkins 2, Part 1: Declarative Build Pipeline With SonarQube Analysis - DZone DevOps | Devops for Growth | Scoop.it
This tutorial demonstrates the automation of Jenkins plugin installation and configuration of Java and Maven tools on Docker, plus SonarQube analysis.
No comment yet.
Scooped by Mickael Ruau
Scoop.it!

SonarSource Blog » What makes Checkstyle, PMD, Findbugs and Macker complementary ?

There is often some misunderstanding when people talk about coding rules engines. Everyone tries to take position in favor of his preferred tool and does his best to explain what are the weaknesses of the other ones. For instance, a PMD supporter could say :



Checkstyle is a stupid tool consuming time to search for tab characters when PMD is a smart one that can do the job alone as a good soldier, Findbugs is very good for resource consumption and Macker is … uh, what is Macker ? “



Time to breathe ! There is in fact no need to take such position since those tools are not competing but are complementary and should be used simultaneously as it is the case in Sonar. Each of them is mainly targeting a certain type of coding rules : conventions (Checkstyle), bad practices (PMD) and potential bugs (FindBugs).

No comment yet.
Scooped by Mickael Ruau
Scoop.it!

checkstyle – Metrics

The NPATH metric computes the number of possible execution paths through a function(method). It takes into account the nesting of conditional statements and multi-part boolean expressions (A && B, C || D, E ? F :G and their combinations).
The NPATH metric was designed base on Cyclomatic complexity to avoid problem of Cyclomatic complexity metric like nesting level within a function(method).

Metric was described at "NPATH: a measure of execution pathcomplexity and its applications". If you need detailed description of algorithm, please read that article, it is well written and have number of examples and details.

Here is some quotes:

An NPATH threshold value of 200 has been established for a function. The value 200 is based on studies done at AT&T Bell Laboratories [1988 year].
Some of the most effective methods of reducing the NPATH value include
- distributing functionality,
- implementing multiple if statements as a switch statement
- creating a separate function for logical expressions with a high count of and (&&) and or (||) operators.

Although strategies to reduce the NPATH complexity of functions are important, care must be taken not to distort the logical clarity of the software by applying a strategy to reduce the complexity of functions. That is, there is a point of diminishing return beyond which a further attempt at reduction of complexity distorts the logical clarity of the system structure.

No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Indice de spécialisation

Cet indice augmente quand :

  • le nombre de méthodes redéfinies augmente,
  • la profondeur d'héritage augmente.

 

Il diminue quand :

  • le nombre de méthodes spécifiques à la classe augmente,
  • le nombre de méthodes redéfinies diminue.
Mickael Ruau's insight:

Cet indice peut-être considéré comme trop élevé lorsqu'il est supérieur à 1.5. Il faut alors penser à refactoriser en utilisant des interfaces. En effet, cela signifie souvent qu'un objet hérite d'un autre en redéfinissant beaucoup de ses méthodes : il utilise donc l'héritage alors qu'il s'agit d'un objet très spécialisé. L'utilisation des interfaces et de la délégation est plus appropriée, pour clarifier le code et éviter les problèmes de maintenance.

No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Mesure de la qualité du code source - Algorithmes et outils

Presentation d'algorithmes et d'outils couramment
utilisés pour l'analyse statistique de code source
No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Zoom sur... Sonar, pour automatiser la vérification de la qualité du code Java - Le blog de Clever Age

Zoom sur... Sonar, pour automatiser la vérification de la qualité du code Java - Le blog de Clever Age | Devops for Growth | Scoop.it
La qualité du code est souvent le parent pauvre des projets en entreprise et, pourtant, celle-ci a un impact sur la productivité. Sonar est le tableau de bord permettant de suivre l'évolution de la qualité des sources au fur et à mesure de la vie d'un projet.
Mickael Ruau's insight:

Sonar effectue un calcul de complexité du code permettant de déterminer la bonne disposition des instructions dans les classes Java. Cela permet de détecter les méthodes / les classes ayant une complexité forte aggravant la maintenance de l’application.

L’algorithme de calcul de la complexité est celui défini par Thomas McCabe, appelé complexité cyclomatique. Cet algorithme génère un graphe qui décrit tous les chemins possibles que peut prendre l’exécution du code. Plus le nombre de chemins est élevé, plus la complexité augmente.

Des méthodes ayant une mesure de complexité trop élevé seront susceptibles de réduire la possibilité de les maintenir et les comprendre correctement. La diminution de la complexité s’effectue alors en déportant des parties d’instructions dans de nouvelles méthodes ou classes.

No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Jenkins / SonarQube : l'intégration continue

Jenkins / SonarQube : l'intégration continue | Devops for Growth | Scoop.it
Travailler en équipe améliore la qualité du travail, mais peut générer des régressions. Comment utiliser Jenkins et SonarQube pour une intégration continue ?
No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Analyse du code de base de données pour en améliorer la qualité

Visual Studio 2010

 

 

Vous pouvez éliminer les problèmes d'affectation de noms et de conception et éviter des limitations de performance en analysant votre code de base de données. Les concepts sont très similaires à l'exécution de l'analyse statique pour détecter et corriger des défauts dans le code managé. Vous configurez les règles d'analyse que vous voulez appliquer à votre code de base de données, vous analysez le code, puis corrigez ou ignorez les problèmes que vous identifiez. Avant de pouvoir analyser votre code de base de données, vous devez importer au préalable votre schéma de base de données dans un projet de base de données. Pour plus d'informations, consultez Démarrage du développement de bases de données en équipe.

En exécutant l'analyse statique, vous pouvez identifier les problèmes qui dépendent des catégories suivantes :

Problèmes relatifs à la conception Transact-SQL

Les problèmes de conception incluent notamment du code qui peut éventuellement se comporter de façon inhabituelle, une syntaxe déconseillée et des problèmes susceptibles d'entraîner des erreurs en cas de modification de la conception de votre base de données.

Problèmes relatifs à l'affectation de noms Transact-SQL

Les problèmes d'affectation de noms surviennent si le nom d'un objet de base de données provoque des problèmes inattendus ou enfreint des conventions généralement acceptées.

Problèmes de performances Transact-SQL

Les problèmes de performance incluent du code qui peut réduire sensiblement la vitesse d'exécution des bases de données. Bon nombre de ces problèmes identifient du code qui provoquera une analyse de table lorsque le code est exécuté.

Les avertissements ou erreurs s'affichent dans la Liste d'erreurs. Vous pouvez supprimer une instance d'un avertissement si vous avez déterminé que le problème peut être ignoré. Par exemple, vous pouvez choisir de ne pas résoudre une analyse de table éventuelle, si la table ne contient que quelques lignes.

No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Intégrer l’outil de supervision Sonar à Team Foundation Server 2010 | OCTO talks !

Comme on l’a montré dans l’article précédent, Sonar est l’outil indispensable pour évaluer la qualité des projets d’une DSI au fil de l’eau.

Dans cet article nous aimerions présenter l’installation de différents composants de l’analyse Sonar et comment l’intégrer à votre usine de build TFS.

No comment yet.
Scooped by Mickael Ruau
Scoop.it!

SONAR : La chasse aux 7 péchés du développeur | Le blog Sodifrance Netapsys

Durant le JUG Summer Camp 2011 qui a eu lieu à La Rochelle, Olivier Gaudin de la société SonarSource a présenté l’inspection continue du code source avec Sonar.

Olivier a détaillé les 7 péchés communément commis par les développeurs et comment les aider à améliorer la qualité technique des applications.

Mickael Ruau's insight:

La complexité dite « complexité cyclomatique » se mesure d’après le nombre de choix et de branches dans une méthode. C'est-à-dire le nombre de « if », « else », « for », « while », « switch / case » dans une méthode.

Il est conseillé d’avoir au maximum une complexité de 12 dans une méthode.

Plus la complexité d’une méthode est importante et plus elle sera jugée trop complexe et trop dangereuse à modifier. Une modification de ce type de méthodes présente un risque important d’effets de bord et de régressions.

Pour éviter une complexité trop importante, les deux règles d’or suivantes sont à respecter :

  • « Une méthode ou une classe n’est jamais trop petite »
  • « Une et une seule responsabilité par classe. »

En effet, il est nécessaire de séparer les préoccupations : une classe n’est responsable que d’un traitement. Elle délègue les autres traitements à d’autres classes.

No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Indice d'instabilité

Cet indice va faire ressortir les paquetages qui dépendent plus des autres que les autres ne dépendent d'eux. Ces paquetages peuvent être dangereux, puisqu'une modification dans un des paquetages dont ils dépendent impacte potentiellement leur fonctionnement.

Mickael Ruau's insight:

Il n'y a pas de bonne valeur pour cette indice : dans une architecture logicielle, certains paquetages doivent être instables. Cependant, lorsqu'un paquetage instable est détecté, il faut alors considérer un autre indicateur : c'est la "distance from the main sequence".

No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Nombre cyclomatique — Wikipédia

Nombre cyclomatique - Wikipédia

Le nombre cyclomatique, la complexité cyclomatique ou la mesure de McCabe est un outil de métrologie logicielle développé par Thomas McCabe en 1976 pour mesurer la complexité d'un programme informatique. Cette mesure reflète le nombre de décisions d'un algorithme en comptabilisant le nombre de " chemins " linéairement indépendants au travers d'un programme représenté sous la forme d'un graphe.

Mickael Ruau's insight:

Intérêt

Un code simple, au faible nombre cyclomatique, est théoriquement plus facile à lire, à tester et à entretenir2 :

  • un effort de compréhension plus soutenu doit être effectué durant la lecture d'un code complexe, de façon à retenir et à prendre en compte chaque embranchement ;
  • les tests unitaires doivent tester toutes les possibilités d’embranchement dans la fonction, de façon à suivre chacun des « chemins » ; or, les tests unitaires ont primordialement été conçus pour tester des fonctions en isolation par un cas simple ;
  • de même, la correction d'un bug ou l'amélioration d'une fonction simple sera facilitée par l'absence d'obligation de prise en compte de ces embranchements et possibilités.

Critique

Cependant, le nombre cyclomatique ne fait pas l'unanimité. Ainsi, dès mars 1988, une étude montre que le nombre cyclomatique ne s'appuie pas sur une base théorique solide et n'est pas adapté au développement logiciel et souligne qu'aucune observation empirique ne vient justifier l'utilité de cette mesure3.

D'autres possibilités existent pour compléter le nombre cyclomatique, comme la complexité NPath (en anglais, NPath complexity), mesurant le nombre total de possibilités d'emprunter l'ensemble des chemins, là où le nombre cyclomatique se contente d'additionner ces chemins2,4.

No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Sonar, l’outil qui manquait à l’usine de développement .NET | OCTO talks !

Il existe des outils d’analyse statique du code (exemples : Findbugs, Pmd en Java, FxCop, Gendarme en .NET) qui permettent de soulever des bugs potentiels ou des problèmes de maintenabilité.

 

Dans nos projets nous suivons la procédure suivante :

  • Blocker : c’est un bug, on arrête tout et on corrige.
  • Critical : il y a de fortes chances que ce soit un bug : on essaye de corriger rapidement.
  • Major : ça ne sent pas bon, il vaudrait mieux regarder. On essaye de corriger avant la livraison.
  • Minor et info : pensez à regarder si vous êtes curieux. En général, personne n’agit dessus, alors autant les désactiver.
No comment yet.