Wat zijn de beste tools voor statische analyse van Python?


Beste antwoord

Er zijn meerdere tools om statische analyse uit te voeren voor Python-programmering.

  1. Pylint → Een open source-tool
  2. Kiuwan → Commerciële tool
  3. Pyflakes enzovoort.

Ik heb Pylint en Kiuwan gebruikt.

Pylint kan de volgende dingen vinden:

  • de lengte van de regelcode controleren,
  • controleren of variabelenamen correct zijn gevormd volgens uw coderingsstandaard
  • controleren of geïmporteerde modules worden gebruikt
  • controleren of gedeclareerde interfaces echt zijn geïmplementeerd
  • controleren of modules worden geïmporteerd

Kiuwan kan onderstaande regelsets ondersteunen:

  • Vermijd hardcoding van IP-adressen
  • Gedupliceerde code
  • Vermijd het gebruik van standaard veranderlijke parameters
  • Vermijd het gebruik van exec () functie
  • Vermijd toewijzingen aan Waar of niet waar
  • Vermijd opeenvolgende vergelijkingen met gelijkheidsoperator
  • Vermijd te complexe functies
  • Open bestanden usin g the with statement
  • Vermijd het gebruik van verouderde modules
  • \_init\_ methode kan geen generator zijn

Het is een betere optie om te controleren op meerdere tools en bepaal welke tool perfect bij de vereiste past.

Antwoord

Ik gebruik pyflakes voor code-controle in Vim en vind het erg handig. Maar toch, pylint is beter voor pre-commit code controle. Je zou twee niveaus van codecontrole moeten hebben: fouten die niet kunnen worden gepleegd en waarschuwingen die naar code ruiken maar wel kunnen worden gepleegd. Je kunt dat en vele andere dingen configureren met pylint.

Soms denk je misschien dat pylint te kieskeurig is: het kan klagen over iets waarvan je denkt dat het perfect in orde is. Denk er twee keer over na. Heel vaak ontdekte ik dat de waarschuwing die ik een maand geleden overdreven conservatief vond, eigenlijk een heel goed advies was.

Dus mijn antwoord is dat pylint betrouwbaar en robuust is, en ik ben niet op de hoogte van een veel betere code analyser.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *