Sonarqube CSS / SCSS / Moins analyseur
Clause de non-responsabilité
Je ne veux pas continuer à maintenir ce plugin. N'hésitez pas à me faire cingler si vous voulez prendre le relais.
Description
Ce plugin Sonarqube analyse:
- Fichiers CSS
- Code CSS intégré dans les fichiers HTML / XHTML
- Fichiers SCSS
- Moins de fichiers
et:
- Calcul des métriques: lignes de code, complexité, nombre de règles, etc.
- Valide votre code CSS
- Vérifie le code dupliqué
- Vérifie diverses directives pour trouver des bogues, des vulnérabilités et des odeurs de code potentiels à travers plus de:
- 80 vérifications du code CSS
- 90 chèques du code SCSS
- 80 vérifications sur moins de code
- Offre la possibilité d'écrire vos propres chèques
Usage
Guide d'installation
- Télécharger et installer Sonarqube
- Installez le plugin CSS / SCSS / moins par un téléchargement direct. La dernière version est compatible avec Sonarqube 6.7+.
- Installez votre scanner préféré (scanner Sonarqube, maven, fourmi, etc.)
- Analysez votre code
Analyse du code CSS intégré dans des fichiers HTML / XHTML
Le plugin analyse le code CSS intégré dans <style type="text/css">...</style> Tags dans les fichiers HTML / XHTML. Pour ce faire, en tant que condition préalable, Sonarqube doit importer ces fichiers. Soit:
- Installez un plugin Importation de ces fichiers (Plugin Web par exemple)
- Ou activez l'importation de fichiers inconnus en définissant la propriété
sonar.import_unknown_files vers true
La liste des fichiers contenant du CSS intégré à analyser peut être personnalisé via la propriété sonar.css.embedded.file.suffixes .
mappage de règles Stylelint / Sonarqube
Si vous utilisez déjà Stylelint, l'ajout de Sonarqube à votre pile vous aidera à amener la qualité du code à un autre niveau. La cartographie des règles Stylelint / Sonarqube peut être d'une grande aide pour définir votre profil de qualité Sonarqube.
Chèques personnalisés
Vous pensez à de nouveaux chèques précieux? La version 2.1 ou plus fournit une API pour rédiger vos propres vérifications personnalisées. Un exemple de plugin avec des explications détaillées est disponible ici. Si vos chèques personnalisés peuvent bénéficier à la communauté, n'hésitez pas à créer une demande de traction afin de mettre le chèque disponible dans l'analyseur CSS / SCSS / Moins.
Vous pensez à de nouveaux chèques qui peuvent bénéficier à la communauté mais qui n'ont pas le temps ou les compétences pour les écrire? N'hésitez pas à créer un problème pour que vos chèques soient pris en considération.
Métrique
Fonctions
Nombre de règles.
Complexité
Les éléments suivants augmentent la complexité de l'un:
- Sélecteur de classe
- Sélecteur d'identité
- Sélecteur d'attribut
- Sélecteur de type
- Pseudo-sélecteur
- Sélecteur des images clés
- À la règle
Complexité / fonction
Il calcule la complexité / règle, ce qui signifie le nombre moyen de sélecteurs par règle. Il donne une mesure sur la façon dont les sélecteurs sont spécifiques.
Règles disponibles
Commun aux CSS et SCS et moins
- Le drapeau "!
- Le drapeau "!
- La règle "@ font-face" doit être rendue compatible avec les navigateurs requis
- Les balises "FixMe" doivent être gérées
- Les balises "Nosonar" ne doivent pas être utilisées pour désactiver les problèmes
- Les balises "Stylelint-Disable" doivent être supprimées
- Les balises "Stylelint-Enable" doivent être supprimées
- Les propriétés "Text Transform" ne doivent pas être définies sur "majuscules" ou "capitaliser" pour certaines langues
- Les balises "TODO" doivent être gérées
- @Charset devrait être le premier élément de la feuille de style et ne pas être précédé d'un personnage
- La taille du modèle de boîte doit être soigneusement examinée
- La marque de commande des octets (BOM) ne doit pas être utilisée pour les fichiers UTF-8
- Le drapeau insensible à cas ne doit pas être utilisé
- Les sélecteurs de classe doivent suivre une convention de dénomination
- Le CSS doit être écrit en minuscules
- Les couleurs du système obsolètes ne doivent pas être utilisées
- Les images d'arrière-plan dupliqué doivent être supprimées
- Les propriétés dupliquées doivent être supprimées
- Chaque déclaration devrait se terminer par un point-virgule
- Les déclarations vides doivent être supprimées
- Les règles vides doivent être supprimées
- Leshets de styles vides doivent être supprimés
- Experimental @ -rules ne doit pas être utilisé
- Les identifiants expérimentaux ne doivent pas être utilisés
- Les propriétés expérimentales ne doivent pas être utilisées
- Les pseudo-éléments expérimentaux et les pseudo-classes ne doivent pas être utilisés
- Les combinateurs de sélecteur expérimental ne doivent pas être utilisés
- Les fichiers doivent contenir une nouvelle ligne vide à la fin
- Les fichiers ne devraient pas avoir trop de lignes
- Les noms de famille de polices doivent être cités
- Les fichiers de police enlin ne doivent pas être utilisés
- Les propriétés de la famille devraient se terminer par une famille de polices génériques
- La famille ne doit pas contenir des noms de famille de polices dupliqués
- Les propriétés interdites ne doivent pas être utilisées
- Les noms de famille générique ne doivent pas être cités
- Les définitions de gradient doivent être définies pour tous les fournisseurs
- Les sélecteurs d'identification doivent suivre une convention de dénomination
- Les ID dans les sélecteurs doivent être supprimés
- Les zéros principaux doivent être supprimés
- Les lignes ne doivent pas être trop longues
- Les lignes ne doivent pas se terminer avec des espaces de fin
- Des préfixes de fournisseurs manquants doivent être ajoutés aux propriétés expérimentales
- Le nom de l'élément surqualifié doit être supprimé
- Les couleurs nommées ne doivent pas être utilisées
- La précision du nombre ne doit pas être trop élevée
- Les propriétés obsolètes ne doivent pas être utilisées
- Les pseudo-éléments obsolètes et les pseudo-classes ne doivent pas être utilisés
- Les combinateurs sélecteurs obsolètes ne doivent pas être utilisés
- Les sélecteurs trop spécifiés doivent être simplifiés
- Les propriétés qui ne fonctionnent pas avec la propriété "Affichage" doivent être supprimées
- Les valeurs de la propriété doivent être valides
- L'URL relative au protocole ne doit pas être utilisée
- Une expression régulière comme les sélecteurs ne doit pas être utilisée
- Expression régulière sur @ -rule
- Expression régulière sur le commentaire
- Expression régulière sur la fonction
- Expression régulière sur la propriété
- Expression régulière sur l'unité
- Les propriétés de la règle doivent être ordonnées alphabétiquement
- Les propriétés scolarisées doivent être utilisées dans la mesure du possible
- Les propriétés scolarisées ne doivent pas être utilisées
- Les citations simples doivent être utilisées à la place des doubles citations pour les chaînes
- Le code source doit se conformer aux normes de mise en forme
- Les propriétés standard doivent être spécifiées avec les propriétés préfixées par le fournisseur
- Star Hack ne doit pas être utilisé
- Les feuilles de styles ne devraient pas contenir trop de règles
- Leshets de styles ne doivent pas contenir trop de sélecteurs
- Les caractères de tabulation ne doivent pas être utilisés
- Le nombre de polices Web doit être réduite
- Il devrait y avoir une seule déclaration par ligne
- Les zéros de fuite pour les valeurs numériques doivent être supprimés
- Les types dans les sélecteurs doivent être supprimés
- Le piratage de soulignement ne doit pas être utilisé
- Les unités pour les valeurs de longueur zéro doivent être supprimées
- Le sélecteur universel ne doit pas être utilisé comme partie clé
- Inconnu @ -rules doit être supprimé
- Les propriétés inconnues doivent être supprimées
- Les pseudo-éléments et les pseudo-classes inconnus doivent être supprimés
- Les sélecteurs de type inconnu doivent être supprimés
- Url 'papier.gif' ne devrait jamais être utilisé
- L'URL doit être citée
Spécifique à CSS
- La règle "@import" ne doit pas être utilisée
- @Import Les règles devraient précéder toutes les autres règles de rubrique et de style
- Les variables CSS devraient suivre une convention de dénomination
- Les fonctions expérimentales ne doivent pas être utilisées
- Les fonctions obsolètes ne doivent pas être utilisées
- Stylesheets ne devrait pas "@import" trop d'autres feuilles
- Les fonctions CSS inconnues doivent être supprimées
Spécifique au CSS intégré dans HTML / XHTML
- CSS ne doit pas être intégré dans les fichiers HTML
Spécifique au SCSS
- Les directives @Debug ne doivent pas être utilisées dans le code de production
- Les directives @Extend ne doivent pas être utilisées
- @if ... @else si ... les constructions devraient se terminer avec la directive @else
- Utilisez toujours «à travers» au lieu de «vers» dans les directives @for
- Les conditions ne doivent pas être trop complexes
- Les directives de flux de contrôle @if, @else si, @else, @for, @ the
- Les fonctions personnalisées doivent suivre une convention de dénomination
- Les déclarations et les directives devraient être correctement triées
- Les chaînes multilines dépréciées non recommandées ne doivent pas être utilisées
- La directive de flux de contrôle vide doit être supprimée
- Les mélanges vides doivent être supprimés
- Les mélanges doivent suivre une convention de dénomination
- Les propriétés imbriquées devraient définir au moins deux propriétés
- Les sélecteurs d'espace réservé doivent suivre une convention de dénomination
- @IF / @ELSE lié si les directives ne devraient pas avoir la même condition
- Les ensembles de règles ne doivent pas être imbriqués trop profondément
- Les variables SCSS devraient suivre une convention de dénomination
- Les commentaires en une seule ligne (//) doivent être préférés aux commentaires multi-lignes (/ * ... * /)
- Deux branches de la même structure conditionnelle ne devraient pas avoir exactement la même implémentation
- Les parenthèses inutiles suivant @include et @mixin sans paramètre doivent être supprimées
Spécifique à moins
- La fonction d'échappement dépréciée "E" doit être remplacée par une syntaxe ~ "valeur"
- Moins de variables devraient suivre une convention de dénomination
- Les ensembles de règles ne doivent pas être imbriqués trop profondément
- La même variable ne doit pas être déclarée plusieurs fois dans la même portée
- Les commentaires en une seule ligne (//) doivent être préférés aux commentaires multi-lignes (/ * ... * /)
- Les fonctions CSS / Moins inconnues doivent être supprimées
- Les variables doivent être déclarées au début du bloc