Article de reference

Semmle

{{cite web |title=GitHub acquires Semmle to help developers spot code exploits |url=https://venturebeat.com/2019/09/18/github-acquires-semmle-to-help-developers-spot-code-exploi...

d'analyse de code . Semmle a été rachetée par GitHub (lui-même propriété de Microsoft ) le 18 septembre 2019 pour un montant non divulgué. La technologie LGTM de Semmle automatise la revue de code , suit les contributions des développeurs et signale les failles de sécurité logicielle . La plateforme LGTM exploite le moteur de requêtes CodeQL (anciennement QL) pour effectuer une analyse sémantique des bases de code. GitHub ambitionne d'intégrer la technologie Semmle afin de fournir des services de détection continue des vulnérabilités. En novembre 2019, l'utilisation de CodeQL est devenue gratuite pour la recherche et open source. CodeQL partage soit une filiation directe avec .QL (prononcé « .que-ell »), qui dérive de la famille Datalog , soit représente une évolution d'une technologie similaire.langage de requêtes orienté objet pour bases de données déductives , développé par Semmle. Il se distingue au sein de cette catégorie par sa prise en charge des requêtes récursives .

San Francisco , et ses activités de développement étaient basées à Blue Boar Court, Alfred Street , dans le centre d'Oxford , en Angleterre . Parmi les clients de Semmle figuraient Credit Suisse , la NASA et Dell .

Fond d'écran SemmleCode

Académique

SemmleCode s'appuie sur les recherches universitaires concernant l'interrogation du code source des logiciels. Le premier système de ce type fut Omega de Linton , où les requêtes étaient formulées en QUEL . QUEL ne permettait pas la récursivité , ce qui rendait difficile l'inspection des structures hiérarchiques du programme, telles que le graphe d'appels . L'avancée significative suivante fut donc l'utilisation de la programmation logique , qui autorise ces requêtes récursives, dans le navigateur XL C++ . L'inconvénient d'utiliser un langage de programmation logique complet réside cependant dans la difficulté à atteindre une efficacité acceptable. Le système CodeQuest , développé à l' Université d'Oxford , fut le premier à exploiter le constat que Datalog , une version très restrictive de la programmation logique, offre un excellent compromis entre expressivité et efficacité. Le langage de requêtes QL est une version orientée objet de Datalog.

Industriel

Les premiers travaux de recherche sur l'interrogation du code source des logiciels ont donné lieu à de nombreuses applications industrielles. Ils sont notamment devenus la pierre angulaire des systèmes d'intelligence applicative ( exploration de données du code source des logiciels) et de la rénovation logicielle. En 2007, CAST basé à Paris , figurait parmi les leaders du marché dans ce domaine, et BluePhoenix , à Herzliya ( Israël) , comptait également parmi les acteurs importants . SemmleCode se distingue de ces systèmes par l'utilisation d'un langage de requête orienté objet, permettant aux programmeurs de formuler facilement des requêtes spécifiques à leur projet.

Un compte rendu complet des développements académiques et industriels qui ont conduit à la création de SemmleCode peut être trouvé dans un article de Hajiyev et al.

Exemple de requête en QL

Pour illustrer l'utilisation de QL, prenons l'exemple de la règle bien connue de la programmation orientée objet selon laquelle les champs publics doivent être déclarés `final`. Pour détecter les violations de cette règle, il faut rechercher les champs publics qui ne sont pas `final`. En QL, cette exigence s'exprime comme suit :

) et non ( f.hasModifier ( " final" ) ) , sélectionnez f.getDeclaringType ( ). getPackage ( ), f.getDeclaringType ( ) , f

Ici, ce n'est pas seulement le champ incriminé fqui est sélectionné, mais aussi le paquetage et le type dans lequel sa déclaration a lieu.

Intégration de SemmleCode avec les environnements de développement

SemmleCode offre une interface utilisateur via l' IDE Eclipse permettant d'interroger du code Java (code source et bytecode) ainsi que des fichiers XML, et de modifier des requêtes QL. Il ne s'agit toutefois que d'une application parmi d'autres de la technologie sous-jacente : QL peut être utilisé pour interroger tout autre type de données complexes.

Dans le cadre de l'intégration au sein du groupe Microsoft/GitHub, le flux de travail original basé sur Eclipse a été remplacé par un flux de travail basé sur Microsoft Visual Studio Code .