From the blog

Delphi and Linux Docker Support

Over the last few years, it has become more and more common to deploy server side solutions (and in fact any type of application) to lightweight containers rather than physical machines or virtual machines, as this allows more flexibility (also in terms of testing), a better way to rebuild the same execution environment, and more scalability. Along with the 10.3.3 release, Embarcadero has started officially supporting deployment of general Linux applications to Docker containers, specifically supporting the deployment to RAD Server. What is Docker Docker is an OS-level virtualization environment that allows for the packaging and delivery of software as a bundle inside a container file. The container files are executed by the Docker Engine and multiple containers can run side by side on the same Linux installation. Inside each container is an OS-level virtualization environment.  What is Docker Hub? Docker provides a service that allows developers and publishers to distribute Docker images to the public or their team. This service is known as Docker Hub and provides a way for users to use repositories where specific Docker Images are located. Docker repositories also allow for Docker Image versioning. Docker Hub contains official images such as the Ubuntu image that can be used as starting points for many users.  RAD Studio Linux Docker Containers The RAD Studio Docker containers paserver, pa-radserver, and pa-radserver-ib are available directly from DockerHub and also as Dockerfiles (on GitHub) plus additional helper utilities. When pulling the containers from DockerHub using Docker the organization name has to be prefixed to the container name such as radstudio/paserver, radstudio/pa-radserver, and radstudio/pa-radserver-ib. For this blog post I’ll start focusing on the first one, radstudio/paserver, which does not include RAD Server. Docker containers have a number of different parameters that you can pass to the Docker Engine when starting an instance. Additionally, custom build and run parameters can be defined when building and running a Docker image. A number of custom parameters have been included in the scripts we provide, including for example the password for PAServer. Docker container instances can be run in the foreground where you can interact with an app that is running within the instance or they can be run detached in the background which behaves like a service.  Docker container instances will not by default store any changes to the instance between runs (they are transient images). However, you can set up a persistent Volume within the Docker instance which will store changes between runs of the Docker container instance. A directory within the Docker instance can be mounted to the Volume and any changes made within that directory persist on the Volume between runs of the Docker instance.

Read More

The 5 Best Python IDE in 2019

1. PyDev IDE PyDev started as an IDE that primarily worked with Eclipse, allowing Pythonista’s write code on Eclipse. But, no it has expanded beyond Eclipse and now can also be integrated with Visual Studio Code. Although free, PyDev integration with VS Code costs $40 after a free trial of 1 month. Features which makes PyDev best IDE:  All basic autocomplete features that other Python IDE’s provide  Code editing directly inside of Eclipse and Visual Studio Code  Django Integration and ease of unit testing Pros and Cons of PyDev IDE Pros  Open-source  Pylint integration  Debuggers and real-time Cons  Limited Support as its crowdfunded  Less features than other enterprise backed IDEs 2. Spyder Python IDE  SPYDER is actually an acronym that stands for Scientific PYthon Development EnviRonment. This IDE is mainly used by the Scientific Python community. Tools and libraries like Numpy, Scipy, Matplotlib, etc are in-built with this Python IDE. Powerful features specifically built for the scientific programming makes Spyder a preferred IDE. It is also one of the best alternatives for Scientific programmers outside of Matlab. Features which makes Spyder the best IDE for Scientific programming:  Integrated Pylint and Pyflakes for analysis Syntax coloring, breakpoints Code Autocomplete and Variable explorer Comes with most of the scientific programming libraries and framework iPython notebook integration Pros and Cons of Spyder IDE: Pros Built to support data analysis and visualization Leverage autocomplete and syntax highlight for efficient programming Helps you leverage iPython notebook to perform a more granular analysis of your code Real-time code analysis and feedback Cons Lack of version control Lack of integration of a debugger 3. PyCharm IDE PyCharm, an IDE developed and maintained by JetBrains is one of the most popular Python IDE. In a survey done by JetBrains, more than 20% of developers mentioned Pycharm as their preferred IDE. As an IDE, PyCharm does much more than just allowing you to import libraries and write code. It is a professional-grade IDE that allows Python developers to write production-grade and maintainable code. Features which makes PyCharm the best Python IDE: Code completion and automatic error detection Smart Code Navigation to help you quickly get to the right class, file, symbols, etc Makes refactoring painless with safe Rename and Delete. Easy to push project-wide changes Easy to implement unit tests and graphical UI tests with Python profiler Automated Deployment CI/CD pipeline integration Database integration – Oracle, SQL Server, PostgreSQL, and other major databases Remote Development – you can write your Python code with PyCharm’s Professional Edition. Pros and Cons of PyCharm IDE Pros Smart features like Autocomplete helping devs write code faster PyCharm supports multiple frameworks Highly reliable for production-grade processes Cons : Costs around $199 per year per user PyCharm has certain performance issues on Windows OS There’s a learning curve associated with PyCharm Requires SSD and considerable memory size  4. Visual Studio Code Once the nemesis of FOSS software, Microsoft has, under the stewardship of Satya Nadella, taken a much friendlier stance towards all things open source. The company may not be about to release the source code to Visual Studio, but in 2015 it did release a source code editor, Visual Studio Code – or Code for short – and open-sourced the core of it. Code has since become rather popular amongst developers, and it’s a fine choice […]

