. The linked blog post is beginning to get old (almost 2 years old now.) and we are doing way more than what FindBugs is doing now. (and if you think I am wrong I am more than happy to hear about it). To clarify: every rule starting with squid:SXXX comes from the SonarJava analyzer.
Continuous Integration in Pipeline as Code Environment with Jenkins, JaCoCo, Nexus and SonarQube. That's why security-related rules cast a wider net than you may be used to seeing. CWE was created to serve as a common language for describing software.
All the code of SonarJava is on and the checks implementation are available for you to check them. We claim to be better than those tools but we are happy to not be taken for granted and get challenged. And we are definitely not done on how we can improve SonarJava (Cross files analysis for instance is most probably gonna be a hot topic for the upcoming year for us). I'd like to chime in on this.
In our codebase we make heavy use of the FindBugs @DefaultAnnotation(NonNull.class) annotation along with @CheckForNull (available in the edu.umd.cs.findbugs.annotations and/or javax.annotation package). FindBugs uses these annotations in its static code analysis to warn about potential NPE's. This works pretty well.
It prevents.a lot. of accidental NPE's from happening. You're saying SQ has gone beyond FindBugs in terms of capabilities but I haven't been able to find this feature yet. It would be great if SonarQube/SonarLint was able to parse these annotations and provide similair functionality. Nicolas Peru 5/1/2017, 23:33 น.
List and comparison of the top best Static Code Analysis Tools: Can we ever imagine sitting back and manually reading each line of codes to find flaws? To ease our work, several types of static analysis tools are available in the market which helps to analyze the code during the development and detect fatal defects early in the SDLC phase. Such defects can be eliminated before the code is actually pushed for functional QA. A defect found later are always expensive to fix.
Read this to get an idea of what can help you the most based on your needs –. What You Will Learn:. Best Static Code Analysis Tools Comparison Here is the list of the top 10 Static Code Analysis Tools for Java, C, C# and Python: #1) Veracode #2) RIPS Technologies #3) PVS-Studio #4) Kiuwan #5) Kritika #6) Gamma #7) Code Compare #8) reshift #9) HP Fortify SCA #10) Parasoft Here is the detailed review of each. #1) Veracode Veracode is a static analysis tool which is built on the SaaS model. This tool is mainly used to analyze the code from a Security point of view. This tool uses binary code/bytecode and hence ensures 100% test coverage.
This tool proves to be a good choice if you want to write secure code. Website Link:. #2) RIPS Technologies RIPS is the only code analysis solution that performs language-specific security analysis. It detects the most complex security vulnerabilities deeply nested within the source code that no other tools are able to find. It supports major frameworks, SDLC integration, relevant industry standards and can be deployed as a self-hosted software or used as software-as-a-service. With its high accuracy and no false positive noise, RIPS is the ideal choice for analyzing Java and PHP applications.
Website link. #3) PVS-Studio PVS-Studio is a tool for detecting bugs and security weaknesses in the source code of programs, written in C, C, C# and Java.
It works in Windows, Linux, and macOS environment. It is possible to integrate it into Visual Studio and other widespread IDE. The results of the analysis can be imported into SonarQube.
Website Link:. #4) Kiuwan Kiuwan is a SAST and SCA platform with the largest technology coverage and integrations in the market. With a DevSecOps approach, Kiuwan achieves outstanding benchmark scores (Owasp, NIST, CWE, etc) and offers a wealth of features that go beyond static analysis, catering to every stakeholder in the SDLC. Website Link:. #5) Kritika Kritika.IO analyzes your code and provides useful information on your code style, code smells, complexity, duplications. It also analyzes open source dependencies licenses and looks for known vulnerabilities. Kritika.IO integrates with GitHub, BitBucket and GitLab.
It uses progressive pricing that depends solely on the amount of code analyzed. Analyzing open source projects is completely free and feature complete. Among unique languages, it supports Perl and Tcl. Visit official website:.
#6) Gamma Gamma is an intelligent software analytics platform, developed by Acellere. It supports developers and teams in building higher quality software in less time, by speeding up code reviews. It automatically prioritizes hotspots in the code and provides clear visualizations. With its multi-vector diagnostic technology, it analyses software from multiple lenses, including software design, and enables companies to manage and improve their software quality transparently. Visit Website:.
#7) Code Compare Code Compare – is a file and folder comparison and merge tool. Over 70,000 users actively use Code Compare while resolving merge conflicts and deploying source code changes.
Code Compare is a free compare tool designed to compare and merge differing files and folders. Code Compare integrates with all popular source control systems: TFS, SVN, Git, Mercurial, and Perforce. Code Compare is shipped both as a standalone file diff tool and a Visual Studio extension.
Key features:. Text Comparison and Merging. Semantic Source Code Comparison. Folder Comparison. Visual Studio Integration. Version Control Integration and more Website Link:. #8) reshift Reshift is a SaaS-based software platform that helps software development teams identify more vulnerabilities faster in their own code before deploying to production.
Reducing the cost and time of finding and fixing vulnerabilities, identifying the potential risk of data breaches, and helping software companies achieve compliance and regulatory requirements. Visit the official website:. #9) HP Fortify SCA Fortify, a tool from HP which lets a developer build an error-free and secure code. This tool can be used by both development and security teams by working together to find and fix security-related issues. While scanning the code, it ranks the issues found and ensures the most critical ones are fixed first. Website Link:.
#10) Parasoft Parasoft, no doubt one of the best tools for Static Analysis Testing. This is slightly different when compared to other static analysis tools because of its ability to support various types of static analysis techniques like Pattern Based, Flow-Based, Third Party Analysis, and Metrics and Multivariate analysis. Another good thing about the tool is beside identifying defects it allows provides a feature which prevents defects. Website Link:.
#11) Coverity Coverity Scan is an open source cloud-based tool. It works for projects written using C, C, Java C# or JavaScript. This tool provides a very detailed and clear description of the issues which helps in faster resolution. A good choice if you are looking for an open source tool. Website Link:. #12) CAST An automated tool which can be used to analyze more than 50+ languages works excellently regardless of the size of the project. In addition, it provides a Dashboard to users which help in measuring quality and productivity.
Website Link:. #13) CodeSonar A Static analysis tool by Grammatech not only lets a user find programming error, but it also helps in finding out domain related coding errors. It also allows customizing checkpoints and also built in checks can be configured as per the requirement.
Overall a great tool to detect security vulnerabilities and its ability to do a deep static analysis makes this stand out from rest of the other static analysis tools available in the market. Website Link:. #14) Understand Just like its name, this tool lets user UNDERSTAND code by analyzing, measuring, visualizing and maintaining. This allows quick analysis of massive codes. This is one tool which is mainly used by aerospace and automakers industry.
Supports major languages like C/C, ADA, COBOL, FORTRAN, PASCAL, Python and other web languages. Website Link:.
#15) Clang Static Analyzer This is an open source tool which can be used to analyze a C, C code. It uses the clang library, hence forming a reusable component and can be used by multiple clients. Website Link:.
#16) CppDepend A very easy to use the tool when compared to other static analysis tools. As the name suggests, this tool is used to analyze C/C codes.
Supports different code quality metrics, provides facility to monitor trends, has an add-in to integrate with Visual Studio, allows writing custom queries and comes with a very good diagnostic facility. Website Link: #17) Klocwork Apart from finding semantics and syntax error, this tool also lets user detect vulnerabilities in the code. This tool is well integrated with many common IDE’s like Eclipse, Visual Studio, and Intellij IDEA. This can run in parallel to code creation, it does a line by line check and provides a feature for addressing the defects immediately.
Website Link: #18) Cppcheck Another free static analysis tool for C/C. The good thing about this tool is its integration with several other development tools like Eclipse, Jenkins, CLion, Visual Studio and many more. Its installer can be found at sourceforge.net. Website Link: #19) Helix QAC Helix QAC is an excellent static analysis testing tool for C and C code from Perforce (formerly PRQA).
The tool comes with a single installer and supports platforms like Windows 7, Linex Rhel 5 and Solaris 10. This gives very clear diagnostics which helps in identifying root cause and quick defect fixes. Website Link: #20) Goanna A security static analysis tool for C/C and allows integration with Microsoft Visual Studio, Eclipse, Texas Instruments Code Composer and many more IDE’s.This can be run like a compiler and hence allows analyzing file level details in addition to whole projects. Also, has excellent error reporting feature. Website Link: #21) Polyspace Polyspace bug finder helps in finding defects for C/C; this is integrated with Eclipse and also is compliant with coding rule standards like MISRA C, MISRA C, and JSF. Website Link: #22) Sourcemeter A tool which helps in analyzing C/C, Java, C#, RPG and Python codes. Another good thing about this tool is it allows integration with free static checker tools like cppcheck, PMD, FindBugs.
Basic Version of this tool is free but it comes with fewer features. Based on the need, you can decide whether the free version satisfies the requirement or not.
Website Link: #23) ConQAT An excellent tool which can be used for clone detection supports multiple languages, allows integration with other static analysis tools, provides dashboard which shows the details on the issues found and other quality metrics. Website Link: #23) JArchitect An excellent tool which makes analyzing Java code simple and easier supports for Code Query over LINQ, provides a number of code metrics, allows code comparison between builds and comes with a very good customizable reporting feature. Website Link: #24) OCLint A standalone tool used for analyzing C/C and Objective- C programs, this supports Linux and Mac OX platforms. It does everything a static analysis tool is expected to do like finding bugs, unused piece of code, redundant code, and in addition to all that, it comes with a very customizable configuration which really helps user customize as per their needs.
![Sonarqube Sonarqube](/uploads/1/2/5/4/125465495/602814565.jpg)
Website Link: #25) Watchtower This tool is mainly used by a security specialist who wants to perform manual code reviews, works best on the local system, but can also scan remote websites. Maintains an extensive configuration file and hence different reporting options can be configured. Creation of alternate config files helps in the execution of multiple projects simultaneously. Website Link: #26) OWASP Code Crawler A Static analysis tool for.NET and Java/J2EE code Website Link: #27) OWASP Orizon A tool which can be used by security specialist to perform code reviews from a security point of view. It also provides a set of API’s which can be integrated with security tools to provide code review services. Website Link: #28) PC-Lint and Flexe Lint Static Analysis tools which are used to test C/C source code.
PC Lint works on windows OS whereas Flexe Lint is designed to work on non-windows OS, and runs on systems that support a C compiler including UNIX. Website Link: #29) IBM Rational Software Analyzer IBM Rational provides the user with different types of tool, one such tool is the software analyzer which can be used for static analysis of code. This tool is designed on an extensible framework and integrates well with other Rational products. Website Link: Other Tools #30) Eclair This static analysis tool is very flexible and easily configurable tool and supports almost all platforms like Windows, UNIX, Linus, Mac OS X.This tool comes with an ability to verify conformance against a number of coding standard as well as other coding standards which include proprietary and project-based standards. Website Link: #31) SonarQube It is an open source web-based tool, extending its coverage to more than 20 languages, and also allows a number of plugins.
Website Link: #32) Rosecheckers If you are looking for a tool to ensure the developed code is compliant with CERT coding rules, you can opt for Rosecheckers. It is available for free is SourceForge.
This tool does check for C/C codes and sometimes finds the problem which other static analysis tools cannot find, but this cannot be considered a full-grown standalone tool due to its inability to fully test since this is only a prototype. Website Link: #33) Frama-c An open source tool which lets analysis of C, comes with a very flexible framework. Website Link: #34) Semmle Open source security analysis tool for Java and C codes. Website Link: #35) PMD PMD is an open source code analyzer for C/C, Java, JavaScript. This is a simple tool and can be used to find common flaws. It also detects duplicate code in java. Website Link: #36) FindBugs Free tool to find bugs in Java code.
It supports any version of Java but requires JRE (or JDK) 1.7.0 or later to run. Website Link: #37) IBM Appscan Source This is used to identify vulnerabilities early in the SDLC phase. Also, supports mobile scanning. Website Link: #38) Flawfinder This is an open source tool mainly used to find security vulnerabilities in C/C program. It can be downloaded, installed and run on systems like UNIX. Website Link: #39) Splint An open source static and security analysis tool for C programs.
![Linux Linux](/uploads/1/2/5/4/125465495/368178513.jpg)
Comes with the very basic feature but if additional annotations are added, this can perform like any other standard tools. Website Link: #40) Hfcca Header Free Cyclomatic Complexity Analyser is a tool which performs analysis and doesn’t care about the C/C headers or Java imports. Simple to use and doesn’t require installation. This can be used for C/C, Java and Objective C. Website Link: #41) Cloc This utility written in Perl lets the user find blank lines, comment lines, and physical lines and supports multiple languages. Overall an easy to tool with good features like providing outputs in multiple formats runs on multiple systems and comes with an easy installation pack.
Website Link: #42) SLOCCount Open source tool which lets user count physical source lines of code in multiple languages and on multiple platforms. Website Link: #43) JSHint This is a free tool which supports static analysis of JavaScript. Website Link: Conclusion Above is a summary of some of the selective best Static Code Analysis Tools. Since covering all the available tools in one article isn’t possible, now I am letting the ball go in your court, feel free to bring up any tool you think is a good one for Static Analysis. = to add your listing here.