7
votes

Personnalisation des règles d'ocint

J'utilise l'outil d'analyse de code statique d'OCLint pour l'objectif-C et souhaitez savoir comment personnaliser les règles? Les règles sont représentées par ensemble de fichiers de dylib.


0 commentaires

3 Réponses :


5
votes

La réponse, comme avec tant de choses, c'est que cela dépend.

  1. Si vous souhaitez écrire votre propre règle personnalisée, vous devez vous mettre en panne et sale dans la rédaction de votre propre règle, en C ++ en plus du code source existant. Consultez le répertoire oclint-règles / règles , taille / longlinerule.cpp est une règle simple pour aller avec. Vous devrez recompiler, etc.

  2. Si vous souhaitez modifier les paramètres d'une règle existante, vous devez ajouter le paramètre de ligne de commande -rc = = à l'appel à oclint . Par exemple, si vous souhaitez que la règle de lignes longue ne soit activée que pour les lignes plus longtemps que 150 caractères, vous devez ajouter -rc = long_line = 150 .

    Je n'ai pas la patience pour répertorier tous les différents paramètres que vous pouvez modifier. La liste des règles est ici ici http://docs.oclint.org/en/dev /rules/index.html et une liste de règles basées sur le seuil ici http : //docs.oclint.org/fr/dev/customizing/roules.html Mais il n'y a pas de liste de valeurs acceptables et je ne sais pas si ces deux URL couvrent toutes les règles ou non. Vous devrez peut-être examiner le code source pour chaque règle pour déterminer comment cela fonctionne.


0 commentaires

4
votes

Si vous utilisez un script XCode, vous devez utiliser oclint_args comme ceci:

OCLINT-JSON-Compilation-Base de données oclint_args "-rc long_line = 150" | sed 'S / (. . \ m {1,2}: [0-9] : [0-9] * :) / \ 1 AVERTISSEMENT: /'

Dans cet échantillon, je change la règle de long_line à 150 caractères


0 commentaires

6
votes

au lieu de la configuration de passage en tant qu'arguments (voir la réponse de Jon Boydell), vous pouvez également créer un fichier YML nommé .OCLint code> dans le répertoire de projet.

Voici un exemple de fichier qui personnalise quelques-unes Choses: P>

rules:
  - LongLine
disable-rules:
rulePaths:
  - /etc/rules
rule-configurations:
 - key: LONG_LINE
   value: 20
output: filename
report-type: xml
max-priority-1: 10
max-priority-2: 20
max-priority-3: 30
enable-clang-static-analyzer: false


1 commentaires

Merci pour cette information! Je viens de réaliser que le nom du fichier doit être .OCLint , pas .OCLint.yml ... Bien que ce soit un fichier YML. MDR