Read More

FLASH RIO 10.3.3 PROMO

EMBARCADERO RIO 10.3.3 PROMO Cu ocazia lansarii Relizului 3 a versiunii Embarcadero RIO 13.3 se anunță promoția RIO 10.3.3 PROMO Flash pentru soluțiile RAD Studio, Delphi si C++ Builder valabilă până pe data de 29 Noiembrie 2019! Ediția PROFESSIONAL a licențelor Embaracdero RAD Studio, Delphi sau C++ Builder, inclusiv 12 luni de mentenanță și suport – cu o reducere de 15%! Ediția ENTERPRISE a licețelor RAD Studio, Delphi sau C++ Builder inclusiv 12 luni de mentenanță și suport – cu o reducere de pe bune de 25%! Ediția ARCHITECT a licețelor RAD Studio, Delphi sau C++ Builder inclusiv 12 luni de mentenanță și suport – cu o reducere de pe bune de 30%! Oferta RIO 10.3.3 PROMO este disponibilă pentru comenzi ferme plasate în perioada 23 Noiembrie 2019 – 29 Noiembrie 2019 cu condiția achitării contravalorii comenzii plasate. Până la expirarea ofertei au mai ramas: Solicitați oferta personalizată! Ediția 10.3.3 Rio este cea mai recentă ediție disponibilă la momentul actual, oferind caracteristici infinite de dezvoltare a aplicațiilor cross-platform cu supportul platformelor ceel mai populare penru momentul actual, care vă ajută să construiți, să testați și să implimentați aplicații moderne rapid și în limita bugetului. RAD Studio 10.3 Release 3 builds on the feature set of 10.3, 10.3.1 and 10.3.2 by adding new capabilities throughout the product. Delphi 10.3.3, C++Builder 10.3.3 and RAD Studio 10.3.3 are now available to download for any active Update Subscription customer. With Release 3, developers can target the Google Play Store with 64-bit versions of their FireMonkey Delphi apps, simplify their multi-tier application development and deployment of RAD Server through a pre-built Docker image and build C++ and Delphi applications for iOS 13 and Delphi apps for macOS Catalina. Developers can also access over 70+ data sources with a newly included Enterprise Connector subscription license for Enterprise and Architect edition users.  RAD Studio 10.3 Release 3 also has an extensive quality focus, addressing over 180 customer requests in areas like App Tethering, FireMonkey mobile platforms, C++ compiler and toolchain, IDE responsiveness and more. See below for additional details.  Product trials for 10.3.3 are now available and the updated product builds are live in the online store. Customers on Update Subscription can download and install RAD Studio 10.3.3 today using their existing licenses. An email notification with download links will also be provided to everyone current on subscription.  Key RAD Studio 10.3.2 features include: Delphi Android 64-bit Support iOS 13 and macOS Catalina Support  RAD Server Docker Deployment  Enterprise Connectors in Enterprise & Architect Edition Quality and Performance Improvements  The 10.3.3 release includes around 180 quality improvements, benefiting around 375 different customers.

Read More

14 Best JavaScript IDE in 2019

Today, you can easily find a great and free JavaScript IDE and develop apps with ease. Whether you need a JavaScript IDE, an HTML IDE, or any other web development IDE, they are all out there and many of them are open-source. So let’s dig a bit deeper and find the best IDE for web development. What is the difference between IDE and Text Editor? Web development IDE does all the things simple text editors do plus a number of more advanced stuff that you can’t do with text editors. For instance, while an editor such as Sublime or Atom can be used as an HTML CSS JavaScript editor, they only allow you to write code. Of course, they come with a bunch of convenient features such as syntax highlighting, customizable interfaces, and extensive navigation tools, you will need additional features to make a functional app. For example, you will need a debugger and a compiler. However, with the best IDEs, you won’t have to worry about that. They often come with additional tools for automating, testing, and visualizing the development process. Basically, they equip you with everything you need to turn code into a functioning app or program. So what is the best IDE for you? We will help you choose the best free IDE that will be your new favorite HTML CSS editor or free JavaScript editor. 1. Visual Studio Code Visual Studio Code is possibly the best JavaScript ide for Windows, Mac, and Linux. Not only does it support JavaScript, but it also supports Node.js, TypeScript, and it comes with a whole ecosystem of extensions for other languages including C++, C#, Python, PHP, etc. It provides great syntax highlighting and autocomplete with IntelliSense based on variable types, function definitions, and imported modules. It also allows you to debug code by launching or attaching to your running apps debug with breakpoints, call stacks, and an interactive console. You can effortlessly integrate a JavaScript UI library into Visual Studio Code. All in all, this IDE for JavaScript is definitely one to check out. An important note – it is free to use. To get the most productivity out of the Visual Studio Code, we recommend this quick 1-hour online course, which will guide you through adding custom hotkeys, creating templates and boilerplates to increase coding speed, integrating with GitHub to be able to work on Git repositories without leaving VS Code. 2. RJ TextEd RJ TextEd is high on our list fighting for the spot of the best IDE for JavaScript. It is a full-featured text and source editor with Unicode support and all in all, a great IDE for web development. It supports not only JavaScript, but also PHP, ASP, HTML, and CSS. Some of the most important features of this web development IDE include but are not limited to: Auto-completion. Code folding Column mode Multi-edit and multi-select Document map Annotation bar Advanced sorting Handles both ASCII and binary files CSS and HTML wizards Highlighting of colors in CSS/SASS/LESS An advanced color hint that can convert between color formats Dockable panels FTP and SFTP client with synchronization File explorer, text clips, code explorer, project manager Convert between code pages, Unicode formats and text formats Unicode and ANSI code page detection Open/Save UTF-8 encoded files without a signature (BOM) Unicode file paths and file names HTML validation, format, and repair Tools available like syntax editor, color picker, charmap 3. Light Table Light Table is a […]

Read More

InterBase 2020 is here!

