Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance. Project price only 1 $
You can buy this project and download/modify it how often you want.
The Checker Framework enhances Java's type system to
make it more powerful and useful. This lets software developers
detect and prevent errors in their Java programs.
The Checker Framework includes compiler plug-ins ("checkers")
that find bugs or verify their absence. It also permits you to
write your own compiler plug-ins.
package org.checkerframework.framework.test;
import java.io.BufferedWriter;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.Set;
import javax.tools.Diagnostic;
import javax.tools.JavaCompiler;
import javax.tools.JavaFileObject;
import javax.tools.ToolProvider;
import org.checkerframework.framework.util.PluginUtil;
import org.junit.Assert;
public class TestUtilities {
public static final boolean isJSR308Compiler;
public static final boolean isAtLeast8Jvm;
static {
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
OutputStream err = new ByteArrayOutputStream();
compiler.run(null, null, err, "-version");
isJSR308Compiler = err.toString().contains("jsr308");
isAtLeast8Jvm = org.checkerframework.framework.util.PluginUtil.getJreVersion() >= 1.8d;
}
public static List findNestedJavaTestFiles(String... dirNames) {
return findRelativeNestedJavaFiles(new File("tests"), dirNames);
}
public static List findRelativeNestedJavaFiles(String parent, String... dirNames) {
return findRelativeNestedJavaFiles(new File(parent), dirNames);
}
public static List findRelativeNestedJavaFiles(File parent, String... dirNames) {
File[] dirs = new File[dirNames.length];
int i = 0;
for (String dirName : dirNames) {
dirs[i] = new File(parent, dirName);
i += 1;
}
return getJavaFilesAsArgumentList(dirs);
}
/**
* Returns a list where each item is a list of Java files, excluding any skip tests, for each
* directory given by dirName and also a list for any subdirectory.
*
* @param parent parent directory of the dirNames directories
* @param dirNames names of directories to search
* @return list where each item is a list of Java test files grouped by directory
*/
public static List> findJavaFilesPerDirectory(File parent, String... dirNames) {
List> filesPerDirectory = new ArrayList<>();
for (String dirName : dirNames) {
File dir = new File(parent, dirName);
if (dir.isDirectory()) {
filesPerDirectory.addAll(findJavaTestFilesInDirectory(dir));
}
}
return filesPerDirectory;
}
/**
* Returns a list where each item is a list of Java files, excluding any skip tests, for each
* subdirectory of {@code dir} and also a list of Java files in dir.
*
* @param dir directory in which to search for Java files
* @return a list of list of Java test files
*/
private static List> findJavaTestFilesInDirectory(File dir) {
assert dir.isDirectory();
List> fileGroupedByDirectory = new ArrayList<>();
List fileInDir = new ArrayList<>();
fileGroupedByDirectory.add(fileInDir);
for (String fileName : dir.list()) {
File file = new File(dir, fileName);
if (file.isDirectory()) {
fileGroupedByDirectory.addAll(findJavaTestFilesInDirectory(file));
} else if (isJavaTestFile(file)) {
fileInDir.add(file);
}
}
if (fileInDir.isEmpty()) {
fileGroupedByDirectory.remove(fileInDir);
}
return fileGroupedByDirectory;
}
public static List