All Downloads are FREE. Search and download functionalities are using the official Maven repository.

proguard.analysis.cpa.interfaces.ConfigurableProgramAnalysis Maven / Gradle / Ivy

Go to download

ProGuardCORE is a free library to read, analyze, modify, and write Java class files.

There is a newer version: 9.1.6
Show newest version
/*
 * ProGuardCORE -- library to process Java bytecode.
 *
 * Copyright (c) 2002-2022 Guardsquare NV
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package proguard.analysis.cpa.interfaces;

/**
 * {@link ConfigurableProgramAnalysis} consists of {@link AbstractDomain}, {@link TransferRelation},
 * {@link MergeOperator}, {@link StopOperator}, and {@link PrecisionAdjustment}.
 *
 * 

The {@link AbstractDomain} is a join-semilattice of {@link AbstractState}s. It defines the * abstraction level of the analysis. * *

The {@link TransferRelation} specifies how successor states are computed in the {@link * proguard.analysis.cpa.algorithms.CpaAlgorithm}. * *

The {@link MergeOperator} defines how (and whether) the older {@link AbstractState} should be * updated with the newly discovered {@link AbstractState}. * *

The {@link StopOperator} decides whether the successor state should be added to the {@link * ReachedSet} based on the content of the latter. * *

The {@link PrecisionAdjustment} selects the {@link Precision} for the currently processed * {@link AbstractState} considering the {@link ReachedSet} content. * *

All CPA components should be side effect free, i.e., not modify their arguments. * * @author Dmitry Ivanov */ public interface ConfigurableProgramAnalysis { /** Returns the abstract domain of this CPA. */ AbstractDomain getAbstractDomain(); /** Returns the transfer relation of this CPA. */ TransferRelation getTransferRelation(); /** Returns the merge operator of this CPA. */ MergeOperator getMergeOperator(); /** Returns the stop operator of this CPA. */ StopOperator getStopOperator(); /** Returns the precision adjustment of this CPA. */ PrecisionAdjustment getPrecisionAdjustment(); }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy