More details can be found in the other files in this directory.
Please read and follow at least StyleGuide.md
,
Logging.md
, Test.md
, and VersionControl.md
.
There are four possibilities to retrieve the source code:
-
The main SVN repository
-
Our Git mirror
-
A Git mirror at GitLab
-
A Git mirror at GitHub
Only our SVN
repository allows committing,
all mirrors are read-only.
We recommend to use our own repository hosting,
because it avoids the risk that the synchronization to a third party
fails or causes problems.
For browsing through the code online, there are these possibilities:
- https://gitlab.com/sosy-lab/software/cpachecker/tree/trunk/
- https://github.com/sosy-lab/cpachecker/tree/trunk/
For bug tracking, we use GitLab. The issue tracker is only accessible for CPAchecker developers, please click on Request Access after signing in to GitLab or contact us.
For building the code on the command line, c.f. ../INSTALL.md
.
If you like to use Git, use the following commands
to create a working copy that allows you to transparently
commit to the SVN repository (with git svn dcommit
)
while still using Git to fetch the commits:
git clone -o mirror https://svn.sosy-lab.org/software/cpachecker.git/
cd cpachecker
git svn init --prefix=mirror/ -s https://svn.sosy-lab.org/software/cpachecker
This also works with GitHub.
-
Install a Java 8 compatible JDK (c.f.
../INSTALL.md
). -
Install Eclipse with at least version 4.6, with JDT.
-
IMPORTANT: Install the Eclipse plugin for [google-java-format]: Download the
google-java-format-eclipse-plugin-*.jar
from the most recent google-java-format release and put it into thedropins
folder of your Eclipse installation (where you extracted the Eclipse archive, not the workspace). -
Install an SVN plugin for Eclipse, e.g. SubClipse. Create new project from SVN repository (or use GIT as described above).
-
Copy the file
.factorypath.template
to.factorypath
, and (if necessary) adjust the path to the CPAchecker directory within it. -
If Eclipse complains about a missing JDK (
Unbound classpath container: 'JRE System Library [JavaSE-1.8]'
), go to Window -> Preferences -> Java -> Installed JREs, click the "Search" button and select the path where your Java 8 installation can be found (on Ubuntu/usr/lib/jvm
will do). -
In order to run CPAchecker, use one of the supplied launch configurations or create your own. To select the configuration, specification, and program files use the text box "program arguments" in the launch configuration editor. The text box "VM arguments" should contain "-ea" to enable assertion checking.
-
Recommended: If you want the sources of the libraries (like Guava or CDT), run
ant install-contrib
once in the CPAchecker directory.
We use javac, Google Error-Prone, the Eclipse Java Compiler, and SpotBugs
for findings bugs in the source, and we keep CPAchecker
free of warnings from all these tools.
You can run them all at once (plus the unit tests) with ant all-checks
.
Our BuildBot
will also execute these checks and send mails to the developer list
(cf. Mailing.md
, please apply for membership if you commit to CPAchecker).
If any of these tools or the unit tests find a problem, please fix them as soon as possible (ideally before committing).
The BuildBot also executes integration tests with thousands of CPAchecker runs
in various configurations on every commit and checks for regression.
All major projects and configurations within CPAchecker should be part of this test suite.
Please refer to Test.md
for more information.
For attaching a debugger to a CPAchecker process started on the command line (even remotely),
just run scripts/cpa.sh -debug ...
and point your debugger to TCP port 5005
of the respective machine.
-
Preparations: Update
NEWS.txt
with notes for all important changes since the last CPAchecker release (i.e., new analyses and features, important changes to configuration etc.), and ensure thatCopyright.txt
andAuthors.txt
are up-to-date. -
Define a new version by setting
version.base
inbuild.xml
to the new value. -
Build binary versions with
ant clean dist
and test them to ensure that all necessary files are contained in them. -
Update homepage:
- Add release archives to
/html
in the repository. - Put changelog of newest into
/html/NEWS-<version>.txt
. - Add links to
/html/download.php
. - Move the old download links to
/html/download-oldversions.php
. - Update section News on
/html/index.php
.
- Add release archives to
-
Add a tag in the repository with name
cpachecker-<version>
. -
Send a mail with the release announcement to cpachecker-announce and cpachecker-users mailing lists.
-
Prepare for next development cycle by setting
version.base
inbuild.xml
to a new development version (ending with-svn
).