Posts Tagged ‘Tool’

WinMusik

WinMusik is a platform-independent software for managing music on audio CDs, DVDs, Music cassettes, records, MP3 discs and other recordings. It consists essentially an input screen for the title and a search function. Organize various type of data with this tool. WinMusik is a useful and…

How we have Solved an Engineering task for Several Years in PVS-Studio

At first I wanted to title this post “How PVS-Studio enables cheap integration of static code analysis into the development process” but I decided not to do it because of the ambiguous interpretation of the word “cheap”. So I will tell you about one engineering problem we had to solve constantly to enable people to use our product. Going a bit ahead I want so say that we seem to have solved it. So, having developed the first full version of our static code analyzer (that was called Viva64 at the time and served to detect 64-bit errors) back in 2007, we faced an issue of tool’s integration by our users. Our clients are companies that have at least several tens of developers and at least several hundred thousand code lines. Any static analyzer will generate plenty of warnings on a code of that size. For instance, our tool generated up to several thousand messages on one project. Yes, of course, the trouble here is with false reports of analyzers. But any analyzer has false reports and you can’t help it. A question rose what users were to do with a lot of messages they got? That is, the problem looked as follows: a potential user downloads a program (trial-version), launches it and gets ten thousand messages. It certainly makes him sad, he uninstalls the program – and one more client is lost for us. The first thing we did is removing double messages at once. The analyzer checks C/C++ projects and sometimes it happens that an error in an .h-file is reported during the check of several .cpp-files that use it. We don’t have this doubling. Then we added capabilities of analysis result filtering (and then we constantly improved them): filtering by error code, by message text, a capability not to check files by masks and so on. All this allowed us to significantly reduce the number of messages but only after customization. At the first use, a person would get a pile of messages all the same. So, message filtering is an important tool but it did not solve the initial problem – difficulty of integrating the tool into the development process. Then the analyzer acquired the new mechanism “Mark as False Alarm”. Its principle is adding comments of a special kind (//-V112) into the code to suppress the analyzer-generated messages. Having marked the code in such a way, in future you will get error-reports only for those code fragments that do not have this marking. Ideally it will be only newly added code. Although the problem of integrating the analyzer into the team development process became a bit simpler, still it required that several members of the team marked the code first to remove rubbish messages. The next step towards solution of the integration problem was the capability to check only files modified during the last several days. It was much closer to the idea of starting to get profit from static analysis at once. But the problem remained. A user doesn’t know about this feature and if we enable it by default it won’t be clear why so few files are checked. But I repeat this again – the direction seemed right to us. So we went on and made a new super feature “Incremental Analysis after Build”. The analyzer now launches right after the compilation and checks only those files which have been affected by user editing. Unlike checking files for the last several days (when editing of the developer team was could be checked), the user now sees errors ONLY in the code he directly handles. Programmers now won’t worry about large sizes of code they do not deal with. Perhaps this code is older than 5 years; it virtually doesn’t endure any modifications and most defects in it have been fixed. You don’t need to rush and check this code first of all, and the analyzer doesn’t. The programmer will see warnings only in the fresh code. And if he has some time left, he may check the project in full and peep into the most rarely visited places. Yes, the analyzer still produces false reports. Yes, filters haven’t become less important. But there is another thing that counts. We have managed to reduce the cost of INTEGRATION (costs of people’s efforts on startup) of the static analyzer to zero. That is, a person now downloads the static analyzer, installs it and IMMEDIATELY starts getting profit from it without any additional efforts. But there remained one last thing to complete the task. All was good, but it was difficult to notice it when the analyzer found errors. Color change of the PVS-Studio window’s icon (as we made it in the beginning) is not so visible while in Visual Studio 2005 it doesn’t work at all. The solution was to make a pop-up message. Surely, we all don’t like all those importunate pop-up notes. But in this case it will be useful to programmers for sure and it will appear rarely on condition that they do not make a lot of errors in code. So, the engineering task of integrating static analysis into the development process has been solved. That is why the Incremental Analysis after Build mode will be enabled by default in Incremental Analysis after Build. The conclusion is simple. Now developers should not get afraid of difficulties of static code analysis integration because they can simply download PVS-Studio, install it and study errors that will be detected in newly developed code.

Antediluvian Holes and Pegs o’ my Heart

Have you ever been confronted and confused by too many choices? Seven Deadly Sins ? Thirty-one flavors ? 5000 fingers of Dr. T ? 10,000 Maniacs ? Sometimes it is enough to make you throw up your hands in surrender and not do anything. Now, there is help for the parallel programmer that feels she has too many options to do the exact same thing. A new article has been posted, ” Square Pegs and Round Holes – Choosing the Right Intel® Software Development Tools ,” that summarizes the spectrum of programming and software tool that are available from Intel. If you have an idea about what kind of computation you need to parallelize, this article can give you some insight as to the features and usage models for the wide variety of programming options and software tool functions. Once you’ve been able to home in on one or two that seem to support the kind of processing your application will be doing, you can do a more focused search to delve deeper into those methods and tools. The table at the end of the article also tells you what platforms are supported by each. You can quickly tell if your execution targets are supported without spending time wading through online product pages or skimming through the whole reference manual before you find out the tool you’re researching is not yet supported there. Of course, with many things, especially ice cream, you can always default to  the standard vanilla option. (There’s nothing wrong with that; in fact, vanilla is one of my favorite flavors.) However, sometimes Rocky Road is a better solution. If you don’t know about it or are unfamiliar with even the basics of any other “flavors,” you can miss an opportunity to make your parallel development tasks easier. And then you may be trying to drive your square pegs into those round holes.

Right Click Enhancer 1.1

Right Click Enhancer gives you power to control the ultimate right click menu everyone use every day. Right Click Enhancer allows you to edit your right click menu in the way you want. Now with help of this wonderful tool you can add some good features to your right click context menu. Some of the functions it does described below. Right Click Tweaker As name tells this part of a Right Click Enhancer does some tweaks stuff. All of this tweaks are very useful for everyday work. It makes your life easier. All of the tweaks are listed below with there functionality. (1) Copy To Folder & Move To Folder :- When you choose one of the options from the menu, you browse to any place on your hard disk to copy or move the file to that folder. You doesn´t have to navigate to the place where you want to paste your file. (2) Create or Print File List :- Allows you to print or create file list of a folder by right clicking on folder and selecting one of the option. (3) Encrypt & Decrypt :- Allows you to encrypt and decrypt your files and folders. Files encrypted can´t be operable by another user on the PC. (4) Open In Notepad :- Allows user to open any file in notepad by just right clicking it. (5) Open file location :- Allows user to open the file location by right clicking its shortcut. (6) Administrator Command Prompt :- Allows user to open an elevated command prompt with highest privileges from any folder by right clicking it. (7) God Mode & System Configuration Utility (Vista or 7) :- Add the options to open System Configuration Utility(msconfig) and famous god mod from user´s right click menu. (8)Problem Step Recorder (Windows 7) :- Problem Step Recorder is a hidden feature of the Windows 7.This tool bring this to your right click menu. My Computer Manager Allows user to add the files or folders to their My Computer,Control Panel or Desktop. User can add folders by directly by right clicking on it by enabling the right click options from My Computer Manager.User can delete those folder directly from My Comuter or Control Panel by right click delete option and then refreshing.Windows XP user can only add the folders and executable files (.exe). Send To Manager Allows user to add folder to their send to menu. So user can copy any files instantly to the selected location. User can remove it from the SendTo Manager.You can add folder shortcut directly by right clicking on it. Right Click Cascading Menu Shortcuts Creator (Windows 7) Allows user to add cascading menus to their right click. When user add a cascading menu Right Click Cascading Menu Shortcuts Creator automatically adds a option to right click menu to add the files and folders to cascading menu by just right clicking any files or folder. User can also add files and folder from within the application by selecting cascading menu and clicking the add buttons. User can remove the cascading menu or files or folder associated with cascading menu. Right Click Shortcuts Creator (Vista or 7) Allows user to add the files or folders to their right click context menu.You can delete files and folders currently in right click menu. What´s New in version 1.1: Some bug fixes for Right Click Tweaker on Windows XP. Some bug fixes in Right Click Cascading Menu Shortcuts Creator. Homepage : http://rbsoft.weebly.com/ Download : Right Click Enhancer 1.1/setup.exe File Size : 1.19MB

Progress on the next Yocto Project release

I’m cross-posting this from my blog on the Yocto Project site . Head over there to check out videos, documentation and more stories about embedded Linux and the Yocto Project. We had a lot of excitement last April when we launched the 1.0 version of the Yocto Project. We celebrated a little while, and then got ourselves back to work to begin working on the next release of the Yocto Project, due in October. The Yocto Project Advisory Board made a recommendation that we keep things simple on naming this next release. So we’re calling it “version 1.1.” We laid out our proposed features at the Linux Foundation Collaboration Summit with those who were interested in collaborating, and we started work on design and cutting code. This week we released our first development milestone for the 1.1 release. Just as a reminder, we have three main development milestones which serve as synch points for features. For each of these we have a development window, and then a stabilization phase and a QA pass. We don’t do extensive validation of these, but we do enough to understand the level of functionality we have at each of these points in the project, to prevent surprises at the end. If you want to track our development progress, you can always look at our schedule wiki page which we keep up to date at a very close level from week to week. As I said, our M1 release came out this week, as announced by Beth Flanagan . In the M1 milestone, we have a number of features complete and demonstratable: A rebranding of many areas of the project to reflect that we derive from the “OpenEmbedded Core” upstream project. This means for example that instead of doing ” bitbake poky-image-sato ,” you would instead build the ” core-image-sato ” target. We have shifted our tool chain to GCC v4.6. We try to do this early in the development cycle, to ensure that any issues have been shaken out before release. We have some of our core packages upgraded. Our license infrastructure has been upgraded to provide more consistency and quality, and our LICENSE parser has been upgraded. We have a lot more work ahead of us. I’m very excited about the progress on multi-lib and the Hob and other features which we have ahead of us, as well as the complete set of package upgrades. If you are interested in the new M1 bits and want to try them out, now would be a great time to dig into them.

GenomeView

View genome files with this tool. GenomeView is a genome browser and annotation editor that displays reference sequence, annotation, multiple alignments, short read alignments and graphs. Most major data formats are supported. Local and internet files can be loaded. GenomeView Features: 1…. [ CAD Software ]

Wincry

Concerned the safety of your data? With this tool, you can password-protect and encrypt your folders so no one can access them. This program works excellent for protecting data better than any other firewall, anti-spyware and folder-lock solutions. [ File Encryption ]

Digital story telling by Blurb

Designed by Claire Barry the launching of Blurb mobile permits user to create their own stories and narrate it to others through iPhones and iPods. This idea has been designed by Blurb to promote mobile shareable stories.     By using this application mobile users can use photo, video and audio support from their devices to make stories more interesting. It is just another way to turn their media content to make it more elegant and interesting. Blurb mobile users can design the beginning, middle and end of their story and are also provided with the facility of rotating and sequencing events and drag them wherever they want to fit it. The complete stories could now be communicated to social media groups via email, Facebook or Twitter. Although this idea of storytelling is a veteran concept, Blurb has designed a completely refined artistic technique to allow users to create stories even while walking around. This is a great move by Blurb to enter into digital story telling. How far the story tellers are going to benefit from this tool remains to be seen.

Difficulties of comparing code analyzers, or don’t forget about usability

Abstract Users’ desire to compare different code analyzers is natural and understandable. However, it’s not so easy to fulfill this desire as it may seem at first sight. The point is that you don’t know what particular factors must be compared. Introduction If we eliminate such quite ridiculous ideas like “we should compare the number of diagnosable errors” or “we should compare the number of tool-generated messages”, then even the reasonable parameter “signal-to-noise ratio” doesn’t seem to be an ideal criterion of estimating code analyzers. You doubt that it’s unreasonable to compare the mentioned parameters? Here you are some examples. What parameters are just unreasonable to compare Let’s take a simple (at first sight) characteristic like the number of diagnostics. It seems that the more diagnostics, the better. But the general number of rules doesn’t matter for the end user who exploits a particular set of operating systems and compilers. Diagnostic rules which are relevant to systems, libraries and compilers he doesn’t use won’t give him anything useful. They even disturb him overloading the settings system and documentation, and complicate use and integration of the tool. Here you an analogy: say, a man comes in a store to buy a heater. He is interested in the domestic appliances department and it’s good if this department has a wide range of goods. But the customer doesn’t need other departments. It’s OK if he can buy a inflatable boat, cell phone or chair in this store. But the inflatable boats department doesn’t enlarge the range of heaters anyway. Take, for instance, the Klockwork tool that supports a lot of various systems, including exotic ones. One of them has a compiler that easily “swallows” this code: inline int x; The Klocwork analyzer has a special diagnostic message to detect this anomaly in code: “The ‘inline’ keyword is applied to something other than a function or method”. Well, it seems good to have such a diagnostic. But developers using the Microsoft Visual C++ compiler or any other adequate compiler won’t benefit from this diagnostic anyhow. Visual C++ simply doesn’t compile this code: “error C2433: ‘x’ : ‘inline’ not permitted on data declarations”. Another example. Some compilers provide poor support of the bool type. So Klockwork may warn you when a class member is assigned the bool type: “PORTING.STRUCT.BOOL: This checker detects situations in which a struct/class has a bool member”. “They wrote bool in class! How awful…” It’s clear that only few developers will benefit from having this diagnostic message. There are plenty of such examples. So it turns out that the number of diagnostic rules in no way is related to the number of errors an analyzer can detect in a particular project. An analyzer implementing 100 diagnostics and intended for Windows-applications can find much more errors in a project built with Microsoft Visual Studio than a cross-platform analyzer implementing 1000 diagnostics. The conclusion is the number of diagnostic rules cannot be relevant when comparing analyzers by usability. You may say: “OK, let’s compare the number of diagnostics relevant for a particular system then. For instance, let’s single out all the rules to search for errors in Windows-applications”. But this approach doesn’t work either. There are two reasons for that: First, it may be that some diagnostic is implemented in one diagnostic rule in some analyzer and in several rules in some other analyzer. If you compare them by the number of diagnostics, the latter analyzer seems better although they both have the same functional to detect a certain type of errors. Second, implementation of certain diagnostics may be of different quality. For instance, nearly all the analyzers have the search of “magic numbers”. But, say, some analyzer can detect only magic numbers dangerous from the viewpoint of code migration to 64-bit systems (4, 8, 32, etc) and some other simply detects all the magic numbers (1, 2, 3, etc). So it won’t do if we only write a plus mark for each analyzer in the comparison table. They also like to take the characteristic of tool’s speed or number of code lines processessed per second. But it’s unreasonable from the viewpoint of practice either. There is no relation between the speed of a code analyzer and speed of analysis performed by man! First, code analysis is often launched automatically during night builds. You just must “be in time” for the morning. And second, they often forget about the usability parameter when comparing analyzers. Well, let’s study this issue in detail. Tool’s usability is very important for adequate comparison The point is that usability of a tool influences the practice of real use of code analyzers very much… We have checked the eMule project recently with two code analyzers estimating the convenience of this operation in each case. One of the tools was a static analyzer integrated into some Visual Studio editions. The second analyzer was our PVS-Studio . We at once encountered several issues when handling the code analyzer integrated into Visual Studio. And those issues did not relate to the analysis quality itself or speed. The first issue is that you cannot save a list of analyzer-generated messages for further examination. For instance, while checking eMule with the integrated analyzer, I got two thousand messages. No one can thoroughly investigate them all at once, so you have to examine them for several days. But the impossibility to save analysis results causes me to re-analyze the project each time, which tires me very much. PVS-Studio allows you to save analysis results for you to continue examining them later. The second issue is about the way how processing of duplicate analyzer-messages is implemented. I mean diagnosis of problems in header files (.h-files). Say the analyzer has detected an issue in an .h-file included into ten .cpp-files. While analyzing each of these ten .cpp-files, the Visual Studio-integrated analyzer produces the same message about the issue in the .h-file ten times! Here you are a real sample. The following message was generated more than ten times while checking eMule: c:usersevgdocumentsemuleplusdialogmintraybtn.hpp(450): warning C6054: String ‘szwThemeColor’ might not be zero-terminated: Lines: 434, 437, 438, 443, 445, 448, 450 Because of this, analysis results get messy and you have to review almost the same messages. I should say, PVS-Studio has been filtering duplicate messages instead of showing them to user since the very beginning. The third issue is generation of messages on issues in plug-in files (from folders like C:Program Files (x86)Microsoft Visual Studio 10.0VCinclude). The analyzer built into Visual Studio is not ashamed to attaint system header files although there is little sense in it. Again, here you are an example. We got several times one and the same message about system files while checking eMule: 1> c:program files (x86)microsoft sdkswindowsv7.0aincludews2tcpip.h(729): warning C6386: Buffer overrun: accessing ‘argument 1′, the writable size is ’1*4′ bytes, but ’4294967272′ bytes might be written: Lines: 703, 704, 705, 707, 713, 714, 715, 720, 721, 722, 724, 727, 728, 729 Nobody will ever edit system files. What for to “curse” them? PVS-Studio has never done that. Into the same category we can place the impossibility to tell the analyzer not to perform mask-check of certain files, for instance, all the files “*_generated.cpp” or “c:libs”. You may specify exception files in PVS-Studio. The fourth issue relates to the very process of handling the list of analyzer-generated messages. Of course, you may disable any diagnostic messages by code in any code analyzer. But it can be done at different convenience levels. To be more exact, the question is: should analysis be relaunched to hide unnecessary messages by code or not. In the Visual-Studio-integrated analyzer, you must rewrite codes of messages to be disabled in the project’s settings and relaunch the analysis. Sure, you hardly can specify all the “unnecessary” diagnostics, so you will have to relaunch the analysis several times. In PVS-Studio, you can easily hide and reveal messages by code without relaunching the analysis, which is much more convenient. The fifth issue is filtering of messages not only by code but by text as well. For instance, it might be useful to hide all the messages containing “printf”. The analyzer integrated into Visual Studio doesn’t have this feature while PVS-Studio has it. Finally, the sixth issue is convenience of specifying false alarms to the tool. The #pragma warning disable mechanism employed in Visual Studio lets you hide a message only relaunching the analysis. The mechanism in PVS-Studio lets you mark messages as “False Alarm” and hide them without relaunching the analysis. All the six above mentioned issues don’t relate to code analysis itself yet they are very important since usability of a tool is that very integral index showing whether it will come to estimating analysis quality at all. Let’s see what we’ve got. The static analyzer integrated into Visual Studio checks the eMule project several times quicker than PVS-Studio. But it took us 3 days to complete work with the Visual Studio’s analyzer (actually it was less but we had to switch to other tasks to have a rest). PVS-Studio took us only 4 hours to complete the work. Note. What the quantity of errors found is concerned – the both analyzers have shown almost the same results and found the same errors. Summary Comparison of two static analyzers is a very difficult and complex task. And there is no answer to the question what tool is the best IN GENERAL. You can only speak of what tool is better for a particular project and user. Tweet