Embarcadero Technologies anunță disponibilitatea soluției InterBase 2020.  InterBase 2020 este alegerea perfectă pentru ISV / VAR / OEM în ce privește soluția de base de date la fel și pentru dezvoltatorii care au nevoie de o bază de date de înaltă calitate, cu un cost total ridicol de scăzut.  Cu o serie de caracteristici noi, inclusiv suport pentru tablespace, InterBase 2020 permite performanțe de top pe servere cu mai multe opțiuni de stocare a datelor. Caracteristici cheie ale ediției noi includ: Database Tablespaces New OS platforms support for embedded versions Android 64-bit macOS 64-bit Enhanced Performance Monitoring Data Dictionary DDL SQL optimizations Security enhancements Enhanced IBConsole for Windows InterBase este un engine de baze de date avansat, cu administrare ușoară, care poate rula pe dispozitivele tale mobile ca o bază de date încorporată. Versiunea InterBase 2020 adaugă o serie de caracteristici noi, inclusiv suportul pentru tablespace pentru InterBase, permițând performanțe mai bune pe infrastucutura existentă. InterBase va rula și va rula și va rula! Chiar și cu cele mai grele baze de date care prelucrează 10.000 de tranzacții per secundă, ar putea trece ani până când trebuie să faceți backup și să restaurați cel mai recent server de baze de date InterBase. Serverele InterBase sunt foarte bune din punct de vedere a administrării. Rover-ul marțian a folosit o copie pe Marte (este prea departe pentru a trimite un DBA!). InterBase a fost una dintre primele baze de date conforme cu standartele ACID pe piață, această înseamnând că se va recupera și va funcționa foarte rapid în urma oricărei blocări a serverului. De fapt, InterBase este foarte bun în acest sens, a fost implementat în soluții militare și echipamente medicale la nivel global, unde timpul de recuperare este esențial în urma oricărei reporniri a sistemului.

Read More

Black Friday Embarcadero 2019

Black Friday Embarcadero promoție pe bune! Numai pe data de 15 Noiembrie 2019 versiunea PROFESSIONAL a licențelor Embaracdero RAD Studio, Delphi sau C++ Builder cu o reducere de 25%! Numai în aceasta zi de Black Friday Embarcadero în Romania versiunea ENTERPRISE a licețelor RAD Studio, Delphi sau C++ Builder cu o reducere de necrezut 35%! Ofertă incredibilă pentru cei pasionați de mobile application development – 40% DISCOUNT pentru versiunea ARCHITECT a licențelor Embaracdero RAD Studio, Delphi sau C++ Builder numai pe data de 15 Noiembrie 2019! Oferta disponibilă pentru comenzi ferme plasate pe data de 15 Noiembrie 2019 cu condiția achitării contravalorii comenzii plasate până în data de 23 Noiembrie 2019. Solicitați oferta personalizată acum! Ediția 10.3.3 Rio este cea mai recentă ediție disponibilă la momentul actual, oferind caracteristici infinite de dezvoltare a aplicațiilor cross-platform cu supportul platformelor ceel mai populare penru momentul actual, care vă ajută să construiți, să testați și să implimentați aplicații moderne rapid și în limita bugetului. RAD Studio Rio (10.3) empowers developers to create stunning, high performing apps for Windows, macOS, iOS, Android and Linux Server*, using the same native code base. RAD Studio 10.3 makes significant improvements for C++ developers including C++17 Win32 support, improved code completion, debugging for optimized builds and new libraries. Delphi developers can now enjoy inline variable declaration, type inference, and more. For both C++ and Delphi developers, RAD Studio Rio brings enhancements to VCL for High DPI displays, Per Monitor V2 support, new Windows 10 and WinRT APIs, updated mobile platform support, and more. Finally, RAD Studio Rio adds more value and capabilities to the Enterprise edition with a RAD Server single site deployment license and an InterBase ToGo for mobile deployment license. The Architect edition now includes a Sencha ExtJS Professional license, InterBase ToGo for mobile deployment license, RAD Server multi-site deployment license, and an Aqua Data Studio license. These additional licenses expand web enablement, application backend server, and database capabilities for your enterprise applications. All New Architect Edition Power Pack Get more from the Architect Edition with these included Idera family licenses. Sencha ExtJS Professional license: Create your perfect web-enabled front end using javascript and ExtJS. ($1200 Value) InterBase ToGo mobile deployment license: Add data storage to your apps with this flexible, encrypted, embeddable database. RAD Server multi-site deployment license: Perfect for your microservices architecture backend. ($5000+ Value) Aqua Data Studio license: Versatile database design and administration, and data management and visualization. ($499 Value) GetIt now supports parallel downloads to get your new IDE installed with the latest components faster – So get downloading now and enjoy the 10.3 release.

Read More

How to: Configurarea RAD Server

