From b6278dfd7db9b2945a4373c47e3382204b6e6b26 Mon Sep 17 00:00:00 2001 From: Jules Villard Date: Fri, 6 Aug 2021 02:50:59 -0700 Subject: [PATCH] [web] update FAQ Summary: Brush up or delete old entries. Fixes https://github.com/facebook/infer/issues/1475 Reviewed By: da319 Differential Revision: D30134773 fbshipit-source-id: f46c901c1 --- website/docs/support.md | 61 +++++------------- .../versioned_docs/version-1.0.0/support.md | 61 +++++------------- .../versioned_docs/version-1.1.0/support.md | 63 +++++-------------- 3 files changed, 49 insertions(+), 136 deletions(-) diff --git a/website/docs/support.md b/website/docs/support.md index 3c3fde86b..692008a11 100644 --- a/website/docs/support.md +++ b/website/docs/support.md @@ -40,7 +40,7 @@ adapt to your project: infer run -- xcodebuild -workspace HelloWorld.xcworkspace -scheme HelloWorld ``` -### "infer [options] -- \" fails during a linking step +### `infer [options] -- ` fails during a linking step The linker will sometimes not work if files have been compiled using a different compiler, such as the one Infer uses [under the hood](/docs/next/infer-workflow) to @@ -66,11 +66,6 @@ Please run Infer with the following environment variable setting: GCC_PRECOMPILE_PREFIX_HEADER=NO ``` -### Using Infer with Maven results in no output - -Try upgrading `maven-compiler-plugin`. See also -[this GitHub issue](https://github.com/facebook/infer/issues/38). - ### Infer reports a "Too many open files" error The maximum number of files a program can simultaneously hold open is a bit low @@ -96,27 +91,19 @@ infer run -- gradle build -x lint See also [this GitHub issue](https://github.com/facebook/infer/issues/58). -### Running "infer [options] -- \" fails with some other error +### Running `infer [options] -- ` fails with some other error Please make sure that: -- \ runs successfully on its own. +- `` runs successfully on its own. - `infer` is in your `$PATH` (try `which infer`, it should show where `infer` is located) -### Running Infer fails with "ImportError: No module named xml.etree.ElementTree" - -Make sure that the `xml` Python package is installed. For instance, on OpenSuse -13.1, it is provided by the -[`python-xmldiff`](http://software.opensuse.org/download.html?project=XML&package=python-xmldiff) -package. - ### I get errors compiling Infer -Make sure the dependencies are up to date. They may change as we update Infer -itself; you may also need to recompile the facebook-clang-plugins when it -changes version. See the -[installation document](https://github.com/facebook/infer/blob/master/INSTALL.md) +Make sure the dependencies are up to date. They may change as we +update Infer itself. See the [installation +document](https://github.com/facebook/infer/blob/master/INSTALL.md) for an up-to-date list of dependencies and how to get them. ### My problem is not listed here @@ -129,9 +116,10 @@ Here are some frequently asked questions. More to come. ### How do I suppress Infer warnings on a class or method? -In Java code, you can do this by annotating your class or method with -`@SuppressLint("infer")`. Or `@SuppressWarnings("infer")` if your Infer is older -than v0.10.0. +In Java code, you can do this *for some error types* by annotating +your class or method with `@SuppressLint("")`, for example +`@SuppressLint("NULL_DEREFERENCE")`. However, not all checkers honor +this annotation. ### Is Infer supported for Windows? @@ -140,12 +128,12 @@ a Linux virtual machine if your project can be compiled on Linux. ### How does Infer compare to the Clang Static Analyzer? -On iOS there is the Clang Static analyzer. Infer does some things different, in -particular reasoning that spans across multiple files. But CSA checks for more -kinds of issues and is also more mature than Infer when it comes to iOS: we send -big respect to CSA! Infer has only got started there recently. Really, these -tools complement one another and it would even make sense to use both. Indeed, -that's what we do inside Facebook. +Infer and Clang Static Analyzer (CSA) will typically find different +kinds of issues on the same project. One thing that sets Infer apart +from other static analysis tools is its ability to reason and find +issues across multiple files. But CSA will find many kinds of issues +that Infer doesn't find: we send big respect to CSA! Really, these +tools complement one another and it makes sense to use both. ### How does Infer compare to Android linters and Findbugs? @@ -154,20 +142,3 @@ Linters, in contrast, typically implement simple syntactic checks that are local within one procedure. But they are valuable and Infer doesn't try to duplicate what they are good at. At Facebook we run both Infer and a collection of Android linters. Findbugs can be useful too; it is more akin to linters. - -### Why Infer doesn't find a particular bug? - -The answer here is for one of the checkers of Infer, the bi-abduction checker, -that finds Null Dereferences, Memory Leaks, Retain Cycles and other memory -related issues. - -The analysis performs a symbolic execution of the code, keeping data structures -that represent a symbolic heap, and trying to prove memory safety of the -program. When it fails to prove it, it can report an error, if it finds a Null -Dereference or Memory Leak, or it can find itself in an inconsistent state. In -any case, it will stop the analysis of that particular procedure because the -attempted proof doesn't make sense anymore. Another cause of the analysis not -reaching some part of the code is that we introduce timeouts in the analysis, -because otherwise it would take too long. So it could reach a timeout before -reaching the end of the method. So when Infer doesn't find a particular bug, -it's possible that it is because it couldn't reach that part of the code. diff --git a/website/versioned_docs/version-1.0.0/support.md b/website/versioned_docs/version-1.0.0/support.md index 093233f1e..e271cd063 100644 --- a/website/versioned_docs/version-1.0.0/support.md +++ b/website/versioned_docs/version-1.0.0/support.md @@ -40,7 +40,7 @@ adapt to your project: infer run -- xcodebuild -workspace HelloWorld.xcworkspace -scheme HelloWorld ``` -### "infer [options] -- \" fails during a linking step +### `infer [options] -- ` fails during a linking step The linker will sometimes not work if files have been compiled using a different compiler, such as the one Infer uses [under the hood](/docs/1.0.0/infer-workflow) to @@ -66,11 +66,6 @@ Please run Infer with the following environment variable setting: GCC_PRECOMPILE_PREFIX_HEADER=NO ``` -### Using Infer with Maven results in no output - -Try upgrading `maven-compiler-plugin`. See also -[this GitHub issue](https://github.com/facebook/infer/issues/38). - ### Infer reports a "Too many open files" error The maximum number of files a program can simultaneously hold open is a bit low @@ -96,27 +91,19 @@ infer run -- gradle build -x lint See also [this GitHub issue](https://github.com/facebook/infer/issues/58). -### Running "infer [options] -- \" fails with some other error +### Running `infer [options] -- ` fails with some other error Please make sure that: -- \ runs successfully on its own. +- `` runs successfully on its own. - `infer` is in your `$PATH` (try `which infer`, it should show where `infer` is located) -### Running Infer fails with "ImportError: No module named xml.etree.ElementTree" - -Make sure that the `xml` Python package is installed. For instance, on OpenSuse -13.1, it is provided by the -[`python-xmldiff`](http://software.opensuse.org/download.html?project=XML&package=python-xmldiff) -package. - ### I get errors compiling Infer -Make sure the dependencies are up to date. They may change as we update Infer -itself; you may also need to recompile the facebook-clang-plugins when it -changes version. See the -[installation document](https://github.com/facebook/infer/blob/master/INSTALL.md) +Make sure the dependencies are up to date. They may change as we +update Infer itself. See the [installation +document](https://github.com/facebook/infer/blob/master/INSTALL.md) for an up-to-date list of dependencies and how to get them. ### My problem is not listed here @@ -129,9 +116,10 @@ Here are some frequently asked questions. More to come. ### How do I suppress Infer warnings on a class or method? -In Java code, you can do this by annotating your class or method with -`@SuppressLint("infer")`. Or `@SuppressWarnings("infer")` if your Infer is older -than v0.10.0. +In Java code, you can do this *for some error types* by annotating +your class or method with `@SuppressLint("")`, for example +`@SuppressLint("NULL_DEREFERENCE")`. However, not all checkers honor +this annotation. ### Is Infer supported for Windows? @@ -140,12 +128,12 @@ a Linux virtual machine if your project can be compiled on Linux. ### How does Infer compare to the Clang Static Analyzer? -On iOS there is the Clang Static analyzer. Infer does some things different, in -particular reasoning that spans across multiple files. But CSA checks for more -kinds of issues and is also more mature than Infer when it comes to iOS: we send -big respect to CSA! Infer has only got started there recently. Really, these -tools complement one another and it would even make sense to use both. Indeed, -that's what we do inside Facebook. +Infer and Clang Static Analyzer (CSA) will typically find different +kinds of issues on the same project. One thing that sets Infer apart +from other static analysis tools is its ability to reason and find +issues across multiple files. But CSA will find many kinds of issues +that Infer doesn't find: we send big respect to CSA! Really, these +tools complement one another and it makes sense to use both. ### How does Infer compare to Android linters and Findbugs? @@ -154,20 +142,3 @@ Linters, in contrast, typically implement simple syntactic checks that are local within one procedure. But they are valuable and Infer doesn't try to duplicate what they are good at. At Facebook we run both Infer and a collection of Android linters. Findbugs can be useful too; it is more akin to linters. - -### Why Infer doesn't find a particular bug? - -The answer here is for one of the checkers of Infer, the bi-abduction checker, -that finds Null Dereferences, Memory Leaks, Retain Cycles and other memory -related issues. - -The analysis performs a symbolic execution of the code, keeping data structures -that represent a symbolic heap, and trying to prove memory safety of the -program. When it fails to prove it, it can report an error, if it finds a Null -Dereference or Memory Leak, or it can find itself in an inconsistent state. In -any case, it will stop the analysis of that particular procedure because the -attempted proof doesn't make sense anymore. Another cause of the analysis not -reaching some part of the code is that we introduce timeouts in the analysis, -because otherwise it would take too long. So it could reach a timeout before -reaching the end of the method. So when Infer doesn't find a particular bug, -it's possible that it is because it couldn't reach that part of the code. diff --git a/website/versioned_docs/version-1.1.0/support.md b/website/versioned_docs/version-1.1.0/support.md index 3fb30dd87..d87352967 100644 --- a/website/versioned_docs/version-1.1.0/support.md +++ b/website/versioned_docs/version-1.1.0/support.md @@ -40,10 +40,10 @@ adapt to your project: infer run -- xcodebuild -workspace HelloWorld.xcworkspace -scheme HelloWorld ``` -### "infer [options] -- \" fails during a linking step +### `infer [options] -- ` fails during a linking step The linker will sometimes not work if files have been compiled using a different -compiler, such as the one Infer uses [under the hood](/docs/infer-workflow) to +compiler, such as the one Infer uses [under the hood](/docs/1.1.0/infer-workflow) to analyze your files. A workaround consists in setting the `LD` environment variable to a dummy @@ -66,11 +66,6 @@ Please run Infer with the following environment variable setting: GCC_PRECOMPILE_PREFIX_HEADER=NO ``` -### Using Infer with Maven results in no output - -Try upgrading `maven-compiler-plugin`. See also -[this GitHub issue](https://github.com/facebook/infer/issues/38). - ### Infer reports a "Too many open files" error The maximum number of files a program can simultaneously hold open is a bit low @@ -96,27 +91,19 @@ infer run -- gradle build -x lint See also [this GitHub issue](https://github.com/facebook/infer/issues/58). -### Running "infer [options] -- \" fails with some other error +### Running `infer [options] -- ` fails with some other error Please make sure that: -- \ runs successfully on its own. +- `` runs successfully on its own. - `infer` is in your `$PATH` (try `which infer`, it should show where `infer` is located) -### Running Infer fails with "ImportError: No module named xml.etree.ElementTree" - -Make sure that the `xml` Python package is installed. For instance, on OpenSuse -13.1, it is provided by the -[`python-xmldiff`](http://software.opensuse.org/download.html?project=XML&package=python-xmldiff) -package. - ### I get errors compiling Infer -Make sure the dependencies are up to date. They may change as we update Infer -itself; you may also need to recompile the facebook-clang-plugins when it -changes version. See the -[installation document](https://github.com/facebook/infer/blob/master/INSTALL.md) +Make sure the dependencies are up to date. They may change as we +update Infer itself. See the [installation +document](https://github.com/facebook/infer/blob/master/INSTALL.md) for an up-to-date list of dependencies and how to get them. ### My problem is not listed here @@ -129,9 +116,10 @@ Here are some frequently asked questions. More to come. ### How do I suppress Infer warnings on a class or method? -In Java code, you can do this by annotating your class or method with -`@SuppressLint("infer")`. Or `@SuppressWarnings("infer")` if your Infer is older -than v0.10.0. +In Java code, you can do this *for some error types* by annotating +your class or method with `@SuppressLint("")`, for example +`@SuppressLint("NULL_DEREFERENCE")`. However, not all checkers honor +this annotation. ### Is Infer supported for Windows? @@ -140,12 +128,12 @@ a Linux virtual machine if your project can be compiled on Linux. ### How does Infer compare to the Clang Static Analyzer? -On iOS there is the Clang Static analyzer. Infer does some things different, in -particular reasoning that spans across multiple files. But CSA checks for more -kinds of issues and is also more mature than Infer when it comes to iOS: we send -big respect to CSA! Infer has only got started there recently. Really, these -tools complement one another and it would even make sense to use both. Indeed, -that's what we do inside Facebook. +Infer and Clang Static Analyzer (CSA) will typically find different +kinds of issues on the same project. One thing that sets Infer apart +from other static analysis tools is its ability to reason and find +issues across multiple files. But CSA will find many kinds of issues +that Infer doesn't find: we send big respect to CSA! Really, these +tools complement one another and it makes sense to use both. ### How does Infer compare to Android linters and Findbugs? @@ -154,20 +142,3 @@ Linters, in contrast, typically implement simple syntactic checks that are local within one procedure. But they are valuable and Infer doesn't try to duplicate what they are good at. At Facebook we run both Infer and a collection of Android linters. Findbugs can be useful too; it is more akin to linters. - -### Why Infer doesn't find a particular bug? - -The answer here is for one of the checkers of Infer, the bi-abduction checker, -that finds Null Dereferences, Memory Leaks, Retain Cycles and other memory -related issues. - -The analysis performs a symbolic execution of the code, keeping data structures -that represent a symbolic heap, and trying to prove memory safety of the -program. When it fails to prove it, it can report an error, if it finds a Null -Dereference or Memory Leak, or it can find itself in an inconsistent state. In -any case, it will stop the analysis of that particular procedure because the -attempted proof doesn't make sense anymore. Another cause of the analysis not -reaching some part of the code is that we introduce timeouts in the analysis, -because otherwise it would take too long. So it could reach a timeout before -reaching the end of the method. So when Infer doesn't find a particular bug, -it's possible that it is because it couldn't reach that part of the code.