{"version":"1.0","provider_name":"Philipp Salvisberg&#039;s Blog","provider_url":"https:\/\/www.salvis.com\/blog","author_name":"Philipp Salvisberg","author_url":"https:\/\/www.salvis.com\/blog\/author\/phs\/","title":"Detecting Security Vulnerabilities With the APEXlang Parser - Philipp Salvisberg&#039;s Blog","type":"rich","width":600,"height":338,"html":"<blockquote class=\"wp-embedded-content\" data-secret=\"S0ChMaHglF\"><a href=\"https:\/\/www.salvis.com\/blog\/2026\/06\/29\/detecting-security-vulnerabilities-with-the-apexlang-parser\/\">Detecting Security Vulnerabilities With the APEXlang Parser<\/a><\/blockquote><iframe sandbox=\"allow-scripts\" security=\"restricted\" src=\"https:\/\/www.salvis.com\/blog\/2026\/06\/29\/detecting-security-vulnerabilities-with-the-apexlang-parser\/embed\/#?secret=S0ChMaHglF\" width=\"600\" height=\"338\" title=\"&#8220;Detecting Security Vulnerabilities With the APEXlang Parser&#8221; &#8212; Philipp Salvisberg&#039;s Blog\" data-secret=\"S0ChMaHglF\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\" class=\"wp-embedded-content\"><\/iframe><script>\n\/*! This file is auto-generated *\/\n!function(d,l){\"use strict\";l.querySelector&&d.addEventListener&&\"undefined\"!=typeof URL&&(d.wp=d.wp||{},d.wp.receiveEmbedMessage||(d.wp.receiveEmbedMessage=function(e){var t=e.data;if((t||t.secret||t.message||t.value)&&!\/[^a-zA-Z0-9]\/.test(t.secret)){for(var s,r,n,a=l.querySelectorAll('iframe[data-secret=\"'+t.secret+'\"]'),o=l.querySelectorAll('blockquote[data-secret=\"'+t.secret+'\"]'),c=new RegExp(\"^https?:$\",\"i\"),i=0;i<o.length;i++)o[i].style.display=\"none\";for(i=0;i<a.length;i++)s=a[i],e.source===s.contentWindow&&(s.removeAttribute(\"style\"),\"height\"===t.message?(1e3<(r=parseInt(t.value,10))?r=1e3:~~r<200&&(r=200),s.height=r):\"link\"===t.message&&(r=new URL(s.getAttribute(\"src\")),n=new URL(t.value),c.test(n.protocol))&&n.host===r.host&&l.activeElement===s&&(d.top.location.href=t.value))}},d.addEventListener(\"message\",d.wp.receiveEmbedMessage,!1),l.addEventListener(\"DOMContentLoaded\",function(){for(var e,t,s=l.querySelectorAll(\"iframe.wp-embedded-content\"),r=0;r<s.length;r++)(t=(e=s[r]).getAttribute(\"data-secret\"))||(t=Math.random().toString(36).substring(2,12),e.src+=\"#?secret=\"+t,e.setAttribute(\"data-secret\",t)),e.contentWindow.postMessage({message:\"ready\",secret:t},\"*\")},!1)))}(window,document);\n\/\/# sourceURL=https:\/\/www.salvis.com\/blog\/wp-includes\/js\/wp-embed.min.js\n<\/script>\n","thumbnail_url":"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2026\/06\/APEXlang-Parser.png","thumbnail_width":1731,"thumbnail_height":909,"description":"Introduction A parser for the APEXlang grammar enables the development of tools beyond the scope of the APEXlang compiler included in SQLcl, SQL Developer for VS Code, and ORDS. These tools can perform static code analysis, convert code, generate documentation, and visualise different aspects of an APEX application. A linter, for example, [\u2026]"}