RAD Server este un set de aplicații preconfigurate pentru construirea și implementarea rapidă a aplicațiilor de serviciu. RAD Server asigură publicarea și gestionarea automată a API-ului Delphi și C ++ REST / JSON, middleware-ul integrării bazei de date la nivel de întreprindere, IoT Edgeware și o serie de servicii de aplicații precum User Directory și servicii de autentificare, Notificări Push, Geolocalizare interioară / exterioară și stocare de date JSON. Există o serie de fișiere de configurare pentru acest tip de server: Locating the RAD Server Configuration File Configuring Database Connections [Data] Configuring Server Limits [Server.Limits] Configuring Server Authentication [Server.Keys] Configuring Custom Resource Modules [Server.Packages] Configuring Push Notifications [Server.Push] Configuring User and Group Permissions [Server.Authorization] Setting Resource Redirects [Server.Redirect] Configuring a Proxy [Server.EdgeHTTP] Enabling Multi-tenancy [Server.Tenants] Configuring The Server Root Path [Server.Roots] Configuring Public Paths [Server.PublicPaths] Configuring Dev Server Connections [Server.Connection.Dev] Configuring API Cross Domain Headers [Server.APICrossDomain] Configuring Dev Server Threads [Server.Threads.Dev] Configuring Console Logins, Cookies, And Display Options [Console] Configuring Dev Console Connections [Console.Connection.Dev] Configuring Console Browser Settings [Console.Browser] Configuring Console Paths [Console.Paths.*] Pentru mai multe detalii despre fieacre din ele accesati acest link. De când Embarcadero a început să includă RAD Server în ediția RAD Studio, a existat un utilitar puțin cunoscut disponibil pentru a gestiona instalațiile de la un client desktop. Această aplicație a fost denumită inițial consola Desktop EMS și a fost livrată atât ca un binar în folderul RAD Studio bin, cât și cu codul sursă complet în folderul cu codul sursă al produsului. În 10.3.2 am înlocuit acea aplicație cu o versiune rescrisă semnificativ, numită acum RAD Server Management Console și disponibilă ca rsconsole.exe. Interfața de utilizator a acestei aplicații FireMonkey a fost reproiectată semnificativ, după cum puteți vedea în imaginea de mai jos. Consola de server RAD folosește acum stiluri FireMonkey și poate comuta între un stil luminos și unul întunecat la timpul de rulare. Cealaltă modificare semnificativă este configurația conexiunii. Aceasta acoperea partea superioară a ecranului și acum a fost mutată într-o casetă de dialog separată. Panoul din stânga listează conexiunile pe care le-ați configurat deja (făcând o schimbare ușoară între diferite instanțe RAD Server) și dialogul este utilizat pentru a edita conexiuni sau pentru a adăuga altele noi.

Read More

Selectarea solutie SAST

Odată cu creșterea companiei și creșterea numărului de dezvoltatori, verificarea „manual” a prezenței vulnerabilităților devine din ce în ce mai dificilă. Devine necesar implementarea soluțiii SAST – testarea statică de securitate a aplicațiilor (Static Application Security Testing). Cum să alegi SAST? Nici o simplă vulnerabilitate nu poate fi găsită folosind algoritmi primitivi. Astăzi pe piață există o mulțime de soluții SAST, atât comerciale, cât și gratuite. Cele mai populare dintre ele sunt AppScan de la IBM Security, Synopsys, Veracode, Inspector de aplicații, MicroFocus, Appercut, Checkmarks. Eficiența procesului de dezvoltare depinde de alegerea soluției. Principalele avantaje ale soluțiilor comercial sunt: Concentrare pe securitate: algoritmi specifici și baze de reguli mari. Asistență pentru multe limbaje de programare. Interfață ușor de utilizat. Disponibilitatea pluginurilor și API-ului. Disponibilitatea suportului tehnic pentru instrument. Instrumentele gratuite și interfețele web sunt adesea inferioare celor plătite, deoarece conțin algoritmi mai simpli, iar bazele regulilor sunt mai puțin complete. Sarcina lor principală este de a găsi erori în cod. Specializarea și funcționalitatea acestor soluții este de obicei foarte restrânsă. Odată selectată soluția SAST, trebuie să o integrați în procesul de dezvoltare. Opțiunile de integrare pot include: încorporarea unui repozitoriu, medii de dezvoltare, servere CI / CD, sisteme de urmărire a sarcinilor. Un instrument bun este capabil să se integreze cu succes în toate clasele de sisteme enumerate. Notă: API-ul SAST deschis include API-ul JSON și CLI și oferă oportunități ample pentru integrarea și automatizarea suplimentară. Pentru a selecta instrumentul care îndeplinește cel mai mult obiectivele și obiectivele dezvoltatorului, trebuie să efectuați compararea funcțională și compararea lor în calitate. O comparație funcțională se realizează în funcție de mai mulți parametri: ei analizează comoditatea interfeței și comoditatea integrării cu instrumentele proprii. În același timp, este important să efectuați verificări pe propriile coduri. Următorul pas este o comparație a calității: analizează vulnerabilitățile și falsele pozitive în raport cu propriul cod. Nuanțele și subtilitățile analizei de cod Cu cât se constată mai devreme o vulnerabilitate, cu atât este mai ieftin pentru dezvoltator și pentru client. Acest lucru înseamnă că produsul trebuie verificat periodic pentru vulnerabilități în timpul procesului de dezvoltare și, în plus, să efectueze verificări de control înainte de eliberare. Viteză și resurse: de obicei este de așteptat ca instrumentul să funcționeze rapid; alergați la fiecare schimbare; arată pe zbor cine și când a introdus vulnerabilitatea. De fapt, SAST analizează codul timp de cel puțin 8 ore, este dificil să îl executați la fiecare modificare; este dificil să identifici autorul vulnerabilității; fals pozitive se întâmplă. Deci, apare întrebarea: cum să configurați DevSecOps. Este foarte important să: Calculați timpul și resursele pentru a vă analiza codul. Identificați declanșatorii pentru începerea unei scanări pe baza rezultatelor. Rețineți că puterea va trebui recalculată periodic. Este mai bine să folosiți o analiză incrementală, dar aceasta trebuie făcută cu prudență, deoarece vulnerabilitățile pot fi pierdute. De exemplu, puteți rula testarea folosind SAST atunci când un dezvoltator trimite o sarcină pentru revizuire. De asemenea, puteți începe scanarea la sfârșitul zilei de lucru. O altă problemă este falsul pozitiv și obținerea de informații despre vulnerabilități multiple în raport. În acest caz, dezvoltatorul este recomandat: să filtreze analizatorii statici în funcție de vulnerabilități și de fișiere. Puteți exclude bibliotecile, analiza criticitatea, adăuga excepții pentru anumiți parametri. Este suficient să faci o astfel de lucrare o singură dată, pentru ca, în […]

Read More

SAST pentru JavaScript in GitLab 11.8

