In this article, I would like to share the results of our analysis of the open source implementation of the World of Warcraft server, CMaNGOS, as done by the PVS-Studio static analyzer.
Serious Sam shooter anniversary - finding bugs in the code of the Serious Eng...PVS-Studio
The first-person shooter 'Serious Sam' celebrated its release anniversary on March, 2016. In honor of this, the game developers form the Croatian company Croteam decided to open the source code for the game engine, Serious Engine 1 v.1.10. It provoked the interest of a large number of developers, who got an opportunity to have a look at the code and improve it. I have also decided to participate in the code improvement, and wrote an article reviewing the bugs that were found by PVS-Studio analyzer.
This time it was the microcosm that brought us a few interesting bugs. We have checked the open-source project μManager with our analyzer PVS-Studio. This project is a software package for automated microscope image acquisition.
Comparing the general static analysis in Visual Studio 2010 and PVS-Studio by...PVS-Studio
The article demonstrates errors detected with the static code analyzer integrated into Visual Studio 2010. The research was performed on five open source projects. The same projects were also checked with PVS-Studio. Results of comparing these two tools are presented at the end of the article.
Comparing the general static analysis in Visual Studio 2010 and PVS-Studio by...Andrey Karpov
The article demonstrates errors detected with the static code analyzer integrated into Visual Studio 2010. The research was performed on five open source projects. The same projects were also checked with PVS-Studio. Results of comparing these two tools are presented at the end of the article.
The document summarizes the results of analyzing the OpenCV computer vision library with the PVS-Studio code analyzer. Several real bugs were found in older versions of OpenCV and have since been fixed. New analysis of the current OpenCV version uncovered additional bugs, including copy-paste errors, meaningless loops, misprints in conditions, pointer errors, and poor test cases. The analysis demonstrates that static analysis is useful for finding real bugs in large, complex libraries like OpenCV during development.
To measure the efficiency of our analyzer, and also to promote the methodology of static analysis, we regularly analyze open source projects for bugs and write articles about the results. 2016 was no exception. This year is especially important as it is the year of the "growth" of the C# analyzer. PVS-Studio has obtained a large number of new C# diagnostics, an improved virtual values mechanism (symbolic execution) and much more. Based on the results of our teamwork, I compiled a kind of chart of the most interesting bugs, found in various C# projects in 2016.
Checking the code of Valgrind dynamic analyzer by a static analyzerPVS-Studio
This statement would be incorrect, as well as the reverse idea. The tools of static and dynamic analysis complement each other, they do not compete with each other. Both of these methods have strengths and weaknesses. Some errors cannot be detected by dynamic analyzers, some - by static ones. That's why I suggest treating this post as another demonstration of the abilities of PVS-Studio, not the comparison of two methodologies.
This document analyzes potential bugs in the Spring RTS game engine codebase. It identifies issues such as identical comparisons, missing checks of return values, inconsistent formatting, and improper pointer and memory handling. The author encourages the developers to carefully examine the issues flagged by the static analysis tool to make the code more robust.
A Spin-off: CryEngine 3 SDK Checked with CppCatAndrey Karpov
CppCat was used to analyze the CryEngine 3 SDK project. Several potential bugs were found, including redundant checks, missing function names, undefined behavior, careless entity names, and obsolete new operator usage. In total, over 30 issues were identified ranging from logical errors to style issues. Static analysis was recommended to find bugs early and reduce future issues.
Top 10 bugs in C++ open source projects, checked in 2016PVS-Studio
While the world is discussing the 89th Ceremony of Oscar award and charts of actors and costumes, we've decided to write a review article about the IT-sphere. The article is going to cover the most interesting bugs, made in open source projects in 2016. This year was remarkable for our tool, as PVS-Studio has become available on Linux OS. The errors we present are hopefully, already fixed, but every reader can see how serious are the errors made by developers.
Analyzing the Blender project with PVS-StudioPVS-Studio
We go on analyzing open source projects and making the software world better. This time we have checked the Blender 2.62 package intended for creating 3D computer graphics.
Checking the Cross-Platform Framework Cocos2d-xAndrey Karpov
Cocos2d is an open source software framework. It can be used to build games, apps and other cross-platform GUI based interactive programs. Cocos2d contains many branches with the best known being Cocos2d-Swift, Cocos2d-x, Cocos2d-html5 and Cocos2d-XNA.
In this article, we are going to discuss results of the check of Cocos2d-x, the framework for C++, done by PVS-Studio 5.18. The project is pretty high-quality, but there are still some issues to consider. The source code was downloaded from GitHub.
CppCat Checks OpenMW: Not All is Fine in the Morrowind UniverseAndrey Karpov
CppCat was used to analyze the source code of the OpenMW project, which aims to recreate the Elder Scrolls game Morrowind with open source code. CppCat found 12 fragments of suspicious code in OpenMW, including potential array overruns, redundant clear calls, infinite loops, null pointer issues, and logical errors. Analyzing source code with CppCat can help eliminate bugs and save development time.
About half a year ago we checked the Chromium project and wrote an article about it. The PVS-Studio analyzer naturally keeps developing, and in the new Chromium version we have found some errors undetected before. Many errors, of course, refer not to the Chromium project itself but to libraries it employs. But in this article I want to show you how the analyzer's capabilities have improved and not tell you about what we have found in this or that part of Chromium. That's why I will give messages together.
Comparing the general static analysis in Visual Studio 2010 and PVS-Studio by...PVS-Studio
The article demonstrates errors detected with the static code analyzer integrated into Visual Studio 2010. The research was performed on five open source projects. The same projects were also checked with PVS-Studio. Results of comparing these two tools are presented at the end of the article.
More than a year has passed since we analyzed Notepad++ with PVS-Studio. We wanted to see how much better the PVS-Studio analyzer has become since then and which of the previous errors have been fixed in Notepad++.
Virtual machines are important tools in the arsenal of a software developer. Being an active user of VirtualBox, and checking various open source projects with the help of it, I was personally interested in checking its source code. We did the first check of this project in 2014, and the description of 50 errors barely fit into two articles. With the release of Windows 10 and VirtualBox 5.0.XX the stability of the program got significantly worse, in my humble opinion. So, I decided to check the project again.
Rechecking TortoiseSVN with the PVS-Studio Code AnalyzerAndrey Karpov
The author downloaded and analyzed the source code of the TortoiseSVN project using the PVS-Studio static code analyzer. The analysis found several bugs, including identical comparisons, unsafe uses of formatting functions like printf(), and obsolete null checks after memory allocation. While many of the issues would not cause failures, some could lead to undefined behavior, especially in 64-bit systems where pointer sizes are larger than integer types. The author concludes by recommending regular use of static analysis to find bugs early.
Checking GIMP's Source Code with PVS-StudioAndrey Karpov
To check GIMP, we should first find a way to get it compile successfully. This task is far from easy, that's why we had been constantly delaying the check. However, the project is too famous, and we were very interested to find out its quality. So we have conquered our laziness and completed the analysis.
Virtual machines are used for very different tasks. Personally I have been using VirtualBox for many
years to test software and simply study various Linux distributions. And now, after years of using the
tool and encountering unexpected behavior every now and then, I've decided to make use of my
experience in analysis of open-source projects and check the source code of Oracle VM Virtual Box.
VirtualBox is
Waiting for the Linux-version: Checking the Code of Inkscape Graphics EditorPVS-Studio
In this article, I talk about the analysis results for another popular open-source project, vector graphics editor Inkscape 0.92. The project has been developing for over 12 years now and provides a large number of features to work with various vector-image formats. Over this time, its code base has grown up to 600 thousand lines of code, and now is the right time to check it with PVS-Studio static analyzer.
A Slipshod Check of the Visual C++ 2013 Library (update 3)Andrey Karpov
Someone suggested to me recently that I check the libraries from Visual Studio 2013. I haven't found
anything of much interest, just a few small errors and slip-ups. They wouldn't make an interesting,
attractive article, but I've still decided to describe all those defects. I just hope it will help make the
libraries a bit better and stimulate the authors to carry out a more thorough analysis. I don't have the
project files necessary to build the libraries, so my analysis had to be superficial and I could have missed
a lot.
Linux version of PVS-Studio couldn't help checking CodeLitePVS-Studio
As is already known to our readers, PVS-Studio static analyzer is exploring a new development direction - the Linux platform; as you may have noticed from the previous articles, it is doing well. This article shows how easily you can check a project with the help of the Linux version of the analyzer, because the simpler PVS-Studio for Linux is, the more supporters it will have. This time our choice was the CodeLite project. CodeLite was compiled and tested in Linux. Let's see what results we got.
After hot discussions on the article about "The Big Calculator" I felt like checking some other projects related to scientific computations. The first program that came to hand was the open-source project OpenMS dealing with protein mass spectrometry. This project appeared to have been written in a very serious and responsible way. Developers use at least Cppcheck to analyze their project. That's why I didn't hope to find anything sensational left unnoticed by that tool. On the other hand, I was curious to see what bugs PVS-Studio would be able to find in the code after Cppcheck. If you want to know this too, follow me.
Dusting the globe: analysis of NASA World Wind projectPVS-Studio
Sometimes it is useful to look back to see how helpful the analyzer was to old projects, and which errors can be avoided in good time, if the analyzer is regularly used. This time our choice was NASA World Wind project, which was being developed on C# until 2007.
Checking WinMerge with PVS-Studio for the second timePVS-Studio
The author analyzes the WinMerge project with the latest version of the PVS-Studio static code analyzer, finding several new errors compared to a previous analysis. Regular re-analysis is important as analyzers improve over time and new defects arise. Various logic errors are presented, such as unsigned integer comparisons that are always true, null pointer dereferences, and incorrect function argument types. The analyzer's ability to find new types of errors shows it continues advancing in correctly identifying defects.
Tesseract. Recognizing Errors in Recognition SoftwareAndrey Karpov
Tesseract is a free software program for text recognition developed by Google. According to the project description, "Tesseract is probably the most accurate open source OCR engine available". And what if we try to catch some bugs there with the help of the CppCat analyzer?
Porting is a Delicate Matter: Checking Far Manager under LinuxPVS-Studio
Far Manager, which takes over from Norton Commander, created back in the times of DOS, is one of the most popular file managers on Microsoft Windows. Far Manager facilitates the file system management (file creation, editing, viewing, copying, moving, search, and deletion) and provides means to extend the standard feature set (handling of the network, archives, backup copies, and so on). Far Manager was recently ported to Linux, and there is currently an alpha version available. The PVS-Studio team couldn't ignore that event and miss the opportunity to test the quality of the ported code.
Este documento presenta un proyecto pedagógico para enseñar operaciones con números enteros a estudiantes de quinto grado utilizando TIC. El proyecto tiene una duración de 2 meses y busca mejorar el aprendizaje de las tablas de multiplicar mediante herramientas digitales. Se describen la justificación, pregunta de investigación, objetivos generales y específicos, y competencias a desarrollar. También incluye los referentes conceptuales de Thorndike sobre el aprendizaje basado en estímulo-respuesta y de
A Spin-off: CryEngine 3 SDK Checked with CppCatAndrey Karpov
CppCat was used to analyze the CryEngine 3 SDK project. Several potential bugs were found, including redundant checks, missing function names, undefined behavior, careless entity names, and obsolete new operator usage. In total, over 30 issues were identified ranging from logical errors to style issues. Static analysis was recommended to find bugs early and reduce future issues.
Top 10 bugs in C++ open source projects, checked in 2016PVS-Studio
While the world is discussing the 89th Ceremony of Oscar award and charts of actors and costumes, we've decided to write a review article about the IT-sphere. The article is going to cover the most interesting bugs, made in open source projects in 2016. This year was remarkable for our tool, as PVS-Studio has become available on Linux OS. The errors we present are hopefully, already fixed, but every reader can see how serious are the errors made by developers.
Analyzing the Blender project with PVS-StudioPVS-Studio
We go on analyzing open source projects and making the software world better. This time we have checked the Blender 2.62 package intended for creating 3D computer graphics.
Checking the Cross-Platform Framework Cocos2d-xAndrey Karpov
Cocos2d is an open source software framework. It can be used to build games, apps and other cross-platform GUI based interactive programs. Cocos2d contains many branches with the best known being Cocos2d-Swift, Cocos2d-x, Cocos2d-html5 and Cocos2d-XNA.
In this article, we are going to discuss results of the check of Cocos2d-x, the framework for C++, done by PVS-Studio 5.18. The project is pretty high-quality, but there are still some issues to consider. The source code was downloaded from GitHub.
CppCat Checks OpenMW: Not All is Fine in the Morrowind UniverseAndrey Karpov
CppCat was used to analyze the source code of the OpenMW project, which aims to recreate the Elder Scrolls game Morrowind with open source code. CppCat found 12 fragments of suspicious code in OpenMW, including potential array overruns, redundant clear calls, infinite loops, null pointer issues, and logical errors. Analyzing source code with CppCat can help eliminate bugs and save development time.
About half a year ago we checked the Chromium project and wrote an article about it. The PVS-Studio analyzer naturally keeps developing, and in the new Chromium version we have found some errors undetected before. Many errors, of course, refer not to the Chromium project itself but to libraries it employs. But in this article I want to show you how the analyzer's capabilities have improved and not tell you about what we have found in this or that part of Chromium. That's why I will give messages together.
Comparing the general static analysis in Visual Studio 2010 and PVS-Studio by...PVS-Studio
The article demonstrates errors detected with the static code analyzer integrated into Visual Studio 2010. The research was performed on five open source projects. The same projects were also checked with PVS-Studio. Results of comparing these two tools are presented at the end of the article.
More than a year has passed since we analyzed Notepad++ with PVS-Studio. We wanted to see how much better the PVS-Studio analyzer has become since then and which of the previous errors have been fixed in Notepad++.
Virtual machines are important tools in the arsenal of a software developer. Being an active user of VirtualBox, and checking various open source projects with the help of it, I was personally interested in checking its source code. We did the first check of this project in 2014, and the description of 50 errors barely fit into two articles. With the release of Windows 10 and VirtualBox 5.0.XX the stability of the program got significantly worse, in my humble opinion. So, I decided to check the project again.
Rechecking TortoiseSVN with the PVS-Studio Code AnalyzerAndrey Karpov
The author downloaded and analyzed the source code of the TortoiseSVN project using the PVS-Studio static code analyzer. The analysis found several bugs, including identical comparisons, unsafe uses of formatting functions like printf(), and obsolete null checks after memory allocation. While many of the issues would not cause failures, some could lead to undefined behavior, especially in 64-bit systems where pointer sizes are larger than integer types. The author concludes by recommending regular use of static analysis to find bugs early.
Checking GIMP's Source Code with PVS-StudioAndrey Karpov
To check GIMP, we should first find a way to get it compile successfully. This task is far from easy, that's why we had been constantly delaying the check. However, the project is too famous, and we were very interested to find out its quality. So we have conquered our laziness and completed the analysis.
Virtual machines are used for very different tasks. Personally I have been using VirtualBox for many
years to test software and simply study various Linux distributions. And now, after years of using the
tool and encountering unexpected behavior every now and then, I've decided to make use of my
experience in analysis of open-source projects and check the source code of Oracle VM Virtual Box.
VirtualBox is
Waiting for the Linux-version: Checking the Code of Inkscape Graphics EditorPVS-Studio
In this article, I talk about the analysis results for another popular open-source project, vector graphics editor Inkscape 0.92. The project has been developing for over 12 years now and provides a large number of features to work with various vector-image formats. Over this time, its code base has grown up to 600 thousand lines of code, and now is the right time to check it with PVS-Studio static analyzer.
A Slipshod Check of the Visual C++ 2013 Library (update 3)Andrey Karpov
Someone suggested to me recently that I check the libraries from Visual Studio 2013. I haven't found
anything of much interest, just a few small errors and slip-ups. They wouldn't make an interesting,
attractive article, but I've still decided to describe all those defects. I just hope it will help make the
libraries a bit better and stimulate the authors to carry out a more thorough analysis. I don't have the
project files necessary to build the libraries, so my analysis had to be superficial and I could have missed
a lot.
Linux version of PVS-Studio couldn't help checking CodeLitePVS-Studio
As is already known to our readers, PVS-Studio static analyzer is exploring a new development direction - the Linux platform; as you may have noticed from the previous articles, it is doing well. This article shows how easily you can check a project with the help of the Linux version of the analyzer, because the simpler PVS-Studio for Linux is, the more supporters it will have. This time our choice was the CodeLite project. CodeLite was compiled and tested in Linux. Let's see what results we got.
After hot discussions on the article about "The Big Calculator" I felt like checking some other projects related to scientific computations. The first program that came to hand was the open-source project OpenMS dealing with protein mass spectrometry. This project appeared to have been written in a very serious and responsible way. Developers use at least Cppcheck to analyze their project. That's why I didn't hope to find anything sensational left unnoticed by that tool. On the other hand, I was curious to see what bugs PVS-Studio would be able to find in the code after Cppcheck. If you want to know this too, follow me.
Dusting the globe: analysis of NASA World Wind projectPVS-Studio
Sometimes it is useful to look back to see how helpful the analyzer was to old projects, and which errors can be avoided in good time, if the analyzer is regularly used. This time our choice was NASA World Wind project, which was being developed on C# until 2007.
Checking WinMerge with PVS-Studio for the second timePVS-Studio
The author analyzes the WinMerge project with the latest version of the PVS-Studio static code analyzer, finding several new errors compared to a previous analysis. Regular re-analysis is important as analyzers improve over time and new defects arise. Various logic errors are presented, such as unsigned integer comparisons that are always true, null pointer dereferences, and incorrect function argument types. The analyzer's ability to find new types of errors shows it continues advancing in correctly identifying defects.
Tesseract. Recognizing Errors in Recognition SoftwareAndrey Karpov
Tesseract is a free software program for text recognition developed by Google. According to the project description, "Tesseract is probably the most accurate open source OCR engine available". And what if we try to catch some bugs there with the help of the CppCat analyzer?
Porting is a Delicate Matter: Checking Far Manager under LinuxPVS-Studio
Far Manager, which takes over from Norton Commander, created back in the times of DOS, is one of the most popular file managers on Microsoft Windows. Far Manager facilitates the file system management (file creation, editing, viewing, copying, moving, search, and deletion) and provides means to extend the standard feature set (handling of the network, archives, backup copies, and so on). Far Manager was recently ported to Linux, and there is currently an alpha version available. The PVS-Studio team couldn't ignore that event and miss the opportunity to test the quality of the ported code.
Este documento presenta un proyecto pedagógico para enseñar operaciones con números enteros a estudiantes de quinto grado utilizando TIC. El proyecto tiene una duración de 2 meses y busca mejorar el aprendizaje de las tablas de multiplicar mediante herramientas digitales. Se describen la justificación, pregunta de investigación, objetivos generales y específicos, y competencias a desarrollar. También incluye los referentes conceptuales de Thorndike sobre el aprendizaje basado en estímulo-respuesta y de
El documento describe la estructura del Estado colombiano y sus diferentes componentes. Explica las tres ramas del poder público (ejecutiva, legislativa y judicial), los órganos de control, las entidades autónomas y la organización territorial. También define los sectores administrativos, los mecanismos de coordinación entre los diferentes niveles del Estado como consejos interinstitucionales, y las formas de descentralización administrativa.
Make Magic Happen! Best Practices w/ PA Teacher of the Year FinalistsMichael Soskil
This document summarizes best practices shared by four Pennsylvania Teachers of the Year at an event. It outlines global learning projects and strategies they use to engage students, including cultural exchanges, virtual field trips, mystery Skype calls, and collaborative online projects. Easy-to-implement tech tools are also described, such as Plickers for formative assessments, Today's Meet for discussion, and Answer Garden for brainstorming. The presentation aims to inspire teachers to incorporate global perspectives and technology into their classrooms to enhance student learning.
This document provides information about purchasing a 3Com 3C510600 product from Launch 3 Telecom. It describes the product, payment and shipping options, warranty, and additional services offered by Launch 3 Telecom such as repairs, maintenance contracts, de-installation, and recycling. Customers can purchase the 3C510600 by phone, email, or online form and receive same day shipping with tracking if their order is placed by 3PM EST.
Practical Guides on Programming with Big Number Library in Scientific Researchestheijes
This article demonstrates some practical skills in programming with GMP and MPFR big number libraries according to the traits of big numbers and C/C++ programming conventions. It points out that, the conditional expressions, the incremental treatment, the loops together with their stops, and the pointer arguments are critical issues in C/C++ programming with the big number libraries. By exhibiting certain guidance and demonstration, the article summarizes a framework to the program that treats big number computations and presents a sample as well as numerical experiments to factorize big odd composite number.
Este proyecto propone implementar un software educativo llamado "El bingo multiplicativo" como estrategia para motivar a los estudiantes de 4to grado de una escuela en Colombia a mejorar en el cálculo mental y algoritmo de la multiplicación. El software se usará por 1 mes para enseñar las tablas de multiplicar a través de un juego de bingo interactivo en el computador.
Higiene de frutas y hortalizas frescasBrian Cerros
Este documento presenta un anteproyecto de revisión del Código de Prácticas de Higiene para las Frutas y Hortalizas Frescas. Se discuten varias modificaciones propuestas al código, incluyendo la adición y modificación de definiciones, la consolidación de disposiciones entre el código principal y sus anexos, y cuestiones relacionadas con el uso de agua y agentes antimicrobianos. Se invita al comité a examinar el anteproyecto de revisión y se proporcionan antecedentes sobre las discusiones del
A pesar de tener una balanza comercial positiva, su economía depende principalmente de la explotación petrolífera debido a su salida al mar Caucásico y razón por la que explica su elevado cambio monetario. Desde su independencia de la Unión Soviética, observadores europeos encuentran numerosas irregularidades en sus elecciones electorales del poder ejecutivo, en donde el actual presidente , hijo de su predecesor, fomenta una larga dinastía en el poder, a pesar de haber cambiado de forma de gobierno en 1995. Mantiene buenas relaciones con los EEUU habiendo incrementado su presencia militar en la OTAN, al igual que con la UE, a la cual podría entrar al mercado de libre comercio si las condiciones lo permiten.
Este proyecto pedagógico tiene como objetivo fortalecer la lecto-escritura de los estudiantes a través del embellecimiento del entorno escolar de la Sede Educativa Santa Cruz. Se llevarán a cabo varias actividades como la adecuación del terreno, la recolección y siembra de plantas ornamentales, y la elaboración y colocación de carteles, con el fin de mejorar la imagen de la institución y motivar a los estudiantes. El proyecto contará con la participación de estudiantes, padres y un doc
Este documento presenta la ficha técnica de un curso de PowerPoint para oposiciones. El objetivo general del curso es obtener los conocimientos y habilidades necesarias para aprobar las pruebas teóricas y prácticas de ofimática en procesos de selección pública. El curso dura 75 horas y cubre temas como crear y diseñar presentaciones, trabajar con diapositivas, texto, imágenes, tablas, gráficos y multimedia, así como publicar presentaciones e interactuar con PowerPoint en internet. El curso finaliza
The document outlines a marketing plan for an app called BookMania that allows users to buy, sell, lend, and borrow books, textbooks, magazines, and periodicals. The app aims to connect sellers, lenders, and borrowers to make exchanging materials easy. It will function like a digital library. The target consumers are students and young adults. The first year goals are to achieve 10,000 users, 500 sellers, 1000 lenders/borrowers, and complete 5000 transactions. The strategy is to build an affordable and easy-to-use mobile interface with discounts, promotions, and reliable service.
This document provides an introduction to web intelligence and big data. It discusses the Turing test, Moore's Law and Kryder's Law to outline how computing power and data storage have grown exponentially. It then defines what constitutes big data today based on the scale of data from websites like Facebook, Twitter, Google and corporations. Finally, it discusses how companies have used parallel programming and the MapReduce paradigm rather than traditional databases and data warehousing to analyze massive amounts of data and develop predictive intelligence.
Este documento propone rediseñar el aula audiovisual del Centro Educativo Calle Nueva en Sahagún, Córdoba, Colombia para transformarlo en un aula audiovirtual que permita usar recursos didácticos tecnológicos para facilitar la trasversalidad curricular. El rediseño beneficiaría a los estudiantes del centro educativo al permitir compartir recursos y realizar actividades curriculares de manera virtual.
Este documento propone aprovechar los residuos de jabones sólidos y aceites domésticos para darles una segunda vida extendiendo su uso en labores de aseo e higiene. Plantea recolectar y transformar estos residuos en jabón líquido o sólido mediante un proceso de saponificación, lo que permitiría reutilizarlos mientras se contribuye a reducir la contaminación. El objetivo general es desarrollar una cultura ambiental en los estudiantes para el aprovechamiento de recursos que habitualmente se desechan.
Este documento presenta un proyecto pedagógico para implementar estrategias de aprendizaje significativo de los números a través de las TIC en estudiantes de primer grado. El proyecto busca motivar a los estudiantes en el área de matemáticas utilizando herramientas tecnológicas para resolver problemas cotidianos. Incluye objetivos, temática, actividades y una metodología centrada en el aprendizaje activo a través de la resolución de problemas basados en situaciones reales con apoyo de software educativo.
The document discusses Persian empires throughout history including the Achaemenid Empire, Parthian Empire, Sasanian Empire, and Samanid Empire. It then provides information about Edward FitzGerald, the English poet best known for his translation of The Rubaiyat of Omar Khayyam, including details about the different editions of his translation. Finally, it notes that according to the Encyclopedia Britannica, the poems reveal a man troubled by questions of the nature of reality, impermanence of life, and man's relationship to God.
El documento propone implementar patios productivos en la comunidad de Vida Tranquila para sensibilizar a la comunidad sobre la importancia de cultivar hortalizas. Los objetivos son sensibilizar a los padres sobre la producción de hortalizas, conocer su importancia con ayuda de las TIC, y mejorar las condiciones de vida. Los patios productivos vincularían a niños, jóvenes y padres en la siembra de hortalizas para mejorar las relaciones familiares y comunitarias y la nutrición.
Este documento presenta un proyecto para implementar las TIC en las clases de educación física en un colegio en Barranquilla, Colombia. El proyecto se enfoca en usar videos, computadores, televisores y otros recursos tecnológicos para motivar a los estudiantes de primaria y mejorar su participación en las clases teóricas de educación física. El proyecto actualmente se encuentra en la etapa de diagnóstico y formulación, y los resultados esperados incluyen una mayor participación de los estudiantes y el desarrollo
Analysis of Haiku Operating System (BeOS Family) by PVS-Studio. Part 1PVS-Studio
Operating systems are among the largest and most complicated software projects, and that means they perfectly suit the purpose of demonstrating static code analysis' capabilities. After the successful analysis of Linux Kernel, I felt inspired to try analyzing other open-source operating systems as well.
In May 2016, German game-development company Crytek made the, decision to upload the source code of their game engine, 'CryEngine V' to GitHub. The project is in active development, which leads to a large number of errors in the code. We have already checked the project with PVS-Studio for Windows, and now we can also analyze it using PVS-Studio for Linux. There was enough material for an article with the description of only crucial errors.
A Spin-off: Firebird Checked by PVS-StudioAndrey Karpov
We are currently working on a great task of carrying out a detailed comparison of four code analyzers: CppCat, Cppcheck, PVS-Studio and Visual Studio 2013 (i.e. its built-in code analyzer). As a set of materials to base this comparison on, we decided to check at least 10 open-source projects and study the reports from all the analyzers. This is a very labor-intensive task and it is not over yet. However, we have already checked a few projects and can share some of the results with you. And that's what I'm going to do in this article. We'll start with interesting bugs we have managed to find in Firebird with the help of PVS-Studio.
Re-checking the ReactOS project - a large reportPVS-Studio
The ReactOS project is rapidly developing. One of the developers participating in this project suggested that we re-analyzed the source code, as the code base is growing fast. We were glad to do that. We like this project, and we'll be happy if this article helps the developers to eliminate some bugs. Analysis was performed with the PVS-Studio 5.02 code analyzer.
A new version of Firebird DBMS was released not so long ago. This release was one of the most significant in the project's history, as it marked substantial revision of the architecture, addition of multithreading support, and performance improvements. Such a significant update was a good occasion for us to scan Firebird one more time with PVS-Studio static code analyzer.
A new version of Firebird DBMS was released not so long ago. This release was one of the most significant in the project's history, as it marked substantial revision of the architecture, addition of multithreading support, and performance improvements. Such a significant update was a good occasion for us to scan Firebird one more time with PVS-Studio static code analyzer.
How to make fewer errors at the stage of code writing. Part N4.PVS-Studio
This is the fourth post in which I want to share with you some useful observations on error patterns and the ways of fighting them. This time I will touch upon the subject of handling rare and emergency conditions in programs. While examining a number of applications, I came to a conclusion that the error handling code is one of the most unreliable parts in C/C++ programs' sources. What are the consequences of such defects? An application must generate the message "file X is not found" but instead it crashes and forces the user to make guesses about what he/she is doing wrong. A program handling a data base produces an incomprehensible message instead of telling the user that there is just a field filled in incorrectly. Let's try to fight against this type of errors that haunt our users.
In this article, I'm going to tell you about my experience of analyzing the Octave project. It is quite a popular one, especially among students who need to scan their math task solutions yet don't feel like buying a Matlab license.
Analysis of Haiku Operating System (BeOS Family) by PVS-Studio. Part 2PVS-Studio
The document summarizes analysis of the Haiku operating system using the PVS-Studio static analyzer. Various bugs and issues were detected, including: incorrect string handling, bad loops, improper use of variables with the same name, array overruns, unsafe memory handling, and other logical errors. The analyzer identified multiple areas for improvement to enhance code quality and eliminate potential bugs.
Checking the Code of LDAP-Server ReOpenLDAP on Our Readers' RequestPVS-Studio
In this article, I'd like to talk about the analysis of ReOpenLDAP project. It was developed to help solve issues that PAO (PJSC) MegaFon, Russia's largest mobile network operator, was faced with when employing OpenLDAP in their infrastructure. ReOpenLDAP is now successfully used in MegaFon affiliates all over Russia, so we thought it would be interesting to check such a high-load project as this one with our static analyzer PVS-Studio.
Intel IPP Samples for Windows - error correctionPVS-Studio
This is one of my posts on how PVS-Studio makes programs safer. That is where and what types of errors it detects. This time it is samples demonstrating handling of the IPP 7.0 library (Intel Performance Primitives Library) we are going to examine.
Intel IPP Samples for Windows - error correctionAndrey Karpov
This is one of my posts on how PVS-Studio makes programs safer. That is where and what types of errors it detects. This time it is samples demonstrating handling of the IPP 7.0 library (Intel Performance Primitives Library) we are going to examine.
Checking Wine with PVS-Studio and Clang Static AnalyzerAndrey Karpov
In this article, I'm going to tell you about the check of the Wine project done by the static analyzers for C/C++ code PVS-Studio and Clang Static Analyzer.
Just recently I've checked the VirtualDub project with PVS-Studio. This was a random choice. You see, I believe that it is very important to regularly check and re-check various projects to show users that the PVS-Studio analyzer is evolving, and which project you run it on doesn't matter that much - bugs can be found everywhere. We already checked the VirtualDub project in 2011, but we found almost nothing of interest then. So, I decided to take a look at it now, 2 years later.
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...Andre Hora
Unittest and pytest are the most popular testing frameworks in Python. Overall, pytest provides some advantages, including simpler assertion, reuse of fixtures, and interoperability. Due to such benefits, multiple projects in the Python ecosystem have migrated from unittest to pytest. To facilitate the migration, pytest can also run unittest tests, thus, the migration can happen gradually over time. However, the migration can be timeconsuming and take a long time to conclude. In this context, projects would benefit from automated solutions to support the migration process. In this paper, we propose TestMigrationsInPy, a dataset of test migrations from unittest to pytest. TestMigrationsInPy contains 923 real-world migrations performed by developers. Future research proposing novel solutions to migrate frameworks in Python can rely on TestMigrationsInPy as a ground truth. Moreover, as TestMigrationsInPy includes information about the migration type (e.g., changes in assertions or fixtures), our dataset enables novel solutions to be verified effectively, for instance, from simpler assertion migrations to more complex fixture migrations. TestMigrationsInPy is publicly available at: https://github.com/altinoalvesjunior/TestMigrationsInPy.
Scaling GraphRAG: Efficient Knowledge Retrieval for Enterprise AIdanshalev
If we were building a GenAI stack today, we'd start with one question: Can your retrieval system handle multi-hop logic?
Trick question, b/c most can’t. They treat retrieval as nearest-neighbor search.
Today, we discussed scaling #GraphRAG at AWS DevOps Day, and the takeaway is clear: VectorRAG is naive, lacks domain awareness, and can’t handle full dataset retrieval.
GraphRAG builds a knowledge graph from source documents, allowing for a deeper understanding of the data + higher accuracy.
This presentation explores code comprehension challenges in scientific programming based on a survey of 57 research scientists. It reveals that 57.9% of scientists have no formal training in writing readable code. Key findings highlight a "documentation paradox" where documentation is both the most common readability practice and the biggest challenge scientists face. The study identifies critical issues with naming conventions and code organization, noting that 100% of scientists agree readable code is essential for reproducible research. The research concludes with four key recommendations: expanding programming education for scientists, conducting targeted research on scientific code quality, developing specialized tools, and establishing clearer documentation guidelines for scientific software.
Presented at: The 33rd International Conference on Program Comprehension (ICPC '25)
Date of Conference: April 2025
Conference Location: Ottawa, Ontario, Canada
Preprint: https://arxiv.org/abs/2501.10037
Designing AI-Powered APIs on Azure: Best Practices& ConsiderationsDinusha Kumarasiri
AI is transforming APIs, enabling smarter automation, enhanced decision-making, and seamless integrations. This presentation explores key design principles for AI-infused APIs on Azure, covering performance optimization, security best practices, scalability strategies, and responsible AI governance. Learn how to leverage Azure API Management, machine learning models, and cloud-native architectures to build robust, efficient, and intelligent API solutions
Copy & Paste On Google >>> https://dr-up-community.info/
EASEUS Partition Master Final with Crack and Key Download If you are looking for a powerful and easy-to-use disk partitioning software,
FL Studio Producer Edition Crack 2025 Full Versiontahirabibi60507
Copy & Past Link 👉👉
http://drfiles.net/
FL Studio is a Digital Audio Workstation (DAW) software used for music production. It's developed by the Belgian company Image-Line. FL Studio allows users to create and edit music using a graphical user interface with a pattern-based music sequencer.
Explaining GitHub Actions Failures with Large Language Models Challenges, In...ssuserb14185
GitHub Actions (GA) has become the de facto tool that developers use to automate software workflows, seamlessly building, testing, and deploying code. Yet when GA fails, it disrupts development, causing delays and driving up costs. Diagnosing failures becomes especially challenging because error logs are often long, complex and unstructured. Given these difficulties, this study explores the potential of large language models (LLMs) to generate correct, clear, concise, and actionable contextual descriptions (or summaries) for GA failures, focusing on developers’ perceptions of their feasibility and usefulness. Our results show that over 80% of developers rated LLM explanations positively in terms of correctness for simpler/small logs. Overall, our findings suggest that LLMs can feasibly assist developers in understanding common GA errors, thus, potentially reducing manual analysis. However, we also found that improved reasoning abilities are needed to support more complex CI/CD scenarios. For instance, less experienced developers tend to be more positive on the described context, while seasoned developers prefer concise summaries. Overall, our work offers key insights for researchers enhancing LLM reasoning, particularly in adapting explanations to user expertise.
https://arxiv.org/abs/2501.16495
Adobe Master Collection CC Crack Advance Version 2025kashifyounis067
🌍📱👉COPY LINK & PASTE ON GOOGLE http://drfiles.net/ 👈🌍
Adobe Master Collection CC (Creative Cloud) is a comprehensive subscription-based package that bundles virtually all of Adobe's creative software applications. It provides access to a wide range of tools for graphic design, video editing, web development, photography, and more. Essentially, it's a one-stop-shop for creatives needing a broad set of professional tools.
Key Features and Benefits:
All-in-one access:
The Master Collection includes apps like Photoshop, Illustrator, InDesign, Premiere Pro, After Effects, Audition, and many others.
Subscription-based:
You pay a recurring fee for access to the latest versions of all the software, including new features and updates.
Comprehensive suite:
It offers tools for a wide variety of creative tasks, from photo editing and illustration to video editing and web development.
Cloud integration:
Creative Cloud provides cloud storage, asset sharing, and collaboration features.
Comparison to CS6:
While Adobe Creative Suite 6 (CS6) was a one-time purchase version of the software, Adobe Creative Cloud (CC) is a subscription service. CC offers access to the latest versions, regular updates, and cloud integration, while CS6 is no longer updated.
Examples of included software:
Adobe Photoshop: For image editing and manipulation.
Adobe Illustrator: For vector graphics and illustration.
Adobe InDesign: For page layout and desktop publishing.
Adobe Premiere Pro: For video editing and post-production.
Adobe After Effects: For visual effects and motion graphics.
Adobe Audition: For audio editing and mixing.
Douwan Crack 2025 new verson+ License codeaneelaramzan63
Copy & Paste On Google >>> https://dr-up-community.info/
Douwan Preactivated Crack Douwan Crack Free Download. Douwan is a comprehensive software solution designed for data management and analysis.
Download YouTube By Click 2025 Free Full Activatedsaniamalik72555
Copy & Past Link 👉👉
https://dr-up-community.info/
"YouTube by Click" likely refers to the ByClick Downloader software, a video downloading and conversion tool, specifically designed to download content from YouTube and other video platforms. It allows users to download YouTube videos for offline viewing and to convert them to different formats.
Interactive Odoo Dashboard for various business needs can provide users with dynamic, visually appealing dashboards tailored to their specific requirements. such a module that could support multiple dashboards for different aspects of a business
✅Visit And Buy Now : https://bit.ly/3VojWza
✅This Interactive Odoo dashboard module allow user to create their own odoo interactive dashboards for various purpose.
App download now :
Odoo 18 : https://bit.ly/3VojWza
Odoo 17 : https://bit.ly/4h9Z47G
Odoo 16 : https://bit.ly/3FJTEA4
Odoo 15 : https://bit.ly/3W7tsEB
Odoo 14 : https://bit.ly/3BqZDHg
Odoo 13 : https://bit.ly/3uNMF2t
Try Our website appointment booking odoo app : https://bit.ly/3SvNvgU
👉Want a Demo ?📧 [email protected]
➡️Contact us for Odoo ERP Set up : 091066 49361
👉Explore more apps: https://bit.ly/3oFIOCF
👉Want to know more : 🌐 https://www.axistechnolabs.com/
#odoo #odoo18 #odoo17 #odoo16 #odoo15 #odooapps #dashboards #dashboardsoftware #odooerp #odooimplementation #odoodashboardapp #bestodoodashboard #dashboardapp #odoodashboard #dashboardmodule #interactivedashboard #bestdashboard #dashboard #odootag #odooservices #odoonewfeatures #newappfeatures #odoodashboardapp #dynamicdashboard #odooapp #odooappstore #TopOdooApps #odooapp #odooexperience #odoodevelopment #businessdashboard #allinonedashboard #odooproducts
How can one start with crypto wallet development.pptxlaravinson24
This presentation is a beginner-friendly guide to developing a crypto wallet from scratch. It covers essential concepts such as wallet types, blockchain integration, key management, and security best practices. Ideal for developers and tech enthusiasts looking to enter the world of Web3 and decentralized finance.
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...Egor Kaleynik
This case study explores how we partnered with a mid-sized U.S. healthcare SaaS provider to help them scale from a successful pilot phase to supporting over 10,000 users—while meeting strict HIPAA compliance requirements.
Faced with slow, manual testing cycles, frequent regression bugs, and looming audit risks, their growth was at risk. Their existing QA processes couldn’t keep up with the complexity of real-time biometric data handling, and earlier automation attempts had failed due to unreliable tools and fragmented workflows.
We stepped in to deliver a full QA and DevOps transformation. Our team replaced their fragile legacy tests with Testim’s self-healing automation, integrated Postman and OWASP ZAP into Jenkins pipelines for continuous API and security validation, and leveraged AWS Device Farm for real-device, region-specific compliance testing. Custom deployment scripts gave them control over rollouts without relying on heavy CI/CD infrastructure.
The result? Test cycle times were reduced from 3 days to just 8 hours, regression bugs dropped by 40%, and they passed their first HIPAA audit without issue—unlocking faster contract signings and enabling them to expand confidently. More than just a technical upgrade, this project embedded compliance into every phase of development, proving that SaaS providers in regulated industries can scale fast and stay secure.
Who Watches the Watchmen (SciFiDevCon 2025)Allon Mureinik
Tests, especially unit tests, are the developers’ superheroes. They allow us to mess around with our code and keep us safe.
We often trust them with the safety of our codebase, but how do we know that we should? How do we know that this trust is well-deserved?
Enter mutation testing – by intentionally injecting harmful mutations into our code and seeing if they are caught by the tests, we can evaluate the quality of the safety net they provide. By watching the watchmen, we can make sure our tests really protect us, and we aren’t just green-washing our IDEs to a false sense of security.
Talk from SciFiDevCon 2025
https://www.scifidevcon.com/courses/2025-scifidevcon/contents/680efa43ae4f5
Join Ajay Sarpal and Miray Vu to learn about key Marketo Engage enhancements. Discover improved in-app Salesforce CRM connector statistics for easy monitoring of sync health and throughput. Explore new Salesforce CRM Synch Dashboards providing up-to-date insights into weekly activity usage, thresholds, and limits with drill-down capabilities. Learn about proactive notifications for both Salesforce CRM sync and product usage overages. Get an update on improved Salesforce CRM synch scale and reliability coming in Q2 2025.
Key Takeaways:
Improved Salesforce CRM User Experience: Learn how self-service visibility enhances satisfaction.
Utilize Salesforce CRM Synch Dashboards: Explore real-time weekly activity data.
Monitor Performance Against Limits: See threshold limits for each product level.
Get Usage Over-Limit Alerts: Receive notifications for exceeding thresholds.
Learn About Improved Salesforce CRM Scale: Understand upcoming cloud-based incremental sync.
Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)Andre Hora
Exceptions allow developers to handle error cases expected to occur infrequently. Ideally, good test suites should test both normal and exceptional behaviors to catch more bugs and avoid regressions. While current research analyzes exceptions that propagate to tests, it does not explore other exceptions that do not reach the tests. In this paper, we provide an empirical study to explore how frequently exceptional behaviors are tested in real-world systems. We consider both exceptions that propagate to tests and the ones that do not reach the tests. For this purpose, we run an instrumented version of test suites, monitor their execution, and collect information about the exceptions raised at runtime. We analyze the test suites of 25 Python systems, covering 5,372 executed methods, 17.9M calls, and 1.4M raised exceptions. We find that 21.4% of the executed methods do raise exceptions at runtime. In methods that raise exceptions, on the median, 1 in 10 calls exercise exceptional behaviors. Close to 80% of the methods that raise exceptions do so infrequently, but about 20% raise exceptions more frequently. Finally, we provide implications for researchers and practitioners. We suggest developing novel tools to support exercising exceptional behaviors and refactoring expensive try/except blocks. We also call attention to the fact that exception-raising behaviors are not necessarily “abnormal” or rare.
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...Ranjan Baisak
As software complexity grows, traditional static analysis tools struggle to detect vulnerabilities with both precision and context—often triggering high false positive rates and developer fatigue. This article explores how Graph Neural Networks (GNNs), when applied to source code representations like Abstract Syntax Trees (ASTs), Control Flow Graphs (CFGs), and Data Flow Graphs (DFGs), can revolutionize vulnerability detection. We break down how GNNs model code semantics more effectively than flat token sequences, and how techniques like attention mechanisms, hybrid graph construction, and feedback loops significantly reduce false positives. With insights from real-world datasets and recent research, this guide shows how to build more reliable, proactive, and interpretable vulnerability detection systems using GNNs.
Microsoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdfTechSoup
In this webinar we will dive into the essentials of generative AI, address key AI concerns, and demonstrate how nonprofits can benefit from using Microsoft’s AI assistant, Copilot, to achieve their goals.
This event series to help nonprofits obtain Copilot skills is made possible by generous support from Microsoft.
What You’ll Learn in Part 2:
Explore real-world nonprofit use cases and success stories.
Participate in live demonstrations and a hands-on activity to see how you can use Microsoft 365 Copilot in your own work!
Solidworks Crack 2025 latest new + license codeaneelaramzan63
Copy & Paste On Google >>> https://dr-up-community.info/
The two main methods for installing standalone licenses of SOLIDWORKS are clean installation and parallel installation (the process is different ...
Disable your internet connection to prevent the software from performing online checks during installation
Solidworks Crack 2025 latest new + license codeaneelaramzan63
Checking the World of Warcraft CMaNGOS open source server
1. Checking the World of Warcraft CMaNGOS
open source server
Author: Egor Bredikhin
Date: 14.02.2017
In this article, I would like to share the results of our analysis of the open source implementation of the
World of Warcraft server, CMaNGOS, as done by the PVS-Studio static analyzer.
Introduction
C(ontinued)MaNGOS is an actively developing offshoot of an old project: MaNGOS (Massive Network
Game Object Server), which was made in order to create an alternative server for the World of Warcraft
game. The majority of MaNGOS developers continue working in CMaNGOS.
According to the developers themselves, their goal is to create a "well written server in C++" for one of
the best MMORPGs. I'll try to help them with this, by checking CMaNGOS using the static analyzer, PVS-
Studio.
Note: To do the analysis we used CMaNGOS-Classic server, available in the project repository on GitHub.
2. The analysis results
An error in the operation precedence
PVS-Studio warning: V593 Consider reviewing the expression of the 'A = B < C' kind. The expression is
calculated as following: 'A = (B < C)'. SpellEffects.cpp 473
void Spell::EffectDummy(SpellEffectIndex eff_idx)
{
....
if (uint32 roll = urand(0, 99) < 3) // <=
....
else if (roll < 6)
....
else if (roll < 9)
....
....
}
The author assumed that the roll variable would be assigned with a random value, and then this value
would be compared with 3. However, the priority of the comparison operation is higher than of the
assignment operation (see the table "Operation priorities in C/C++", so the random number will be
compared with 3 first, and then the result of the comparison (0 or 1) will be written to the roll variable.
This error can be corrected by placing parentheses thusly:
if ((uint32 roll = urand(0, 99)) < 3)
Similar actions in the if and else blocks
PVS-Studio warning: V523 The 'then' statement is equivalent to the 'else' statement. SpellAuras.cpp
1537
void Aura::HandleAuraModShapeshift(bool apply, bool Real)
{
switch (form)
{
case FORM_CAT:
....
case FORM_TRAVEL:
....
case FORM_AQUA:
if (Player::TeamForRace(target->getRace()) == ALLIANCE)
modelid = 2428; // <=
else
modelid = 2428; // <=
....
}
....
}
In both blocks the variable modelid is assigned with the same value; most likely, this is an error and the
constant in one of the blocks should be replaced with another.
3. Undefined behavior
PVS-Studio warning: V567 Undefined behavior. The 'm_uiMovePoint' variable is modified while being
used twice between sequence points. boss_onyxia.cpp 405
void UpdateAI(const uint32 uiDiff) override
{
....
switch (urand(0, 2))
{
case 0:
....
case 1:
{
// C++ is stupid, so add -1 with +7
m_uiMovePoint += NUM_MOVE_POINT - 1;
m_uiMovePoint %= NUM_MOVE_POINT;
break;
}
case 2:
++m_uiMovePoint %= NUM_MOVE_POINT; // <=
break;
}
....
}
In the specified string the variable m_uiMovePoint is modified twice within one sequence point, which
leads to undefined behavior of the program. You may find more information in the description of the
V567 diagnostic.
A similar error:
V567 Undefined behavior. The 'm_uiCrystalPosition' variable is modified while being used twice
between sequence points. boss_ossirian.cpp 150
An error in the condition
PVS-Studio warning: V547 Expression is always false. Probably the '||' operator should be used here.
SpellEffects.cpp 2872
void Spell::EffectEnchantItemTmp(SpellEffectIndex eff_idx)
{
....
// TODO: Strange stuff in following code
// shaman family enchantments
if (....)
duration = 300;
else if (m_spellInfo->SpellIconID == 241 &&
m_spellInfo->Id != 7434)
duration = 3600;
else if (m_spellInfo->Id == 28891 &&
m_spellInfo->Id == 28898) // <=
duration = 3600;
....
}
4. In the specified condition, the variable m_spellInfo->Id is verified against two different values at the
same time. The result of this check is always false, of course. The author most likely made a mistake and
instead of '||' operator used '&&'.
It should be noted that the program commented on strange code behavior, and perhaps, it was caused
by this error exactly.
There were several errors like this, here is the full list:
V547 Expression is always false. Probably the '||' operator should be used here. SpellEffects.cpp
2872
V547 Expression is always true. Probably the '&&' operator should be used here.
genrevision.cpp 261
V547 Expression is always true. Probably the '&&' operator should be used here.
vmapexport.cpp 361
V547 Expression is always true. Probably the '&&' operator should be used here. MapTree.cpp
125
V547 Expression is always true. Probably the '&&' operator should be used here. MapTree.cpp
234
Suspicious formatting
PVS-Studio warning: V640 The code's operational logic does not correspond with its formatting. The
statement is indented to the right, but it is always executed. It is possible that curly brackets are missing.
instance_blackrock_depths.cpp 111
void instance_blackrock_depths::OnCreatureCreate(Creature* pCreature)
{
switch (pCreature->GetEntry())
{
....
case NPC_HAMMERED_PATRON:
....
if (m_auiEncounter[11] == DONE)
pCreature->SetFactionTemporary(....);
pCreature->SetStandState(UNIT_STAND_STATE_STAND); // <=
break;
case NPC_PRIVATE_ROCKNOT:
case NPC_MISTRESS_NAGMARA:
....
}
}
The author may have forgotten to put curly braces after the if statement, which caused the call
pCreature->SetStandState(UNIT_STAND_STATE_STAND) to be executed regardless of the if condition.
If this behavior was meant intentionally, then the formatting should be corrected:
if (m_auiEncounter[11] == DONE)
pCreature->SetFactionTemporary(....);
pCreature->SetStandState(UNIT_STAND_STATE_STAND);
5. Similar operands in the ternary operator
PVS-Studio warning: V583 The '?:' operator, regardless of its conditional expression, always returns one
and the same value: SAY_BELNISTRASZ_AGGRO_1. razorfen_downs.cpp 104
void AttackedBy(Unit* pAttacker) override
{
....
if (!m_bAggro)
{
DoScriptText(urand(0, 1) ?
SAY_BELNISTRASZ_AGGRO_1 : // <=
SAY_BELNISTRASZ_AGGRO_1, // <=
m_creature, pAttacker);
m_bAggro = true;
}
....
}
The second and third operands of the ternary operator are identical; this is most likely an error. Judging
by the code of the project, we can assume that one of the operands should have the value
SAY_BELNISTRASZ_AGGRO_2.
Integer division
PVS-Studio warning: V674 The '0.1f' literal of the 'float' type is compared to a value of the 'unsigned int'
type. item_scripts.cpp 44
bool ItemUse_item_orb_of_draconic_energy(....)
{
....
// If Emberstrife is already mind controled or above 10% HP:
// force spell cast failure
if (pEmberstrife && pEmberstrife->HasAura(SPELL_DOMINION_SOUL)
|| pEmberstrife->GetHealth() /
pEmberstrife->GetMaxHealth() > 0.1f) // <=
{
....
return true;
}
return false;
}
The method Unit::GetHealth() returns the value of the uint32_t type, and the method
Unit::GetMaxHealth() also returns the value of the uint32_t type, so the result of the division is an
integer, and it's pointless comparing it with 0.1f.
To correctly identify 10% of the health, this code can be rewritten like this:
// If Emberstrife is already mind controled or above 10% HP:
// force spell cast failure
if (pEmberstrife && pEmberstrife->HasAura(SPELL_DOMINION_SOUL)
|| ((float)pEmberstrife->GetHealth()) /
((float)pEmberstrife->GetMaxHealth()) > 0.1f)
{
....
6. return true;
}
Unconditional exit from the for loop
PVS-Studio warning: V612 An unconditional 'break' within a loop. Pet.cpp 1956
void Pet::InitPetCreateSpells()
{
....
for (SkillLineAbilityMap::const_iterator
_spell_idx = bounds.first; _spell_idx != bounds.second;
++_spell_idx)
{
usedtrainpoints += _spell_idx->second->reqtrainpoints;
break; // <=
}
....
}
It was not clear what was meant here, but an unconditional break statement in the body of the for loop
looks very suspicious. Even if there is no error here, it's better to refactor the code, and get rid of the
unnecessary loop, because the iterator _spell_idx takes a single value.
The same warning:
V612 An unconditional 'break' within a loop. Pet.cpp 895
Redundant condition
PVS-Studio warning: V728 An excessive check can be simplified. The '||' operator is surrounded by
opposite expressions '!realtimeonly' and 'realtimeonly'. Player.cpp 10536
void Player::UpdateItemDuration(uint32 time, bool realtimeonly)
{
....
if ((realtimeonly && (....)) || !realtimeonly) // <=
item->UpdateDuration(this, time);
....
}
The check (a && b) || !a can be simplified to !a || b, which can be seen in the truth table:
Thus, the original expression can be simplified to:
void Player::UpdateItemDuration(uint32 time, bool realtimeonly)
7. {
....
if (!(realtimeonly) || (....))
item->UpdateDuration(this, time);
....
}
Testing this for null
PVS-Studio warning: V704 '!this ||!pVictim' expression should be avoided: 'this' pointer can never be
NULL on newer compilers. Unit.cpp 1417
void Unit::CalculateSpellDamage(....)
{
....
if (!this || !pVictim) // <=
return;
....
}
According to modern C++ standards, the "this" pointer can never be null. Often, comparing this with
zero can cause unexpected errors. You may find more information about this in the description of the
V704 diagnostic.
Similar checks:
V704 '!this ||!pVictim' expression should be avoided: 'this' pointer can never be NULL on newer
compilers. Unit.cpp 1476
V704 '!this ||!pVictim' expression should be avoided: 'this' pointer can never be NULL on newer
compilers. Unit.cpp 1511
V704 '!this ||!pVictim' expression should be avoided: 'this' pointer can never be NULL on newer
compilers. Unit.cpp 1797
Unjustified passing by reference
PVS-Studio warning: V669 The 'uiHealedAmount' argument is a non-constant reference. The analyzer is
unable to determine the position at which this argument is being modified. It is possible that the
function contains an error. boss_twinemperors.cpp 109
void
HealedBy(Unit* pHealer, uint32& uiHealedAmount) override // <=
{
if (!m_pInstance)
return;
if (Creature* pTwin =
m_pInstance->GetSingleCreatureFromStorage(
m_creature->GetEntry() == NPC_VEKLOR ?
NPC_VEKNILASH :
NPC_VEKLOR))
{
float fHealPercent = ((float)uiHealedAmount) /
((float)m_creature->GetMaxHealth());
uint32 uiTwinHeal =
(uint32)(fHealPercent * ((float)pTwin->GetMaxHealth()));
8. uint32 uiTwinHealth = pTwin->GetHealth() + uiTwinHeal;
pTwin->SetHealth(uiTwinHealth < pTwin->GetMaxHealth() ?
uiTwinHealth :
pTwin->GetMaxHealth());
}
}
The variable uiHealedAmount is passed by reference, but is not changed in the body of the function. This
can be misleading, because we get the impression that the HealedBy() function writes something to the
uiHealedAmount. It would be better to pass the variable by a constant reference or by value.
Repeated assignment
PVS-Studio warning: V519 The 'stat' variable is assigned values twice successively. Perhaps this is a
mistake. Check lines: 1776, 1781. DetourNavMeshQuery.cpp 1781
dtStatus dtNavMeshQuery::findStraightPath(....) const
{
....
if (....)
{
stat = appendPortals(apexIndex, i, closestEndPos, // <=
path, straightPath, straightPathFlags,
straightPathRefs, straightPathCount,
maxStraightPath, options);
}
stat = appendVertex(closestEndPos, 0, path[i], // <=
straightPath, straightPathFlags,
straightPathRefs, straightPathCount,
maxStraightPath);
....
}
The analyzer detected a suspicious fragment, where the stat variable is assigned with different values
twice. This code is definitely worth reviewing.
Verifying a pointer against null after new
PVS-Studio warning: V668 There is no sense in testing the 'pmmerge' pointer against null, as the
memory was allocated using the 'new' operator. The exception will be generated in the case of memory
allocation error. MapBuilder.cpp 553
void MapBuilder::buildMoveMapTile(....)
{
....
rcPolyMesh** pmmerge =
new rcPolyMesh*[TILES_PER_MAP * TILES_PER_MAP];
if (!pmmerge) // <=
{
printf("%s alloc pmmerge FIALED! r", tileString);
9. return;
}
....
}
Verification of a pointer against null is pointless after the new operator. If it is impossible to allocate
memory, the new operator throws an exception std::bad_alloc(), it doesn't return nullptr. Which means
that the program will never enter the block after the condition.
To correct this error, we could allocate the memory in the try {....} catch(const std::bad_alloc &) {....}
block or use the new(std::nothrow) construction for allocation of the memory, which won't throw
exceptions in the case of a failure.
Similar checks of the pointers:
V668 There is no sense in testing the 'data' pointer against null, as the memory was allocated
using the 'new' operator. The exception will be generated in the case of memory allocation
error. loadlib.cpp 36
V668 There is no sense in testing the 'dmmerge' pointer against null, as the memory was
allocated using the 'new' operator. The exception will be generated in the case of memory
allocation error. MapBuilder.cpp 560
V668 There is no sense in testing the 'm_session' pointer against null, as the memory was
allocated using the 'new' operator. The exception will be generated in the case of memory
allocation error. WorldSocket.cpp 426
Incorrect order of arguments
PVS-Studio warning: V764 Possible incorrect order of arguments passed to 'loadVMap' function: 'tileY'
and 'tileX'. MapBuilder.cpp 279
void MapBuilder::buildTile(uint32 mapID,
uint32 tileX, uint32 tileY,
dtNavMesh* navMesh, uint32 curTile,
uint32 tileCount)
{
....
// get heightmap data
m_terrainBuilder->loadMap(mapID,
tileX, tileY,
meshData);
// get model data
m_terrainBuilder->loadVMap(mapID,
tileY, tileX, // <=
meshData);
....
}
The analyzer detected suspicious passing of arguments to the function - the arguments tileX and tileY
swapped places.
If we have a look at the prototype of the function loadVMap(), then we can clearly see that this is an
error.
bool loadVMap(uint32 mapID,
10. uint32 tileX, uint32 tileY,
MeshData& meshData);
Two identical blocks of code
PVS-Studio warning: V760 Two identical blocks of text were found. The second block begins from line
213. BattleGround.cpp 210
BattleGround::BattleGround()
: m_BuffChange(false),
m_StartDelayTime(0),
m_startMaxDist(0)
{
....
m_TeamStartLocO[TEAM_INDEX_ALLIANCE] = 0;
m_TeamStartLocO[TEAM_INDEX_HORDE] = 0;
m_BgRaids[TEAM_INDEX_ALLIANCE] = nullptr;
m_BgRaids[TEAM_INDEX_HORDE] = nullptr;
m_PlayersCount[TEAM_INDEX_ALLIANCE] = 0; // <=
m_PlayersCount[TEAM_INDEX_HORDE] = 0; // <=
m_PlayersCount[TEAM_INDEX_ALLIANCE] = 0; // <=
m_PlayersCount[TEAM_INDEX_HORDE] = 0; // <=
m_TeamScores[TEAM_INDEX_ALLIANCE] = 0;
m_TeamScores[TEAM_INDEX_HORDE] = 0;
....
}
The same actions are performed twice in this fragment. This code is most likely as a result of using Copy-
Paste.
Duplicate condition
PVS-Studio warning: V571 Recurring check. The 'isDirectory' condition was already verified in line 166.
FileSystem.cpp 169
FileSystem::Dir&
FileSystem::getContents(const std::string& path,
bool forceUpdate)
{
// Does this path exist on the real filesystem?
if (exists && isDirectory) // <=
{
// Is this path actually a directory?
if (isDirectory) // <=
{
....
}
....
}
....
}
11. IsDirectory condition is checked twice. We can remove the duplicate check.
Bit wise AND with a null constant
PVS-Studio warning: V616 The 'SPELL_DAMAGE_CLASS_NONE' named constant with the value of 0 is
used in the bitwise operation. Spell.cpp 674
void Spell::prepareDataForTriggerSystem()
{
....
if (IsPositiveSpell(m_spellInfo->Id))
{
if (m_spellInfo->DmgClass & SPELL_DAMAGE_CLASS_NONE) // <=
{
m_procAttacker = PROC_FLAG_DONE_SPELL_NONE_DMG_CLASS_POS;
m_procVictim = PROC_FLAG_TAKEN_SPELL_NONE_DMG_CLASS_POS;
}
}
....
}
The constant SPELL_DAMAGE_CLASS_NONE has a null value, and the bitwise AND of any number and
null is a null, therefore the condition will always be false, and the next block will never be executed.
A similar error:
V616 The 'SPELL_DAMAGE_CLASS_NONE' named constant with the value of 0 is used in the
bitwise operation. Spell.cpp 692
Potential dereference of a null pointer
PVS-Studio warning: V595 The 'model' pointer was utilized before it was verified against nullptr. Check
lines: 303, 305. MapTree.cpp 303
bool StaticMapTree::InitMap(const std::string& fname,
VMapManager2* vm)
{
....
WorldModel* model =
vm->acquireModelInstance(iBasePath, spawn.name);
model->setModelFlags(spawn.flags); // <=
....
if (model) // <=
{
....
}
....
}
The pointer model is verified against null; i.e. it can be equal to zero, however the pointer is used earlier
without any checks. It's clear that it is a potential null pointer dereference.
To correct this error, you should check the value of the model pointer before calling a method model-
>setModelFlags(spawn.flags).
Similar warnings:
12. V595 The 'model' pointer was utilized before it was verified against nullptr. Check lines: 374,
375. MapTree.cpp 374
V595 The 'unit' pointer was utilized before it was verified against nullptr. Check lines: 272, 290.
Object.cpp 272
V595 The 'updateMask' pointer was utilized before it was verified against nullptr. Check lines:
351, 355. Object.cpp 351
V595 The 'dbcEntry1' pointer was utilized before it was verified against nullptr. Check lines:
7123, 7128. ObjectMgr.cpp 7123
Conclusion
As always, PVS-Studio found a large number of suspicious places and errors in the code. I hope the
CMaNGOS developers will fix all these flaws, and will also start using static analysis on a regular basis,
because a one-time check is not that effective.
Also, I should remind you that everyone can use PVS-Studio static analyzer for free, upon certain
conditions, described on the site.
P.S. You can offer to check any interesting project with our analyzer using feedback form or GitHub. You
can find all the details here.