{"id":1233,"date":"2015-05-08T09:15:11","date_gmt":"2015-05-08T13:15:11","guid":{"rendered":"http:\/\/bioinfo.iric.ca\/?p=1233"},"modified":"2021-09-23T15:44:56","modified_gmt":"2021-09-23T15:44:56","slug":"analyse-statique","status":"publish","type":"post","link":"https:\/\/bioinfo.iric.ca\/fr\/analyse-statique\/","title":{"rendered":"Introduction \u00e0 un outil d&rsquo;analyse statique (linter) utile pour les d\u00e9butants et am\u00e9liorer ces comp\u00e9tences en programmation"},"content":{"rendered":"<p>&#8211; C&rsquo;est quoi l&rsquo;analyse statique ?<\/p>\n<p>L&rsquo;analyse statique permet d&rsquo;obtenir des informations sur le comportement de votre code lors de son ex\u00e9cution sans l&rsquo;ex\u00e9cuter. Contrairement \u00e0 l&rsquo;analyse dynamique (comme le d\u00e9bogage) qui demande l\u2019ex\u00e9cution du programme.<\/p>\n<p>&#8211; Ok, mais \u00e0 quoi \u00e7a sert concr\u00e8tement ?<\/p>\n<ol>\n<li>\u00c0 gagner du temps, en supprimant les cycles de sauvegarde\/ex\u00e9cution \u00e0 cause d&rsquo;erreurs syntaxiques (oublie d&rsquo;un \u00ab\u00a0;\u00a0\u00bb, variable ou fonction non d\u00e9clar\u00e9e, erreur de frappe,&#8230;). Corriger ces erreurs lors du d\u00e9bogage, vous demandera d&rsquo;\u00e9diter, sauvegarder, (re)compiler ou (re)ex\u00e9cuter votre programme pour chacune d&rsquo;entre elles.<\/li>\n<li>\u00c0 gagner en performance, en identifiant les librairies\/variables\/fonctions non utilis\u00e9es ou \u00ab\u00a0mal\u00a0\u00bb d\u00e9clar\u00e9es. Indispensable quand on est autodidacte ou qu&rsquo;on a suivi une formation rapide pour programmer.<\/li>\n<li>\u00c0 gagner en lisibilit\u00e9, en invitant \u00e0 suivre les r\u00e8gles stylistiques recommand\u00e9es\/accept\u00e9es par un groupe de programmeurs qui se sont int\u00e9ress\u00e9s \u00e0 cette probl\u00e9matique. C&rsquo;est notamment tr\u00e8s utile pour apprendre un nouveau langage de programmation.<\/li>\n<\/ol>\n<p>&#8211; \u00c7a m&rsquo;int\u00e9resse, comment \u00e7a fonctionne ?<\/p>\n<p>Tout d\u00e9pend de vos habitudes de programmation : vous pr\u00e9f\u00e9rez \u00e9crire votre code dans un \u00e9diteur de texte ou dans un environnement de d\u00e9veloppement (IDE en anglais) ?<\/p>\n<p>La plupart des IDE (comme Eclipse) ont des outils d&rsquo;analyse statique d\u00e9j\u00e0 int\u00e9gr\u00e9s ou des <em>plugins<\/em> \u00e0 installer en fonction de votre langage de programmation (par exemple: PyDev pour \u00e9crire du python avec Eclipse). Ces outils vont directement souligner\/identifier les erreurs (comme un correcteur d&rsquo;orthographe).<\/p>\n<p>Pour ceux qui pr\u00e9f\u00e8rent utiliser un simple \u00e9diteur de texte (comme votre humble serviteur), il existe de petits programmes (couramment appel\u00e9s <em>linter<\/em>) qu&rsquo;on peut attacher\/ajouter \u00e0 l&rsquo;\u00e9diteur de son choix (<a title=\"emacs\" href=\"http:\/\/www.gnu.org\/software\/emacs\/\">emacs<\/a>, <a title=\"vim\" href=\"http:\/\/www.vim.org\/index.php\">vim<\/a>, <a title=\"Sublime text\" href=\"http:\/\/www.sublimetext.com\/\">sublime text<\/a>, &#8230;). Ici aussi, vos erreurs seront soulign\u00e9es et pourront \u00eatre identifi\u00e9es d&rsquo;un simple coup d&rsquo;oeil \u00e0 votre code. Elles deviennent donc tr\u00e8s faciles \u00e0 corriger.<\/p>\n<div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-1 hundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-overflow:visible;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-0 fusion_builder_column_1_1 1_1 fusion-one-full fusion-column-first fusion-column-last fusion-column-no-min-height\" style=\"--awb-bg-size:cover;--awb-margin-bottom:0px;\"><div class=\"fusion-column-wrapper fusion-flex-column-wrapper-legacy\">\n<div id=\"attachment_1236\" style=\"width: 568px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2015\/03\/linter2.png\"><img decoding=\"async\" aria-describedby=\"caption-attachment-1236\" class=\"wp-image-1236 \" src=\"https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2015\/03\/linter2.png\" alt=\"Les erreurs sont en rouge et les avertissements en jaune\" width=\"558\" height=\"364\" srcset=\"https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2015\/03\/linter2-300x196.png 300w, https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2015\/03\/linter2.png 809w\" sizes=\"(max-width: 558px) 100vw, 558px\" \/><\/a><p id=\"caption-attachment-1236\" class=\"wp-caption-text\">Les erreurs sont en rouge (<em>Undifined name &lsquo;Tot&rsquo;<\/em>) et les avertissements en jaune (<em>imported but unused<\/em>).<\/p><\/div>\n<p>Si votre \u00e9diteur de texte ne poss\u00e8de pas de \u00ab\u00a0linter\u00a0\u00bb, il est possible d&rsquo;installer ces programmes individuellement et de faire appara\u00eetre la liste des erreurs et des avertissements en les ex\u00e9cutant \u00e0 l&rsquo;aide d&rsquo;une console. C&rsquo;est moins pratique mais toujours plus efficace que le \u00ab\u00a0d\u00e9bogage classique\u00a0\u00bb.<\/p>\n<p><a href=\"https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2015\/03\/flake81.png\"><img decoding=\"async\" class=\"aligncenter wp-image-1238 size-full\" src=\"https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2015\/03\/flake81.png\" alt=\"flake8\" width=\"735\" height=\"135\" srcset=\"https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2015\/03\/flake81-300x55.png 300w, https:\/\/bioinfo.iric.ca\/wpbioinfo\/wp-content\/uploads\/2015\/03\/flake81.png 735w\" sizes=\"(max-width: 735px) 100vw, 735px\" \/><\/a><\/p>\n<p>Si vous ne savez pas quelles solutions choisir, je vous recommande d&rsquo;essayer Sublime Text avec le <em>package<\/em> <a title=\"SublimeLinter\" href=\"https:\/\/github.com\/SublimeLinter\">sublimeLinter<\/a>. C&rsquo;est un \u00e9diteur tr\u00e8s simple \u00e0 utiliser et tr\u00e8s efficace avec un gestionnaire de packages qui facilitera l&rsquo;installation des <em>linter<\/em>. Pour vos premiers pas avec Sublime Text, vous pouvez trouver de l&rsquo;aide : <a title=\"ici\" href=\"http:\/\/www.js-attitude.fr\/2013\/03\/12\/sublime-text-dev-web-config-trucs-astuces\/#espaces-de%20fin%20de%20ligne%20et%20de%20fin%20de%20fichiers\">ici<\/a>.<div class=\"fusion-clearfix\"><\/div><\/div><\/div><\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>&#8211; C&rsquo;est quoi l&rsquo;analyse statique ? L&rsquo;analyse statique permet d&rsquo;obtenir des informations sur le comportement de votre code lors de son ex\u00e9cution sans l&rsquo;ex\u00e9cuter. Contrairement \u00e0 l&rsquo;analyse dynamique (comme le d\u00e9bogage) qui demande l\u2019ex\u00e9cution du programme. &#8211; Ok, mais \u00e0 quoi \u00e7a sert concr\u00e8tement ? \u00c0 gagner du temps, en supprimant les cycles de sauvegarde\/ex\u00e9cution \u00e0 cause d&rsquo;erreurs syntaxiques (oublie d&rsquo;un \u00ab\u00a0;\u00a0\u00bb, variable ou fonction non d\u00e9clar\u00e9e, erreur de frappe,&#8230;). Corriger ces erreurs lors du d\u00e9bogage, vous demandera d&rsquo;\u00e9diter, sauvegarder, <a href=\"https:\/\/bioinfo.iric.ca\/fr\/analyse-statique\/\"> [&#8230;]<\/a><\/p>\n","protected":false},"author":9,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[32,26,24],"tags":[47,48],"class_list":["post-1233","post","type-post","status-publish","format-standard","hentry","category-performance-fr-2","category-langage-python","category-langage-r","tag-dev","tag-linter"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/posts\/1233","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/comments?post=1233"}],"version-history":[{"count":14,"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/posts\/1233\/revisions"}],"predecessor-version":[{"id":100096,"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/posts\/1233\/revisions\/100096"}],"wp:attachment":[{"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/media?parent=1233"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/categories?post=1233"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/tags?post=1233"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}