Testarea statică a securității aplicațiilor (SAST) vă permite să găsiți vulnerabilități în cod de fiecare dată când trimiteți modificări în depozit. Cu aceste informații disponibile în cererea de îmbinare, puteți să aveți mai întâi grijă de securitate și să detectați probleme chiar înainte de a fi adăugate la sucursala stabilă. Datorită testării statice a securității aplicațiilor (SAST), GitLab scanează codul și ajută la detectarea potențialelor vulnerabilități chiar și în conductă. În versiunea 11.8, adăugăm limbi JavaScript la lista de SAST acceptate, pe baza suportului existent pentru node.js. Acum puteți scana orice fișiere JavaScript, scripturi statice și HTML. O practică importantă la DevSecOps chiar acum este scanarea modificărilor de fiecare dată când ne angajăm, iar cu această actualizare SAST acoperim unul dintre cele mai populare limbi web, ajutând utilizatorii să detecteze mai devreme riscurile în codul JavaScript. Odată cu lansarea 11.8, adăugăm JavaScript pe lista de limbi acceptate de functionalitati de scanare erori de securiate. Nu trebuie să schimbați nimic în conductele dvs., proiectele JavaScript sunt detectate și analizate automat pentru vulnerabilitățile de securitate. De asemenea, face parte din DevOps Auto. Dacă utilizați GitLab CI / CD, puteți analiza codul sursă pentru vulnerabilitățile cunoscute folosind testarea statică a securității aplicațiilor. Puteți profita de SAST fie prin includerea jobului CI în fișierul dvs. .gitlab-ci.yml existent, fie implicit folosind Auto SAST furnizat de Auto DevOps. GitLab verifică raportul SAST, compară vulnerabilitățile găsite între sucursalele și sucursalele-țintă și arată informațiile din dreptul cererii de îmbinare. Rezultatele sunt sortate în funcție de prioritatea vulnerabilităților: Critical High Medium Low Unknown Everything else Pentru a lansa un asemenea job, în mod implicit, aveți nevoie de GitLab Runner cu dockerul sau kubernetes care rulează în modul privilegiat. Dacă utilizați Runners partajat pe GitLab.com, aceasta este activată în mod implicit. Pentru GitLab 11.9 și versiuni ulterioare, pentru a activa functionalitatea, trebuie să includeți șablonul SAST.gitlab-ci.yml care este furnizat ca parte a instalării dvs. GitLab. Pentru versiunile GitLab anterioare datei de 11.9, puteți copia și utiliza jobul așa cum a fost definit acel șablon. Adăugați următoarele în fișierul dvs. .gitlab-ci.yml:

Read More

Ce nu vor putea niciodată static analysis

Ce este practic, source code static analysis? Trimitem câteva surse code la intrare, iar la ieșire într-un timp scurt (mult mai scurt decât testul) obținem câteva informații despre codul nostru. Limitarea fundamentală și insurmontabilă din punct de vedere matematic este că nu putem obține în acest fel o clasă destul de restrânsă de informații. Cel mai cunoscut exemplu de problemă care nu poate fi rezolvat cu ajutorul static analysis este problema de oprire: aceasta este o teoremă care dovedește că este imposibil să dezvolte un algoritm general care să determine prin codul sursă al unui program dacă se va bucla sau se va termina într-un timp finit. O extensie a acestei teoreme este teorema lui Rice, care afirmă că, pentru orice proprietate non-privată a funcțiilor computabile, a determina dacă un program arbitrar calculează o funcție cu această proprietate este o problemă algoritmic nesolvabilă. De exemplu, este imposibil să scrii un analizator care stabilește, folosind orice cod sursă, dacă programul analizat este o implementare a unui algoritm care calculează, să zicem, pătratul unui număr întreg. Astfel, funcționalitatea analizatorilor statici are limită insurmontabile. În toate cazurile, analizatorul static nu va putea niciodată să detecteze astfel de lucruri, cum ar fi, de exemplu, apariția unei „excepții de indicator nul” în limbile nuloase sau în toate cazurile va determina apariția unui „atribut care nu se găsește” în limbile tipizate dinamic. Tot ceea ce poate face cel mai avansat analizor static este să izoleze cazuri particulare, dintre care numărul dintre toate problemele posibile cu codul sursă este, fără exagerare, o scădere a găleții. Static analysis nu este o căutare a erorilor Concluzia rezultă din cele de mai sus: static analysis nu este un mijloc de reducere a numărului de defecte dintr-un program. Mă aventurez să spun: atunci când este aplicat pentru prima oară proiectului dvs., va găsi locuri „ocupate” în cod, dar cel mai probabil nu va găsi defecte care să afecteze calitatea programului. Exemplele de defecte găsite automat de analizatori sunt impresionante, dar nu trebuie să uităm că aceste exemple au fost găsite prin scanarea unui set mare de baze de coduri mari. După același principiu, crackerele care au capacitatea de a încerca câteva parole simple pe un număr mare de conturi găsesc în cele din urmă acele conturi care au o parolă simplă. Asta înseamnă că nu trebuie aplicată static analysis? Sigur că nu! Și, exact pentru același motiv, de ce merită să verificați fiecare nouă parolă pentru prezența acesteia în stop-list a parolelor „simple”.

Read More